1011
« kdy: 06. 04. 2010, 21:45:59 »
Osobně jsem pro používání "umělejch" klíčů. Z jednoho prostýho důvodu - spousta frameworků spoléhá na existenci id, nebo i některý vlastní fce se Ti zjednodušej.
Navíc to je i rozšiřitelnější, např. nebudeš muset příliš měnit aplikaci, pokud budeš potřebovat m:n vazbu parametrizovat (a dvojice a_id, b_id nebude muset bejt už
unikátní).
Navíc existence umělýho klíče ničemu nevadí (výkon neřešim, ten minimální overhead je fakt jedni, pokud se teda nejedná oi twiter nebo podobný monstrum).
PS: A cpát do každý tabulky umělý id, i když je záznam jednoznačně identifikovaný svými daty je naopak velmi rozumné. Je proto řada důvodů, např:
- časem může dojít k tomu, že používanej "významovej identifikátor" není potřeba (a bude se odstraňovat - může být časem případ např. rodného čísla)
- že tento identifikátor je třeba u záznamu měnit (např. username uživatelů - kvůli změně username uživatele se hned nemusí měnit záznamy v půlce db),
- časem se může změnit význam daného identifikátoru a ten tím ztratí jedinečnost
- u reálnejch významovejch identifikátorů může dojít i k duplicitě tam, kde by být neměla (např. rodné číslo)
- bude třeba ukládat do tabulky i "nedokončené záznamy" s nevyplněným identifikátorem
apod....
Naopak pro nedávání jednoznačného identifikátoru je pokud vím jen jeden důvod, a tím je o fous vyšší rychlost databáze a menší spotřeba místa, což je imho v 99.99% irelevantní - jinak ten sloupec naprosto ničemu nevadí.