Primāro atslēgu izveide. Ierobežojums PRIMARY KEY Primārās atslēgas sintakse

Šajā rakstā mēs centīsimies apsvērt visu, kas saistīts ar atslēgām SQL: kam paredzēta atslēgu izveide un ierobežojumi? Vispār: būs garlaicīgi 😉

Šodienas plāns ir šāds:

Relāciju datu bāzes teorijā - atslēgas Tās ir noteiktas entītijas, kas izveidotas, lai noteiktu noteiktus ierobežojumus, kas uztur datu integritāti un pieejamību datu bāzes tabulās.

Vienkāršiem vārdiem sakot, atslēgas ir iekšā sql ir izveidoti, lai norādītu kolonnas papildu funkcionalitāti. Vai tā būtu unikalitāte vai fakts, ka kolonna atsaucas uz citu tabulu (svešā atslēga).

Primārā atslēga

Kolonna, kurai datu bāzē jābūt unikālai, ir atzīmēta ar primāro atslēgu. Primārā atslēga vai primārā atslēga nozīmē, ka primārās atslēgas kolonnas vērtību tabulā nevar atkārtot. Tādējādi šī atslēga ļauj unikāli identificēt ierakstu tabulā, nebaidoties, ka kolonnas vērtība tiks atkārtota. Tikai piemērs: pieņemsim, ka jums ir lietotāju tabula. Šajā tabulā ir šādi lauki: pilns vārds, dzimšanas gads, tālrunis. Kā identificēt lietotāju? Tādiem parametriem kā pilns vārds un tālruņa numurs nevar uzticēties. Galu galā mums var būt vairāki lietotāji ne tikai ar vienu un to pašu uzvārdu, bet arī ar vienu vārdu. Tālruņa numurs laika gaitā var mainīties, un lietotājs ar tālruņa numuru var nebūt tas, kurš ir mūsu datubāzē.

Tāpēc tika izgudrota primārā atslēga. Kad ir piešķirts unikāls identifikators, un viss. IN mySql uz kura piemēra veicam visus piemērus no lauka AUTOMĀTISKS_INCREMENT nevar iestatīt, ja vien nenorādīsiet, ka šī ir primārā atslēga.

Es domāju, ka nav vērts pieminēt, ka lauks, kas atzīmēts kā primārā atslēga, nevar būt tukšs, veidojot ierakstu.

Ārējā atslēga ( sveša atslēga)

Vai ir vēl daži ārējā atslēga (sveša atslēga). To sauc arī par atsauci. Tas ir nepieciešams, lai savienotu tabulas.

Ja skatāties uz iepriekš redzamo attēlu, ārējā atslēga būs piegādātāja lauks apavu tabulā. Parasti, veidojot tabulu, jūs norādāt unikālu veselu skaitļu vērtību kolonnu. Kā mēs to darījām, veidojot tabulu piegādātājs

Kolonna piegādātāja_id būs unikāls katram ierakstam. Tās vērtība parādīsies kolonnā pakalpojumu sniedzējs tabulā kurpes. Es iesaku nekavējoties apskatīt piemēru, kā tiek izveidota ārējā atslēga.

Ārējās atslēgas izveide

izveidot tabulu kurpes (shoes_id int auto_increment primārā atslēga, virsraksta teksts, izmērs int, cenas peldēšana, skaits int, tips varchar(30), piegādātājs int, ārējā atslēga (piegādātāja) atsauces piegādātājs (piegādātāja_id));

Kā redzat iepriekš minētajā piemērā, ārējās atslēgas izveides sintakse ir diezgan vienkārša. Tabulai jāpievieno lauks un pēc tam šis lauks jādeklarē kā ārējā atslēga un jānorāda, kur tas atsauksies. Šajā gadījumā lauks piegādātājs attieksies uz lauku piegādātāja_id tabulā piegādātājs

Saliktā atslēga (saliktā atslēga)

Kas attiecas uz salikto atslēgu, tās ir vairākas primārās atslēgas tabulā. Tādējādi, izveidojot saliktā atslēga, ieraksta unikalitāti pārbaudīs lauki, kas ir apvienoti šajā atslēgā.

Pastāv situācijas, kad, ievietojot tabulā, jums ir jāpārbauda ieraksta unikalitāte, izmantojot vairākus laukus vienlaikus. Tāpēc tika izgudrota saliktā atslēga. Piemēram, es izveidošu vienkāršu tabulu ar saliktā atslēga lai parādītu sintaksi:

Izveidot tabulu testu(lauks_1 int, lauks_2 teksts, lauks_3 bigint, primārā atslēga (lauks_1, lauks_3));

Iepriekš minētajā piemērā divi lauki ir apvienoti saliktā atslēgā, un tabulā nebūs ierakstu ar šiem identiskiem laukiem.

Tas viss par atslēgām SQL.Šī mazā apmācība ir sagatavošanās rakstam, kurā mēs detalizēti apskatīsim, kā apvienot tabulas, lai tās veidotu vienotu datu bāzi.

TAS ATTIECAS UZ: SQL Server (kopš 2016. gada) Azure SQL DatabaseAzure SQL Data Warehouse Paralēlā datu noliktava

Varat definēt primāro atslēgu programmā SQL Server 2016, izmantojot SQL Server Management Studio vai Transact-SQL. Izveidojot primāro atslēgu, automātiski tiek izveidots atbilstošs unikāls klasterizēts vai negrupēts indekss.

Šajā sadaļā

    Pirms sākat, veiciet tālāk norādītās darbības.

    Ierobežojumi

    Drošība

    Izveidojiet primāro atslēgu, izmantojot:

    SQL Server Management Studio

Ierobežojumi

    Tabulai var būt tikai viens primārās atslēgas ierobežojums.

    Visas kolonnas ar PRIMARY KEY ierobežojumu nedrīkst būt NULL. Ja anulējamība nav norādīta, visām kolonnām ar ierobežojumu PRIMARY KEY tiek iestatīts karodziņš NOT NULL.

Drošība

Atļaujas

Lai izveidotu jaunu tabulu ar primāro atslēgu, ir nepieciešama CREATE TABLE atļauja datu bāzē un ALTER atļauja shēmai, kurā tabula ir izveidota.

Lai izveidotu primāro atslēgu esošajā tabulā, ir nepieciešama tabula ALTER atļauja.

Primārās atslēgas izveide

    Programmā Object Explorer ar peles labo pogu noklikšķiniet uz tabulas, kurai vēlaties pievienot unikālu ierobežojumu, un atlasiet Konstruktors.

    IN Galdu dizainers Noklikšķiniet uz tās datu bāzes kolonnas rindu atlasītāja, kuru vēlaties definēt kā primāro atslēgu. Lai atlasītu vairākas kolonnas, nospiediet un turiet taustiņu CTRL un noklikšķiniet uz atlikušo kolonnu rindu atlasītājiem.

    Ar peles labo pogu noklikšķiniet uz kolonnas rindu atlasītāja un atlasiet Iestatiet primāro atslēgu.

Atslēgas avota kolonna tiek identificēta ar primārās atslēgas simbolu attiecīgajā rindu atlasītājā.

Ja primārā atslēga sastāv no vairākām kolonnām, vienā kolonnā var būt vērtību dublikāti, taču visām vērtību kombinācijām no visām primārās atslēgas kolonnām jābūt unikālām.

Definējot salikto atslēgu, kolonnu secība primārajā atslēgā ir tāda pati kā tabulā parādītā kolonnu secība. Tomēr pēc primārās atslēgas izveides kolonnu secību var mainīt. Papildinformāciju skatiet .

Izveidojiet primāro atslēgu esošai tabulai

    IN Objektu pētnieks

    Izveidojiet pieprasījumu.

    Izpildīt. Šajā piemērā tiek izveidota primārā atslēga slejā TransactionID.

    IZMANTOT AdventureWorks2012; AIZIET ALTER TABLE Production.TransactionHistoryArchive ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID); AIZIET

Izveidojiet primāro atslēgu jaunā tabulā

    IN Objektu pētnieks Izveidojiet savienojumu ar datu bāzes dzinēja gadījumu.

    Standarta panelī atlasiet Izveidojiet pieprasījumu.

    Kopējiet šo piemēru vaicājuma logā un noklikšķiniet uz pogas Izpildīt. Šajā piemērā tiek izveidota tabula un definēta primārā atslēga kolonnai TransactionID.

    IZMANTOT AdventureWorks2012; AIZIET CREATE TABLE Production.TransactionHistoryArchive1 (TransactionID int NOT NULL , CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)); AIZIET

    Papildinformāciju skatiet sadaļās un .

Jūsu uzmanībai piedāvāju bezmaksas tulkojumu rakstam SQL iesācējiem 2. daļa

Katram tīmekļa izstrādātājam ir svarīgi, lai viņi varētu mijiedarboties ar datu bāzēm. Otrajā daļā turpinām valodas apguvi SQL un pielietot savas prasmes DBVS MySQL. Mēs izpētīsim indeksus, datu tipus un sarežģītākus vaicājumus.

Ko tev vajag

Lūdzu, skatiet pirmās daļas sadaļu "Kas jums nepieciešams", kas atrodas.

Ja vēlaties darbināt šos piemērus savā serverī, rīkojieties šādi:

  1. Atveriet savu konsoli MySQL un piesakieties.
  2. Izmantojot vaicājumu, izveidojiet datu bāzi "my_first_db". IZVEIDOT, ja tas nav izveidots iepriekš.
  3. Mainiet pamatni, izmantojot operatoru IZMANTOT.

Indeksi

Indeksus (vai atslēgas) parasti izmanto, lai uzlabotu tādu paziņojumu izpildes ātrumu, kas atlasa datus (piemēram, ATLASĪT) no tabulām.

Tie ir svarīga labas datu bāzes arhitektūras sastāvdaļa; tos ir grūti klasificēt kā "optimizāciju". Parasti indeksi tiek pievienoti sākotnēji, bet tos var pievienot vēlāk, izmantojot vaicājumu MAINĪT TABLU.

Galvenie datu bāzes kolonnu indeksēšanas iemesli ir:

  • Gandrīz katrai tabulai ir primārā atslēga ( PRIMĀRĀ ATSLĒGA), parasti šī ir sleja “id”.
  • Ja kolonna ir paredzēta unikālas vērtības glabāšanai, tai ir jābūt unikālam indeksam ( UNIKĀLS).
  • Ja jums ir nepieciešama bieža meklēšana kolonnā (izmantojot to teikumā KUR), tam ir jābūt regulāram indeksam ( INDEKSS).
  • Ja kolonna tiek izmantota saistīšanai ar citu tabulu, tai, ja iespējams, jābūt svešai atslēgai ( SVEŠA ATSLĒGA) vai parastu indeksu.

Primārā atslēga (PRIMARY KEY)

Gandrīz visām tabulām ir primārā atslēga, parasti vesels skaitlis ar automātiskās palielināšanas opciju ( AUTO_INCREMET).

Apakšvaicājumi bieži izraisa ievērojamu veiktspējas pasliktināšanos, tāpēc izmantojiet tos piesardzīgi.

SAVIENĪBA: datu apvienošana

Izmantojot vaicājumu SAVIENĪBA, varat apvienot vairāku SELECT vaicājumu rezultātus.

Šajā piemērā ir apvienoti stāvokļi, kas sākas ar burtu "N", ar štatiem ar lielāku populāciju:

(SELECT * FROM stāvokļi WHERE nosaukums LIKE "n%") UNION (SELECT * FROM štati WHERE iedzīvotāju skaits > 10000000);

Lūdzu, ņemiet vērā, ka Ņujorka ir liels štats un sākas ar burtu "N". Tomēr tas sarakstā parādās tikai vienu reizi, jo dublikāti tiek noņemti automātiski.

Arī pieprasījumu skaistums SAVIENĪBA ir tas, ka tos var izmantot, lai apvienotu vaicājumus pret dažādām tabulām.

Piemēram, mums ir tabulas darbinieki (darbinieki), vadītāji (vadītāji) un klienti (klienti). Katrā tabulā ir lauks ar e-pasta adresi. Ja mēs vēlamies saņemt visas e-pasta adreses vienā pieprasījumā, mēs varam rīkoties šādi:

(ATLASĪT e-pastu NO darbiniekiem) SAVIENĪBA (ATLASĪT e-pastu NO vadītājiem) SAVIENĪBA (ATLASĪT e-pastu NO klientiem, KUR abonējis = 1);

Aizpildot šo pieprasījumu, mēs saņemsim visu darbinieku un vadītāju pasta adreses un tikai to klientu pasta adreses, kuri ir abonējuši adresātu sarakstu.

INSERT Turpinājums

Mēs jau runājām par pieprasījumu IEVIETOT iepriekšējā rakstā. Tagad, kad esam apskatījuši indeksus, varam runāt par papildu vaicājumu iespējām IEVIETOT.

IEVIETOT ... UZ DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU

Šis ir visbiežāk izmantotais nosacījums. Vispirms pieprasījums mēģina izpildīt IEVIETOT, un ja pieprasījums neizdodas dublēta primārā ( PRIMĀRĀ ATSLĒGA) vai unikāls ( UNIKĀLA ATSLĒGA) taustiņu, tad pieprasījums tiek izpildīts ATJAUNINĀT.

Vispirms izveidosim testa tabulu.

Šis ir pārtikas uzglabāšanas galds. Laukā "Krājums" tiek saglabāts noliktavā pieejamo produktu skaits.

Tagad mēģināsim ievietot esošu vērtību tabulā un redzēsim, kas notiek.

Mēs saņēmām kļūdu.

Pieņemsim, ka esam ieguvuši jaunu maiznīcu un vēlamies atjaunināt datu bāzi, bet nezinām, vai datu bāzē jau ir ieraksts. Vispirms varam pārbaudīt ieraksta esamību un pēc tam palaist citu ievietošanas vaicājumu. Vai arī varat izdarīt visu ar vienu vienkāršu vaicājumu:

Darbojas tāpat kā IEVIETOT, bet ar vienu svarīgu iezīmi. Ja ieraksts jau pastāv, tas tiek dzēsts un pēc tam tiek izpildīts vaicājums IEVIETOT, un mēs nesaņemsim nekādus kļūdu ziņojumus.

Lūdzu, ņemiet vērā, jo tiek ievietota pilnīgi jauna rinda, autoinkrementa lauks tiek palielināts par vienu.

Tas ir veids, kā novērst dublēšanās kļūdu rašanos, lai programma turpinātu darboties. Iespējams, jums būs jāievieto jauna rinda, nedrukājot nekādas kļūdas, pat ja notiek dublēšanās.

Nav kļūdu vai atjauninātu rindu.

Datu veidi

Katrai tabulas kolonnai ir jābūt noteikta veida. Mēs jau esam izmantojuši veidus INT, VARCHAR Un DATUMS, taču sīkāk pie tiem nekavējos. Mēs arī apskatīsim vēl dažus datu veidus.

Sāksim ar skaitliskiem datu veidiem. Es tos sadalu divās grupās: Veselos skaitļos un daļskaitļos.

Vesels

Vesela skaitļa kolonnā var saglabāt tikai naturālus skaitļus (bez komata). Pēc noklusējuma tie var būt pozitīvi vai negatīvi. Ja opcija ir atlasīta NEPARAKSTĪTS, tad var saglabāt tikai pozitīvus skaitļus.

MySQL atbalsta 5 dažādu izmēru un diapazonu veselu skaitļu veidus:

Daļēji skaitļu datu tipi

Šie veidi var saglabāt daļskaitļus: FLOAT, DOUBLE un DECIMAL.

FLOAT aizņem 4 baitus, DOUBLE aizņem 8 baitus un ir līdzīgs iepriekšējam. DOUBLE ir precīzāka.

DECIMAL(M,N) ir mainīga precizitāte. M ir maksimālais ciparu skaits, N ir ciparu skaits aiz komata.

Piemēram, DECIMAL(13,4) ir 9 zīmes aiz komata un 4 zīmes aiz komata.

Virkņu datu tipi

Pēc nosaukuma varat uzminēt, ka viņi var uzglabāt virknes.

CHAR(N) var saglabāt N rakstzīmes, un tam ir fiksēta vērtība. Piemēram, CHAR(50) katrā rindiņā visā kolonnā vienmēr ir jābūt 50 rakstzīmēm. Maksimālā iespējamā vērtība ir 255 rakstzīmes

VARCHAR(N) darbojas tāpat, taču diapazons var atšķirties. N - apzīmē maksimālo vērtību. Ja saglabātā virkne ir īsāka par N rakstzīmēm, tā aizņems mazāk vietas cietajā diskā. Maksimālā iespējamā vērtība ir 65535 rakstzīmes.

TEXT tipa varianti ir piemērotāki garām virknēm. Tekstam TEXT ir 65 535 rakstzīmju ierobežojums, MEDIUMTEXT — 16,7 miljoni, bet LONGTEXT — 4,3 miljardi rakstzīmju. MySQL tos parasti uzglabā atsevišķās servera krātuvēs, lai galvenā krātuve būtu pēc iespējas mazāka un ātrāka.

.

Secinājums

Paldies, ka izlasījāt rakstu. SQL ir svarīga valoda un rīks tīmekļa izstrādātāju arsenālā.

Primārā atslēga ir tabulas lauks, kas unikāli identificē katru datu bāzes tabulas rindu/ierakstu. Primārajās atslēgās ir jābūt unikālām vērtībām. Primārās atslēgas kolonnai nevar būt vērtība.

Tabulā var būt tikai viena primārā atslēga, kas var sastāvēt no viena vai vairākiem laukiem. Ja vairāki lauki tiek izmantoti kā primārā atslēga, tos sauc par salikto atslēgu.

Ja tabulas primārā atslēga ir definēta jebkurā(-os) laukā(-os), tad nevar būt divi ieraksti ar vienādu vērtību šim laukam(-iem).

Piezīme– Varat izmantot šos jēdzienus, veidojot datu bāzes tabulas.

Primārās atslēgas izveide

Šeit ir sintakse, lai definētu ID atribūtu kā primāro atslēgu tabulā Klienti.

IZVEIDOT TABULU KLIENTU (ID INT NOT NULL, NOSAUKUMS VARCHAR (20) NOT NULL, VECUMS INT NOT NULL, ADRESES CHAR (25) , ALGAS DECIMĀLS (18, 2), PRIMARY KEY (ID));

Lai kolonnā “ID” izveidotu primārās atslēgas ierobežojumu, ja tabula KLIENTI jau pastāv, izmantojiet šādu SQL sintaksi:

ALTER TABLE KLIENTI PIEVIENOT PRIMĀRO ATSLĒGU (ID);

Piezīme

Ja primārās atslēgas pievienošanai izmantojat priekšrakstu ALTER TABLE, primārās atslēgas kolonnai(-ām) jau ir jābūt deklarētām kā nesaturošām NULL vērtībām (ja tabula tika izveidota vispirms).

Lai definētu primāro atslēgu vairākās kolonnās, izmantojiet tālāk norādīto SQL sintaksi.

IZVEIDOT TABULU KLIENTU (ID INT NOT NULL, NOSAUKUMS VARCHAR (20) NOT NULL, VECUMS INT NOT NULL, ADRESES CHAR (25) , ALGAS DECIMĀLS (18, 2), PRIMĀRĀ ATSLĒGA (ID, NOSAUKUMS));

Lai izveidotu primārās atslēgas ierobežojumu kolonnām ID un NAME, ja tabula KLIENTI jau pastāv, izmantojiet šādu SQL sintaksi.

ALTER TABLE KLIENTI PIEVIENOT IEROBEŽOJUMU PK_CUSTID PRIMARY KEY (ID, NOSAUKUMS);

Primārās atslēgas dzēšana

Primārās atslēgas ierobežojumus var notīrīt no tabulas, izmantojot tālāk norādīto sintaksi.

ALTER TABLE KLIENTI DROP PRIMARY KEY;

Datu bāzes projektēšanas procesā tiek pieņemti lēmumi par to, kuras tabulas ir jāiekļauj datu bāzē, kādi nosaukumi (identifikatori) tām būs, kādi dati būs nepieciešami tabulu izveidošanai un kādi lietotāji katrai no tām varēs piekļūt. . Turklāt, lai efektīvi izveidotu tabulas, jums ir jāatbild uz šādiem jautājumiem:

  • Kāda veida un izmēra kolonnas veidos katra tabula, un kādus nosaukumus izvēlēties tabulas kolonnām?
  • Kurās kolonnās var būt NULL vērtība?
  • Vai tie tiks izmantoti? integritātes ierobežojumi, kolonnu noklusējuma vērtības un noteikumi?
  • Vai ir nepieciešama kolonnu indeksācija, kāda veida indeksi tiks lietoti konkrētām kolonnām?
  • Kuras kolonnas tiks iekļautas primārajā un ārējā atslēgā.

Lai izveidotu tabulas MS SQL Server vidē, izmantojiet komandu:

<определение_таблицы>::= IZVEIDOT TABULU [ datu bāzes_nosaukums.[īpašnieks]. | īpašnieks. ]tabula_nosaukums (<элемент_таблицы>[,...n])

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

Parasti tabulas (dbo) īpašnieks ir persona, kas to izveidoja.

<Выражение>iestata vērtību aprēķinātā kolonna. Aprēķinātās kolonnas- tās ir virtuālas kolonnas, t.i., tās netiek fiziski saglabātas tabulā un tiek aprēķinātas, izmantojot vienas tabulas kolonnu vērtības. Izteicienā par aprēķinātā kolonna var būt regulāri kolonnu nosaukumi, konstantes un funkcijas, kas saistītas ar vienu vai vairākiem operatoriem. Apakšvaicājumi nevar piedalīties šādā izteiksmē. Aprēķinātās kolonnas var iekļaut SELECT klauzulā, norādot kolonnu sarakstu, kas jāatgriež vaicājuma rezultātā. Aprēķinātās kolonnas nevar iekļaut ārējā atslēgā; tām netiek izmantotas noklusējuma vērtības. Turklāt, aprēķinātās kolonnas nevar piedalīties INSERT un DELETE operācijās.

<определение_столбца>::= ( kolonnas_nosaukums<тип_данных>) [ [ NOKLUSĒJUMS<выражение>] | [ IDENTITĀTE (sākums, solis) ]]] [<ограничение_столбца>][...n]]

Kolonnas definīcijā pievērsiet uzmanību parametram IDENTITĀTE, kas norāda, ka atbilstošā kolonna būs skaitītāja kolonna. Katrai tabulai var definēt tikai vienu kolonnu ar šo rekvizītu. Varat papildus norādīt sākotnējo vērtību un pieauguma soli. Ja šīs vērtības nav norādītas, tās abas noklusējuma vērtības ir 1. Ja ar atslēgvārdu IDENTITY ir norādīts NOT FOR REPLICATION, serveris automātiski neģenerēs vērtības šai kolonnai, bet ļaus ievietot patvaļīgas vērtības kolonnu.

Izmantotie ierobežojumi ir kolonnu ierobežojumi Un tabulas ierobežojumi. Atšķirība starp tām ir tāda kolonnas ierobežojums attiecas tikai uz noteiktu lauku, un tabulas ierobežojums- viena vai vairāku lauku grupām.

<ограничение_столбца>::= [ IEROBEŽOJUMA ierobežojuma nosaukums ] ( [ NULL | NOT NULL ] | [ (PRIMĀRĀ ATSLĒGA | UNIKĀLA ) [ KLASTERĒTA | NEKLUSTRĒTA ] [ AR APLĪDINĀJUMU = Aizpildījuma koeficients ] [ IESLĒGTS (faila grupas nosaukums | NOKLUSĒJUMS ) ] ] FOREIGN ] | [ [] REFERENCE ] | tabulas_ģints_nosaukums [(kolonnas_nosaukums_tabulas_ģints) ] [ IESLĒGT DZĒŠANU ( KASKĀDE | BEZ DARBĪBAS ) ] [ ATJAUNINĀT ( KASKĀDE | NAV DARBĪBA ) ] [ NAV REPLIKĀCIJAI ]] | PĀRBAUDE [ NAV REPLIKĀCIJAI ](<лог_выражение>) } <ограничение_таблицы>::= ( [ (PRIMĀRĀ ATSLĒGA | UNIKĀLA ) [ KLASTERĒTA | NEKLUSTRĒTA ] ((kolonnas_nosaukums [,...n])) ] |ĀRĒJĀ ATSLĒGA[(kolonnas_nosaukums [,...n])] ATSAUCES tabulas_nosaukums [(kolonnas_nosaukums table_gen [ ,...n])] [ IESLĒGT DZĒŠANU ( KASKĀDE | NAV DARBĪBA ) ] [ ATJAUNINĀT (KASKĀDE | NAV DARBĪBA ) ] | NAV REPLIKĀCIJAI ] | PĀRBAUDE [ NAV REPLIKĀCIJA ] (loģiskā izteiksme))

Ļaujiet mums apsvērt atsevišķus piedāvāto dizainu parametrus, kas saistīti ar ierobežojumiem datu ticamība. Integritātes ierobežojumi ir prioritāte pār aktivizētājiem, noteikumiem un noklusējuma iestatījumiem. UZ integritātes ierobežojumi attiecas primārās atslēgas ierobežojums PRIMĀRĀ ATSLĒGA ārējās atslēgas ierobežojumsĀRĒJĀ ATSLĒGA, UNIKĀLS ierobežojums, NULL ierobežojums, PĀRBAUDES ierobežojums.

Primārās atslēgas ierobežojums (PRIMARY KEY)

Tabulā parasti ir kolonna vai kolonnu kombinācija, kuras vērtības unikāli identificē katru tabulas rindu. Šo kolonnu (vai kolonnas) sauc primārā atslēga tabula un ir nepieciešama, lai nodrošinātu tā integritāti. Ja primārajā atslēgā ir vairāk nekā viena kolonna, vērtības vienā kolonnā var dublēt, bet jebkura visu kolonnu vērtību kombinācija primārā atslēga jābūt unikālam.

Veidojot primārā atslēga SQL Server automātiski izveido unikālu indeksu kolonnās, kas ir daļa no primārās atslēgas. Tas paātrina piekļuvi šo kolonnu datiem, kad tās tiek izmantotas primārā atslēga pieprasījumos.

Tabulai var būt tikai viens PRIMARY KEY ierobežojums, un neviena no primārajā atslēgā iekļautajām kolonnām nevar būt NULL. Mēģinot to izmantot kā primārā atslēga kolonna (vai kolonnu grupa), kurai primārās atslēgas ierobežojumi netiek izpildīti, primārā atslēga netiks izveidota, un sistēma parādīs kļūdas ziņojumu.

Tā kā ierobežojums PRIMARY KEY nodrošina, ka dati ir unikāli, tas bieži tiek definēts kā skaitītāju kolonnas. Radīšana integritātes ierobežojumi PRIMĀRĀ ATSLĒGA ir iespējama gan izveides laikā, gan kad mainot galdu. Viena no tikšanās reizēm primārā atslēga ir noteikums atsauces integritāte dati no vairākām tabulām. Protams, to var īstenot, tikai definējot atbilstošās ārējās atslēgas citās tabulās.

ĀRZEMES ATSLĒGAS IEROBEŽOJUMI

Ārējās atslēgas ierobežojums ir galvenais uzturēšanas mehānisms atsauces integritāte starp tabulām relāciju datu bāzē. Pakārtotās tabulas kolonna, kas norādīta kā ārējā atslēga parametrā FOREIGN KEY, tiek izmantota, lai atsauktos uz vecāktabulas kolonnu, kas tajā atrodas. primārā atslēga. Mātes tabulas nosaukums un tā kolonnas primārā atslēga ir norādītas punktā ATSAUKSMES. Datiem kolonnās, kas definētas kā ārējā atslēga, var būt tikai tādas pašas vērtības kā tām saistītajās kolonnās primārā atslēga vecāku tabula. Lai saistītu pakārtotās un vecāktabulas, kolonnu nosaukumiem nav jāsakrīt. Primāro atslēgu var definēt kolonnai ar vienu nosaukumu, savukārt kolonnai, uz kuru attiecas ierobežojums SVEŠĀS ATSLĒGAS, var būt pavisam cits nosaukums. Vienīgā prasība ir, lai kolonnas atbilstu datu veidam un izmēram.

Uz primāro atslēgu var atsaukties ne tikai kolonnas citās tabulās, bet arī kolonnas, kas atrodas tajā pašā tabulā, kur pati primārā atslēga; tas ļauj izveidot rekursīvas struktūras.

Ārējo atslēgu var saistīt ne tikai ar primārā atslēga cits galds. To var definēt unikālām otrās tabulas kolonnām vai jebkurām citām kolonnām, bet tabulām jābūt vienā datu bāzē.

Svešās atslēgas kolonnās var būt NULL vērtība, bet FOREIGN KEY ierobežojuma pārbaude tiek ignorēta. Ārējo atslēgu var indeksēt, tad serveris ātrāk atradīs nepieciešamos datus. Ārējā atslēga tiek definēta gan izveides laikā, gan pie pārtinamo galdi.

Ierobežojums atsauces integritāte nosaka prasību, ka katram ierakstam pakārtotajā tabulā ir jābūt ierakstam vecāktabulā. Šajā gadījumā tiek bloķēta relāciju kolonnas vērtības maiņa vecāktabulas ierakstā bērnieraka klātbūtnē, kā arī vecāka ieraksta dzēšana (kaskādes izmaiņu un dzēšanas aizliegums), kas tiek garantēta pēc noklusējuma. ON DELETE NO ACTION un ON UPDATE NO ACTION parametriem. Lai iespējotu kaskādes efektus, izmantojiet parametrus ON DELETE CASCADE un ON UPDATE CASCADE.