Autor Zpráva
xlifer
Profil
Jaký je rozdíl v tabulce (MySQL) mezi PRIMARY KEY a UNIQUE KEY ?

Když mám tabulku ve které mám definován sloupec jako výchozí ID záznamu (primary key) a další sloupec jako pomocný (unique key) s auto_increment. Je taková kombinace ok?

ID záznamu (primary_key) mám pro kód zboží
Auto_increment pro pomocné číslování jako sekundární číselné ID, např. do URL, apod.

Vše vypadá, že mi funguje ok, ale hlavní význam/rozdíl použítí nebo jejích kombinace mezi primary a unique mi uniká...
Sir Tom
Profil
xlifer:
Pěkně to je vysvětleno zde: http://www.youtube.com/watch?v=8iIvyNPwruU
nebo: http://www.youtube.com/watch?v=7_9Jb9Fi9nI
xlifer
Profil
Sir Tom:

Děkuji za tip. Nicméně možná je to tam pěkně vysvětleno, ale vzhledem k tomu, že neumím anglicky tak dobře, abych z toho videa něco měl, tak to stejně nechápu... Kéž by bylo něco podobného v češtině.


Našel jsem zde na fóru nějaké starší vlákno, kde je stejný dotaz, ale taky to tam nění zcela jistě popsáno.

Hlavně poslední výklad v příspěvku.

Protože ja např. potřebuji samozřejmě hledat i v unique key poli a tak si ho můžu přidat do INDEXU, takže tento výklad nevím jestli je správně pochopen/vyložen.
Tori
Profil
např.:
http://www.linuxsoft.cz/article.php?id_article=912
http://www.linuxsoft.cz/article.php?id_article=914
xlifer
Profil
Tori:

Hezké články, Linuxsoft.cz znám a rád tam čerpám info, ale ani zde konkreténě není popsaný zasádní rozdíl v Primary a Unique key :-) Stále kroužíme kolem, ale jasno není.

Mimo jiné tabulka nemusí mít žádný Primary key a bude dobře fungovat i jen s Unique key, na takové pole je možné stejně nalepit INDEX :-) Takže mě lajcky připadá, že UNIQUE je pouze synonymem PRIMARY.
suvel
Profil
http://www.linuxsoft.cz/article.php?id_article=912:
Jedinečné indexy (UNIQUE) - indexy, které kromě své klasické funkce hlídají i to, aby se žádná z hodnot v indexovaném sloupci neopakovala. Nebo, aby se v případě vícesloupcového indexu neopakovala kombinace hodnot v indexovaných sloupcích. Na jedné tabulce smí být definováno více jedinečných indexů.
Primární klíč (PRIMARY) je jedinečný index na poli, v němž je každá hodnota jedinečná a žádná hodnota není neznámá (NULL). Každá tabulka smí mít nejvýše jeden primární klíč.
Tori
Profil
xlifer:
To je postupné upřesňování/omezování:
- obyčejný index (hodnoty i nulové, opakování povoleno, počet indexů neomezený)
- unikátní index (= obyč.index, který nesmí obsahovat duplicitní hodnoty)
- primární index (= unikátní, který nesmí obsahovat nulové hodnoty a smí být max. jeden na tabulku)


UNIQUE vs. PRIMARY je spíš otázka návrhu DB. Uživatele můžu identifikovat jak podle jedinečného nicku, tak podle e-mailu a číselného ID - to jsou kandidátní klíče. Jako PRIMARY zvolím ten sloupec, který budu v ostatních tabulkách používat jako cizí klíč. (Přičemž číselné ID např. nemusím použít vůbec.) UNIQUE můžu využít i jen na zajištění jedinečných hodnot (viz http://php.vrana.cz/vyuziti-unikatnich-klicu-v-databazi.php), aniž bych ten sloupeček chtěla někdy používat jako PRIMARY.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: