Výmena PRIMÁRNY KĽÚČ. CUDZÍ KĽÚČ Primárny kľúč

Primárny kľúč je pole v tabuľke, ktoré jednoznačne identifikuje každý riadok/záznam v databázovej tabuľke. Primárne kľúče vinnej matky majú jedinečný význam. Prvý kľúč nemôže mať žiadny význam.

Tabuľka môže mať iba jeden primárny kľúč, ktorý môže byť vytvorený z jedného alebo viacerých polí. Ak sa ako primárny kľúč vyberie viacero polí, nazývajú sa kľúč skladu.

Keďže tabuľka má primárny kľúč, bez ohľadu na hodnotu ľubovoľného poľa (polí), môžete mať dva záznamy, ale nie rovnakú hodnotu polí.

Poznámka- Môžete vikoristuvat toto pochopenie a vytvoriť tabuľku databázy.

Vytvorenie primárneho kľúča

Syntax na priradenie atribútu ID ako primárneho kľúča v tabuľke Zákazníci.

VYTVORIŤ TABUĽKU ZÁKAZNÍCI(ID INT NIE JE NULL, MENO VARCHAR (20) NIE JE NULL, VEK INT NIE JE NULL, ZNAK ADRESY (25) , DESETINNÝ MZD (18, 2), PRIMÁRNY KĽÚČ (ID));

Ak chcete vytvoriť výmenu primárneho kľúča v stĺpci ID, ak tabuľka CUSTOMERS už existuje, použite tento krok: SQL syntax:

ZÁKAZNÍCI ALTER TABLE PRIDAJÚ PRIMÁRNY KĽÚČ (ID);

Poznámka

Ak na pridanie primárneho kľúča použijete príkaz ALTER TABLE, kombinácia primárneho kľúča (kľúčov) podlieha rovnakým pravidlám ako hodnota, ktorá neobsahuje NULL (keďže tabuľka bola vytvorená ako prvá).

Ak chcete priradiť primárny kľúč viacerým položkám, použite nižšie uvedenú syntax SQL:

VYTVORIŤ TABUĽKU ZÁKAZNÍCI(ID INT NIE JE NULL, MENO VARCHAR (20) NIE JE NULL, VEK INT NIE JE NULL, ZNAK ADRESY (25) , DESETINNÝ MZD (18, 2), PRIMÁRNY KĽÚČ (ID, MENO));

Ak chcete vytvoriť vymedzenie primárneho kľúča do stĺpcov ID a NAME, ak tabuľka CUSTOMERS už existuje, opravte nasledujúcu syntax SQL.

ALTER TABLE ZÁKAZNÍCI PRIDAŤ OBMEDZENIE PK_CUSTID PRIMÁRNY KĽÚČ (ID, MENO);

Pohľad na primárny kľúč

Primárny kľúč môžete z tabuľky vymazať pomocou ďalšej syntaxe uvedenej nižšie.

ZÁKAZNÍCI ZMENIŤ TABUĽKU PUSTÍ PRIMÁRNY KĽÚČ;

Posledná aktualizácia: 27.04.2019

Externé kľúče vám umožňujú vytvoriť prepojenia medzi tabuľkami. Externý kľúč je nainštalovaný pre stĺpce zo sekundárnej tabuľky a ukazuje na jeden zo stĺpcov z hlavnej tabuľky. Cudzí kľúč zvyčajne ukazuje na primárny kľúč v priradenej hlavnej tabuľke.

Pôvodná syntax na inštaláciu cudzieho kľúča do tabuľky je:

CUDZÍ KĽÚČ (stovpets1, stovets2, ... stovetsN) REFERENCIE head_table (stovets_head_table1, stovets_head_table2, ... stovets_head_tablesN)

Ak chcete vytvoriť výmenu cudzieho kľúča, po položke FOREIGN KEY uveďte časť tabuľky, ktorá predstavuje cudzí kľúč. A za kľúčovým slovom REFERENCES je uvedený názov priradenej tabuľky a potom na ramenách priradenej tabuľky podľa toho, ktorý cudzí kľúč je uvedený. Po výraze REFERENCES sú výrazy ON DELETE a ON UPDATE, ktoré určujú čas na vymazanie a aktualizáciu riadku z hlavnej tabuľky.

Napríklad existujú dve významné tabuľky a spájame ich pomocou ďalšieho cudzieho kľúča:

CREATE TABLE Zákazníci (Id INT PRIMARY KEY AUTO_INCREMENT, Vek INT, Meno VARCHAR(20) NOT NULL, Priezvisko VARCHAR(20) NOT NULL, Phone VARCHAR(20) NOT NULL UNIQUE); VYTVORENIE TABUĽKY Objednávky (Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, CUDZÍ KĽÚČ (CustomerId) REFERENCIE Zákazníci (Id));

IN tomuto chlapovi priradené k tabuľkám Zákazníci a Objednávky. Zákazníci sú hlavou a zastupujú klienta. Objednávky sú neaktuálne a predstavujú objednávku zadanú klientom. Tabuľka Objednávky je prepojená prostredníctvom stĺpca CustomerId s tabuľkou Customers a stĺpcom Id. Potom je stĺpec CustomerId cudzí kľúč, ktorý sa zhoduje so stĺpcom Id v tabuľke Zákazníci.

Pomocou operátora CONSTRAINT môžete nastaviť názvy na vymedzenie cudzieho kľúča:

CREATE TABLE Objednávky (Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, CONSTRAINT orders_custonmers_fk CUDZÍ KĽÚČ (CustomerId) REFERENCIE Zákazníci (Id));

PRI VYMAZANÍ a AKTUALIZÁCII

Okrem výrazov ON DELETE a ON UPDATE môžete nastaviť akcie, ktoré sa automaticky zobrazia, keď sa vymaže alebo zmení priradený riadok v hlavnej tabuľke. Ako možno použiť nasledujúce možnosti:

    CASCADE: automaticky odstráni alebo zmení riadky zo základnej tabuľky, keď odstránite alebo zmeníte prepojenia riadkov z hlavnej tabuľky.

    SET NULL: Keď sa vymaže alebo aktualizuje súvisiaci riadok z hlavnej tabuľky, nastaví hodnotu NULL pre stĺpec cudzieho kľúča. (V tomto prípade môže typ cudzieho kľúča podporovať nastavenie NULL)

    OBMEDZENIE: zabraňuje vzhľadu alebo zmene riadkov v hlavnej tabuľke kvôli viditeľnosti súvisiacich riadkov v zastaranej tabuľke.

    ŽIADNA AKCIA: to isté ako OBMEDZENIE.

    SET DEFAULT: Keď sa z hlavnej tabuľky odstráni súvisiaci riadok, nastaví hodnotu zásobníka cudzích kľúčov na hodnoty určené pre dodatočný atribút DEFAULT. Bez ohľadu na to, či je táto možnosť všeobecne dostupná, InnoDB pro engine tento vírus nepodporuje.

Kaskáda pohľadov

Kaskádové zobrazenie umožňuje, keď je riadok odstránený z hlavnej tabuľky, automaticky odstrániť všetky súvisiace riadky zo zastaranej tabuľky. Pre koho sa používa možnosť CASCADE:

VYTVORENIE TABUĽKY Objednávky (Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, CUDZÍ KĽÚČ (CustomerId) REFERENCIE Zákazníci (Id) ON DELETE CASCADE);

Vírus ON UPDATE CASCADE funguje podobným spôsobom. Pri zmene primárneho kľúča sa automaticky zmenia hodnoty sekundárneho kľúča, ktorý je s ním spojený. Fragmenty primárnych kľúčov sa však menia aj zriedkavo a v zásade sa neodporúča meniť primárne kľúče meniteľné hodnoty, potom sa výraz ON UPDATE používa len zriedka.

Nastaviť na NULL

Pri nastavovaní možnosti SET NULL pre cudzí kľúč je potrebné nastaviť cudzí kľúč tak, aby umožňoval hodnoty NULL:

CREATE TABLE Objednávky (Id INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, FOREIGN KEY (CustomerId) REFERENCIE Zákazníci (Id) ON DELETE SET NULL);

V tomto článku sa pokúsime pozrieť na všetko, čo má kľúče SQL: potreby, tvorba, výmena kľúčov. Zagalom: to bude nuda 😉

Plán na dnes je:

Teoreticky relačné databázy kľúče Tieto aktivity sú určené na vytvorenie špeciálnych hraníc, ktoré podporujú integritu a dostupnosť údajov v databázových tabuľkách.

Yakshcho kazati jednoduchými slovami, potom sú kľúče vložené sql vytvorené s cieľom demonštrovať doplnkovú funkčnosť systému. Jedinečné je, že odkazuje na inú tabuľku (cudzí kľúč).

Prvý kľúč

Ten, ktorý je v databáze jedinečný, je určený ako primárny kľúč. Primárny kľúč alebo primárny kľúč znamená, že hodnoty stĺpca primárneho kľúča v tabuľke sa nemôžu opakovať. Týmto spôsobom Dánsky kľúč Umožňuje jednoznačne identifikovať záznam v tabuľke bez obáv, že sa významný záznam bude opakovať. Pozrime sa na príklad: povedzme, že máte stôl držiakov. Táto tabuľka má nasledujúce polia: PIB, Ľudová republika, Telefón. Ako identifikovať cudzinca? Takým parametrom ako PIB a telefón sa nedá dôverovať. Aj keď možno máme pár koristuvachov s rovnakou prezývkou, aj s menami. Telefónne číslo sa môže časom meniť a používateľ s telefónnym číslom sa nemusí zdať tým, ktorý je v našej databáze.

Os, pre ktorú bol uhádnutý prvý kľúč. Zadajte jedinečný identifikátor raz a je to. IN mySql na zadku môžeme vybrať všetky zadky z poľa AUTOMATICKÝ PRÍRASTOK Nie je možné špecifikovať, pokiaľ nie je uvedené, že ide o prvý kľúč.

Myslím, že je ťažké uhádnuť, že pole je označené ako primárny kľúč a nemôže byť prázdne pred vytvorením záznamu.

Externý kľúč ( cudzí kľúč)

Viac externý kľúč (cudzí kľúč). Jogo sa nazýva uskutočniteľné. Tabuľku nie je potrebné navzájom spájať.

Ak sa pozriete na obrázok vyššie, externým kľúčom bude pole vlastníka príspevku v tabuľke. Pri vytváraní tabuľky spravidla zadajte stĺpec jedinečných celočíselných hodnôt. Yak mi tse sa báli, či vytvorili stôl dodávateľa

Stĺpec dodávateľ_id bude jedinečný pre pokožku. Tieto hodnoty sú zobrazené v priestore stĺpcov poštár v tabulke vzuttya. Povedzme si to a pozrite sa na príklad, aby ste videli, ako sa vytvára nový kľúč.

Vytvorenie externého kľúča

vytvoriť tabuľkové topánky (shoes_id int primárny kľúč auto_increment, text nadpisu, veľkosť int, pohyblivá cena, počet int, typ varchar(30), dodávateľ int, cudzí kľúč (dodávateľ) referencie dodávateľ (id_dodávateľa));

Ako je v aplikácii vidieť, syntax na vytvorenie nového kľúča je celkom jednoduchá. Do tabuľky musíte pridať pole a potom toto pole deklarovať ako cudzí kľúč a uviesť, kam má ísť. V tomto poli dodávateľa na ihrisku sa vám bude dariť dodávateľ_id v tabulke dodávateľa

Kľúč od skladu (zložený kľúč)

Len zložený kľúč je zbierka primárnych kľúčov v tabuľke. Takýmto spôsobom, keď som to urobil kompozitný kľúč, jedinečnosť záznamu bude overená pomocou polí zahrnutých v tomto kľúči.

Môžu nastať situácie, kedy je pri vkladaní tabuľky potrebné skontrolovať jedinečnosť záznamu vo viacerých poliach. Os, pre ktorú je kľúč úložiska. Pre zadok vytvorím jednoduchý stôl s kompozitný kľúč , aby sa zobrazila syntax:

Vytvorenie testu tabuľky (pole_1 int, pole_2 text, pole_3 bigint, primárny kľúč (pole_1, pole_3));

V aplikácii sú dve polia spojené do kľúča skladu a tabuľka nebude mať záznamy s týmito novými poľami.

To je všetko, čo sa týka kľúčov SQL. Toto je malá pomôcka – príprava na štatistiku a pozrieme sa na to, ako skombinovať tabuľky tak, aby sa z nich stala jedna databáza.

Počas procesu návrhu databázy sa rozhoduje o tom, aké tabuľky budú zahrnuté do databázy, aké budú názvy (identifikátory), aké typy údajov budú v tabuľke požadované a akým typom nástrojov bude k nim zakázaný prístup. Okrem toho, aby bola tabuľka vytvorená efektívne, je potrebné odpovedať na nasledujúce otázky:

  • Aké typy a veľkosti položiek budú tvoriť jednotlivé tabuľky, ako potrebujete vybrať názvy položiek v tabuľke?
  • Aké možnosti môžu odstrániť hodnoty NULL?
  • Kto budú vikorstani? výmena integrity, zmysel za pravidlami a pravidlami pre stovpts?
  • Aký typ indexovania sa bude vyžadovať pre konkrétne položky?
  • Ktoré komponenty sú zahrnuté v primárnom a externom kľúči.

Na vytvorenie stola v strede čs SQL Server vikoristický príkaz:

<определение_таблицы>::= VYTVORTE TABUĽKU [názov_databázy.[vlasnik]. | Vlasník ]názov_tabuľky (<элемент_таблицы>[,...n])

<элемент_таблицы> ::= {<определение_столбца>} | <имя_столбца>AS<выражение> | <ограничение_таблицы>

Majiteľovi tabuľky (dbo) zavolajte toho, kto ju vytvoril.

<Выражение>nastavuje hodnotu pre počítané stovpty. Vypočítané položky- tieto virtuálne stĺpce, t. j. fyzické tabuľky, sa uložia a vypočítajú pomocou dodatočnej hodnoty stĺpcov tej istej tabuľky. U virazi pre počítané stovpty Môžu existovať názvy počiatočných klauzúl, konštánt a funkcií spojených s jedným alebo viacerými operátormi. Bratia nedokážu prijať osud v takomto výraze. Vypočítané položky možno zapnúť pred sekciou SELECT pri zadávaní zoznamu možností, ktoré sa môžu zmeniť v dôsledku zvolenej položky. Vypočítané položky Do vonkajšieho kľúča nemôžu vstúpiť, pretože pre nich neexistuje žiadna hodnota za peniaze. Navyše, vypočítané položky nemôže sa zúčastniť operácií INSERT a DELETE.

<определение_столбца>::= ( meno<тип_данных>) [ [ PREDNASTAVENÉ<выражение>] | [ IDENTITA (klas, krokodíl) ]]] [<ограничение_столбца>][...n]]

Určený stĺpec veľmi rešpektuje parameter IDENTITY, ktorý naznačuje, že zodpovedajúci stĺpec bude lekársky asistent. Pre tabuľku môže existovať viac ako jedna úroveň hodnoty v dôsledku takejto sily. Môžete dodatočne uviesť hodnotu klasu a množstvo zvýšenia. Ak tieto hodnoty nie sú uvedené, tak pre zdôvodnenie smradu urážka súperov 1. Pretože kľúčové slovo IDENTITA je špecifikovaná ako NOT FOR REPLICATION, potom server automaticky negeneruje hodnotu pre tento stĺpec, ale umožňuje vloženie ďalších hodnôt do stĺpca.

Yak obezhennya vikoristovuyutsya výmena stovptsyaі Výmena stolov. Rozdiel medzi nimi je v tom výmena stovptsya dostane sa len na spevácke pole, a Výmena stolov- Až skupín jedného alebo viacerých polí.

<ограничение_столбца>::= [ OBMEDZENIE názov_názov ] ( [ NULL | NIE JE NULL ] | [ (PRIMÁRNY KĽÚČ | JEDINEČNÝ ) [ KLUSTEROVANÝ | NEZAHRNUTÝ ] [ WITH FILLFACTOR=faktor_nahradenia ] [ ZAPNUTÝ (názov_skupiny_súborov | DEFAULT ) ] Riadok_názov_tabuľky_[(_name_tabuľka_riadok_) PRI VYMAZANÍ ( KASKÁD | BEZ AKCIE ) ] [ PRI AKTUALIZÁCII ( KASKÁD | BEZ AKCIE ) ] [ NIE JE URČENÉ NA REPLIKÁCIU ]] KONTROLA [ NIE JE NA REPLIKÁCIU] ( |<лог_выражение>) } <ограничение_таблицы>::= ( [ ( PRIMÁRNY KĽÚČ | JEDINEČNÝ ) [ KLUSTROVANÝ | NEZAHRNUTÝ ] ((meno_stuff [,...n])) ] |CUDZÝ KĽÚČ[(meno_veci [,...n])] REFERENCIE im 'i_read_table [( im_stovtsia_,...n])] [ ZMAZAŤ ( KASKÁDA | BEZ AKCIE ) ] [ AKTUALIZOVAŤ ( KASKÁD | BEZ AKCIE ) ] NIE JE NA REPLIKÁCIU ] |

Poďme sa pozrieť na parametre prezentovaných štruktúr súvisiacich s hranicami integritu údajov. Obmedzenie integrity má prednosť pred spúšťačmi, pravidlami a hodnotami za pravidlami. Predtým hranice integrity objaviť hranice primárneho kľúča PRIMÁRNY KĽÚČ výmena externého kľúča CUDZÍ KĽÚČ, výmena jedinečnosti UNIQUE, výmena hodnoty NULL, výmena CHECK.

Výmena primárneho kľúča (PRIMARY KEY)

Tabuľka môže byť tvorená buď kombináciou stĺpcov, ktorých hodnoty jednoznačne identifikujú každý riadok tabuľky. Táto zásoba (alebo zásoba) sa nazýva primárny kľúč a potrebné zabezpečenie integrity. Ak je primárny kľúč zahrnutý vo viac ako jednom stĺpci, hodnoty medzi jedným stĺpcom môžu byť duplikované alebo môže existovať kombinácia hodnôt všetkých stĺpcov primárny kľúč Môže byť jedinečný.

Pri otvorení primárny kľúč SQL Server automaticky vytvorí jedinečný index pre stĺpce, ktoré idú až po primárny kľúč. Prístup k týmto článkom urýchlite o hodinu vášho vyhľadávania. primárny kľúč pri zapitaku.

Tabuľka nemusí mať jedno vymedzenie PRIMARY KEY a z dôvodu zahrnutia v primárnom kľúči nie je možné uložiť hodnoty NULL. Keď sa pokúsite, vikorystuvat ako primárny kľúč stovpets (alebo skupina stovptov), ​​pre kohokoľvek hranice primárneho kľúča nemeniť, pôvodný kľúč nie je vytvorený, ale systém zobrazuje notifikáciu o zúčtovaní.

Výmenné fragmenty PRIMARY KEY zaručujú jedinečnosť dát, na ktorú sa často používajú zdravotníckych pracovníkov. brána výmena integrity PRIMÁRNY KĽÚČ je možný pri vytvorení aj vtedy výmenné stoly. Jeden z dôvodov primárny kľúčє bezpečnosť úplná integritaúdajová tabuľka. Samozrejme, toto je možné implementovať iba vtedy, ak sú určité externé kľúče určené v iných tabuľkách.

Výmena cudzieho kľúča (FOREIGN KEY)

Výmena externého kľúča- toto je hlavný mechanizmus podpory úplná integrita Medzi tabuľkami relačnej databázy, jednou z podriadených tabuliek, hodnotami ako cudzí kľúč v parametri FOREIGN KEY sa do jednej z otcových tabuliek odošle správa, že má primárny kľúč. Názvy Otcovho stola a ich obsah primárny kľúč vkuzuyutsya pri rieke REFERENCIE. Údaje v klauzulách hodnotených ako cudzí kľúč môžu mať iba rovnaké hodnoty, aké sa nachádzajú v klauzulách, ktoré sú s nimi spojené primárny kľúč Otcov stôl. Na prepojenie podriadených a rodičovských tabuliek nie je potrebné vyhýbať sa menám partnerov. Primárny kľúč môže byť priradený k jednému názvu, ale v dôsledku toho, že sa prekryje CUDZÝ KĽÚČ, môže mať úplne iné názvy. Jediným rozdielom je konzistencia údajov v závislosti od typu a veľkosti údajov.

K primárnemu kľúču je možné pristupovať z iných tabuliek, ako aj zo stĺpcov pridaných do tej istej tabuľky, ktorá je vlastníkom primárneho kľúča; To umožňuje vytváranie rekurzívnych štruktúr.

Externý kľúč môže byť spojený nielen s primárny kľúč Ostatné stoly. Môžu existovať hodnoty pre stĺpce s UNIQUE výmenami v inej tabuľke alebo pre iné stĺpce ako tabuľky, ktoré sú v rovnakej databáze.

Klauzuly cudzieho kľúča môžu obsahovať hodnoty NULL, ale kontrola FOREIGN KEY sa ignoruje. Cudzí kľúč môže byť indexovaný, takže server bude s väčšou pravdepodobnosťou vyhľadávať nepotrebné údaje. Externý kľúč je indikovaný pri vytvorení aj kedy zmeniť stôl.

Obmezhennya úplná integritašpecifikuje, prečo je za každý záznam v tabuľke potomka zodpovedný záznam v tabuľke otca. Pri zmene hodnoty sa zablokuje prepojenie v zázname tabuľky Fatherland z dôvodu prítomnosti detského záznamu, ako aj vymazaného záznamu Fatherland (blokovanie kaskádových zmien a vymazaní), čo je zaručené parametrami ON DELETE NO ACTION a ON UPDATE. ŽIADNA AKCIA , braná ako samozrejmosť. Ak chcete povoliť kaskádový tok, vyberte parametre ON DELETE CASCADE a ON UPDATE CASCADE.