sql >> Databáze >  >> RDS >> Mysql

Primární klíče MySQL

Vysvětluje, co je primární klíč a proč je nedílnou součástí relačních databází.

Když jsme vytvořili naše dvě tabulky, vytvořili jsme také primární klíč pro každou tabulku.

Když rozbalíte uzly v levém SCHÉMA můžete vidět primární klíče (a cizí klíče – k těm se dostaneme dále) uvedené pod každou tabulkou:

Jak ukazuje doprovodný snímek obrazovky, Indexy uzly obsahují libovolné indexy (v našem případě cizí klíče a/nebo primární klíče). Tyto primární klíče a cizí klíče existují pouze proto, že jsme je specifikovali v našem kódu, když jsme vytvářeli tabulky.

Konkrétně jsme použili PRIMARY KEY (FruitId) vytvořit FruitId primární klíč pro Ovoce tabulky a použili jsme PRIMARY KEY (UnitId) vytvořit UnitId primární klíč pro Jednotky tabulka.

Co je primární klíč?

primární klíč (označovaný také jako jedinečný klíč ) je sloupec, který byl přidělen jako pole jedinečného identifikátoru. Hodnota ve sloupci primárního klíče je pro každý záznam jedinečná. Jinými slovy, žádné dva záznamy nemohou v tomto sloupci sdílet stejnou hodnotu.

Klasickým příkladem pole primárního klíče je pole „ID“. Většina tabulek bude mít pole ID, které poskytuje jedinečný identifikátor pro každý záznam. Příklady mohou zahrnovat „CustomerId“, „ProductId“, „FruitId“ atd. Bez takovýchto polí ID by byla funkce vaší databáze vážně omezena. Pokud byste měli dva nebo více zákazníků se stejným jménem, ​​jak byste byli schopni najít jejich záznam? I když je pravda, že na každém záznamu můžete najít něco jedinečného, ​​je mnohem čistší a jednodušší mít sloupec, jehož primárním účelem je poskytnout každému záznamu jedinečnou identifikaci.

Primární může být buď normální hodnota, která je zaručeně jedinečná (číslo ISBN pro knihy, kód produktu atd.), nebo to může být hodnota vygenerovaná aplikací nebo DBMS, která má být specificky jedinečná (např. identifikátor nebo automaticky se zvyšující celé číslo).

Výběr primárního klíče

Při výběru sloupce pro primární klíč buďte opatrní. Musíte se ujistit, že každý záznam bude mít jednu a že neexistuje možnost, že dva záznamy budou sdílet stejnou hodnotu nebo že jeden záznam bude mít více než jednu hodnotu.

Například použití e-mailové adresy uživatele může v některých případech fungovat, ale není to příliš pevný základ pro jedinečný identifikátor. Uživatelé mohou změnit svou e-mailovou adresu. Uživatelé mohou sdílet e-mailové adresy. Někteří uživatelé nemusí mít e-mailovou adresu. Samozřejmě můžete svůj systém napsat tak, abyste uživatelům zabránili změnit jejich e-mailovou adresu nebo ji sdílet, ale váš systém by nebyl příliš flexibilní a uživatelsky přívětivý.

Můžete požadovat, aby všichni uživatelé měli jedinečné uživatelské jméno. To by mohlo fungovat. Je však potřeba si všechny možnosti dobře promyslet. Pokud existuje možnost, že jej uživatelé mohou změnit nebo sdílet (minulý, současný nebo budoucí), nepoužívejte jej jako primární klíč. Co když "TechGuy12" deaktivuje svůj účet? Znamená to, že jiný uživatel může nyní používat „TechGuy12“? Bude to problém pro vaši aplikaci nebo nějaké zprávy, které potřebujete vygenerovat?

Pokud máte jakékoli pochybnosti o „jedinečnosti“ pole primárního klíče, použijte automaticky generované číslo, které se zvyšuje s každým vytvořeným záznamem.


  1. Sledování automatických aktualizací statistik

  2. Salesforce SOQL od Crystal Reports

  3. Co je rychlejší, SELECT DISTINCT nebo GROUP BY v MySQL?

  4. MySQL :transakce v rámci uložené procedury