Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
#1 · Zasláno: 16. 3. 2013, 16:40:06
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 |
#2 · Zasláno: 16. 3. 2013, 17:04:53
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 |
#3 · Zasláno: 16. 3. 2013, 17:31:09 · Upravil/a: xlifer
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 |
#4 · Zasláno: 16. 3. 2013, 17:41:04
|
||
xlifer Profil |
#5 · Zasláno: 16. 3. 2013, 18:39:36
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 |
#6 · Zasláno: 16. 3. 2013, 19:07:53
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 |
#7 · Zasláno: 16. 3. 2013, 19:17:08 · Upravil/a: Tori
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. |
||
Časová prodleva: 11 let
|
0