Gints Plivna Posted March 2, 2009 Report Share Posted March 2, 2009 Tātad, ja ir tiešām dati kā tabulā, kad vienai spēlei id ir nepāra skaitlis, bet otrai pāra, tad tas ir vienkārši: mysql> create table a (id integer, -> `kas_spele` int(11) NOT NULL default '0', -> `pret_ko_spele` int(11) NOT NULL default '0'); Query OK, 0 rows affected (0.11 sec) mysql> create table b (id integer, -> `kas_spele` int(11) NOT NULL default '0', -> `pret_ko_spele` int(11) NOT NULL default '0'); Query OK, 0 rows affected (0.11 sec) mysql> insert into a values (1, 2, 1); Query OK, 1 row affected (0.05 sec) mysql> insert into a values (2, 1, 2); Query OK, 1 row affected (0.05 sec) mysql> insert into b values (1, 5, 4); Query OK, 1 row affected (0.05 sec) mysql> insert into b values (2, 4, 5); Query OK, 1 row affected (0.06 sec) mysql> insert into a values (3, 2, 3); Query OK, 1 row affected (0.05 sec) mysql> insert into a values (4, 3, 2); Query OK, 1 row affected (0.05 sec) mysql> SELECT a.*, 1 tag FROM a -> WHERE mod(id, 2) = 0 -> UNION ALL -> SELECT b.*, 2 tag FROM b -> WHERE mod(id, 2) = 0; +------+-----------+---------------+-----+ | id | kas_spele | pret_ko_spele | tag | +------+-----------+---------------+-----+ | 2 | 1 | 2 | 1 | | 4 | 3 | 2 | 1 | | 2 | 4 | 5 | 2 | +------+-----------+---------------+-----+ 3 rows in set (0.00 sec) tag var raut nost, tas vienkārši rāda, no kurienes nāk dati. BET problēma iestāsies, kad būs tādu vai citādu iemeslu dēļ kāda nobīde un pēkšņi viens ieraksts būs ar id = 171 un otrs pāra ieraksts ar id = 173. OK es pieņemu, ka varbūtība ir maza, bet nu uz id pāra nepāra es īpaši nepaļautos. Problēma faktiski ir tabulu dizainā, ka nevar viennozīmīgi pilnīgi droši identificēt otru pāri. Es to pieliktu kā vēl vienu kolonu - pāra identifikators, kuram var izmantot kaut vai pirmā ieraksta id, ko droši iegūst pēc tam, kad pirmais ieraksts ir pievienots. uzskatāmāk: Spēles id | pāra id 1 | 1 2 | 1 3 | 3 4 | 3 167 | 167 183 | 167 šajā gadījumā es gan no 167 spēles varu viennozīmīgi atrast otru pāri meklējot tādu, kuram pāra id = 167 un spēles id <> 167, kā arī no otras puses, ja man ir 183 spēle, tad es meklēju tādu, kuram pāra id = 167 un spēle id <> 183. Šai gadījumā tad arī varetu rakstīt, ka atlasa visas spēles, kam id un pāra id sakrīt. Bet nu kamēr neatsinhronizējas id nepāris/pāris tikmēr jau laikam OK, pareizāk izsakoties pat kamēr pa vidu spēles pārim neielec kāds cits ieraksts vai nerodas kāda neizmantota id vērtība. Gints Plivna http://datubazes.wordpress.com Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 3, 2009 Report Share Posted March 3, 2009 Bet nu kamēr neatsinhronizējas id nepāris/pāris tikmēr jau laikam OK, pareizāk izsakoties pat kamēr pa vidu spēles pārim neielec kāds cits ieraksts vai nerodas kāda neizmantota id vērtība. Un tas noziimee ka vinjam ir nepareiza DB logjika, jo vienmer var sanakt kaadu ierakstu izdzeest, teiksim trivials gadijums : tiek nepareizi ievadiiti dati (nodubleti) un ierakstu nakas dzeest ... // a nodublet ierakstu ir vieglak par vieglu, ja speles buus daudz, tad sadu kljudu pielaist ir vieglak par vieglu --> rezultaataa ierakstu naksies dzeest (kas pats par sevi nebuutu nekas tragisks, ja vien DB logjika ir pareiza ... --- Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.