NetHq Blog


A rossz legjobb kritikája az, ha megmutatjuk, hogyan kell jobban csinálni.

Mysql azonosító használata - ID

Nightvis, 2012.06.14 23:49
Egy táblában fontos, hogy minden sort egyedileg meg tudjunk különböztetni, és tudjunk rá hivatkozni is. Első pillanatra furcsállhatjuk, hogy minek kell emiatt felvenni még egy oszlopot, hiszen ott van a név és majd amikor megadjuk a feltételt akkor a névvel szűkítjük, hogy mire vonatkozzon a módosítás, törlés stb...

Miért fontos az, hogy minden táblában legyen egy azonosító?

Egy táblában fontos, hogy minden sort egyedileg meg tudjunk különböztetni, és tudjunk rá hivatkozni is. Első pillanatra furcsállhatjuk, hogy minek kell emiatt felvenni még egy oszlopot, hiszen ott van a név és majd amikor megadjuk a feltételt akkor a névvel szűkítjük, hogy mire vonatkozzon a módosítás, törlés stb...

Ez jól is fog működni mindaddig amíg nem veszünk fel két ugyanolyan nevű embert (Tóth, Szabó, Kiss vagy éppen Nagy vezetéknevű emberből sok van és az is elég gyakori, hogy a keresztnevük is ugyan az). Persze mondhatnánk, hogy felvesszük hozzá a születési dátumát ekkor viszont már a feltétel bonyolult lesz : where nev = 'Kiss János' and szuldatum='1901.12.24' . Ugyanakkor még ez sem garancia, hogy nem lesznek olyan emberek akiknek ugyanazok az adataik. Ebből látható, hogy szükséges minden sorhoz hozzárendelni egy egyedi azonosítót, ami csak ahhoz az egy emberhez tartozik. Ezt az azonosítót az informatikába ID-nak mondjuk (az ID az angol identifier szóból származik ami azonosítót jelent). Így minden táblánkban szerepelni fog egy ID oszlop. 

Felmerülhet a kérdés, mi van akkor, ha két ugyanolyan ID-t adunk meg. Ekkor gondunk lenne, mert egy törlés parancs kiadásakor mind a két rekordot törölnénk. Ennek elkerülésére, amikor létrehozzunk a táblát jelezzük az adatbázis-kezelő rendszernek, hogy ennek az oszlopnak mindig egyedinek kell lennie. Ezt a primary key(oszlopnev) paranccsal tehetjük meg. A primary key elsődleges kulcsot jelent. Az adatbázisoknál kulcsnak mondjuk azokat az oszlopokat, amik egyértelműen meghatározzák, hogy a táblában melyik sorról van szó. Ekkor, ha két ugyanolyan elemet szeretnénk felvinni a táblában, akkor a másodikat nem fogja engedélyezni, és hibaüzenetet kapunk.

Honnan tudjuk, hogy mi legyen a következő kulcsunk? Erre is van egy megoldás az adatbázis-kezelő rendszerben. Minden sorhoz, hozzárendelünk egy számot, és folyamatosan növeljük a szám értékét. Tehát amikor a következő sort visszük fel akkor az előzőhöz képest eggyel nagyobb számot adunk meg.

Ezt el is végezheti az adatbázis-kezelő rendszer helyettünk, ha megadjuk, hogy automatikusan növelje ezt a számot. Erre a funkcióra szolgál az auto_increment parancs. Például a create parancsnál a következőképpen is megadhatjuk: `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY. Az ID az oszlopnév, a not null logikusan azt jelenti, hogy nem lehet üres (hiszen mindegyiknek különbözőnek kell lennie), és végül, hogy automatikusan növekedjen az elsődleges kulcsunk.

Előfordulhat olyan is, hogy szeretnék, ha az adatbázis-kezelő figyelné, hogy az adott oszlopba ne kerüljön két ugyanolyan érték, de nem ez a kulcsunk (pl.: két ugyanolyan tajkártya szám ne legyen a táblába). Ezt az unique(oszlopnev) paranccsal adhatom meg (az angol unique szó jelentése egyedi).

Tartalom közösségi megosztása: