Vaši podatki so dobri le, če jim lahko zaupate. Uporabite omejitve zbirke podatkov, da zagotovite, da je točna, zanesljiva in ne pokvari vašega podatkovnega modela.

Ključni zaključki

  • Uporabite omejitve SQL, da ohranite celovitost podatkov in zagotovite enotnost v vaši bazi podatkov. Omejitev NOT NULL prisili stolpce, da zavrnejo vrednosti NULL.
  • Izvedite omejitve primarnega ključa, da zagotovite edinstvenost vrednosti v stolpcu ali nizu stolpcev. To prepreči podvojene zapise v tabeli zbirke podatkov.
  • Omejitve tujega ključa vzpostavljajo razmerja med tabelami in preprečujejo dejanja, ki bi uničila povezave med njimi. Zagotavljajo, da se zapis v podrejeni tabeli sklicuje na nadrejeno tabelo.

Baza podatkov je bistvenega pomena za številne aplikacije, vendar lahko postane neurejeno, če nimate smernic za shranjevanje in obdelavo podatkov.

Omejitve SQL določajo pravila za shranjevanje podatkov v tabeli. Ko nastavite omejitve, bo zbirka podatkov vrgla napako, če boste poskušali shraniti podatke, ki kršijo ta pravila. Omejitve pomagajo ohranjati celovitost podatkov in zagotavljajo enotnost v vaši bazi podatkov.

instagram viewer

Obstaja več vrst omejitev SQL, ki jih lahko uporabite; tukaj je nekaj najbolj uporabnih.

1. Omejitev NOT NULL

Stolpci zbirke podatkov privzeto sprejemajo podatke z vrednostmi NULL. NULL v bistvu pomeni, da vrednost ne obstaja. Omejitev NOT NULL prisili stolpec, da zavrne vrednosti NULL.

Ta omejitev zagotavlja, da mora vsak stolpec vsebovati vrednost. Ne morete dodati zapisa v bazo podatkov, ne da bi posredovali podatke za kateri koli stolpec z omejitvijo NOT NULL.

Vzemite primer a Stranke tabela. Obstaja nekaj potrebnih podrobnosti o vsaki stranki, ki jih želite zabeležiti, na primer njihovo ime. Obveznim poljem dodajte omejitev NOT NULL, da zagotovite, da stranke zagotovijo te informacije.

Tukaj je primer, ki prikazuje, kako lahko uporabite omejitev NOT NULL v a Baza podatkov PostgreSQL:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Mobile_No int NOT NULL,
Age int
);

Če poskusite vstaviti zapis stranke brez starost polje, ga bo baza podatkov sprejela brez napak:

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 0723000000);

Vendar, če poskusite vstaviti zapis brez Ime bo baza podatkov zavrnila s sporočilom o napaki:

ERROR: null value in column "firstname" violates not-null constraint
Detail: Failing row contains (123456, Dior, null, 723000000, null).

2. Omejitev PRIMARNEGA KLJUČA

KLJUČ je enolični atribut, nastavljen na stolpec ali polje, ki identificira torko tabele (ali zapis) v sistemih baz podatkov. Omejitev PRIMARNEGA KLJUČA zagotavlja edinstvenost vrednosti v stolpcu ali nizu stolpcev. Deluje kot enolični identifikator v vrstici in preprečuje podvojene zapise v tabeli zbirke podatkov.

Primarni ključi vsebujejo edinstvene vrednosti in ne morejo vsebovati vrednosti NULL. Vsak Tabela baze podatkov SQL mora imeti samo en primarni ključ. PRIMARNI KLJUČ ima lahko enega ali več stolpcev.

Na primer, ustvarjate bazo podatkov o strankah. Vsaka stranka mora svojo ID številko vnesti drugače kot vsi drugi. Uporabite lahko omejitev primarnega ključa, da zagotovite, da nobena od vaših strank nima enake ID številke.

Naslednja koda prikazuje, kako lahko v zbirko podatkov MySQL uvedete omejitev primarnega ključa:

CREATETABLE Customers (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);

Baza podatkov ne bo sprejela te vrednosti, če uporabnik vnese drug zapis s podobnim ID-jem. Namesto tega bo vrgel napako, ki nakazuje podvajanje. Uporabnik poskuša v naslednjem primeru vstaviti dva zapisa z istim ID-jem:

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'John', 'Doe', 35 );

INSERTINTO Customers (ID, LastName, FirstName, Age)
VALUES (1, 'Mary', 'Jane', 35 );

Baza podatkov bo prikazala sporočilo o napaki:

Duplicate entry '1' for key 'PRIMARY'

Če pa spremenite ID druge stranke, baza podatkov sprejme vnos. Zato primarni ključ zagotavlja, da v vaših zapisih strank ni podvojenih ID-jev.

3. Omejitev TUJEGA KLJUČA

Tuji ključi vzpostavitev odnosov med dvema tabelama. Tuji ključ lahko dodate v polje/stolpec v eni tabeli, ki se sklicuje na primarni ključ v drugi tabeli.

Tabela s primarnim ključem je nadrejena tabela, medtem ko je tabela s tujim ključem podrejena tabela. Zapis potem ne more obstajati v podrejeni tabeli brez sklicevanja na nadrejeno tabelo.

Omejitev tujega ključa preprečuje dejanja, ki bi uničila povezave med tabelami. Na primer, ne morete DROP ena tabela, če je povezana z drugo s tujim ključem. Izpustiti boste morali obe mizi hkrati.

Za razliko od primarnega ključa lahko podvojite tuji ključ in imate več kot enega v eni tabeli. Lahko so tudi vrednosti tujih ključev NIČ. V naslednjem primeru morate uporabiti identifikacijska številka stranke ustvariti naročilo.

CREATETABLE Customers (
customer_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);

CREATETABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);

INSERTINTO Customers(customer_id, first_name, last_name)
VALUES (1, 'Christian', 'Dior');

INSERTINTO Orders(order_id, customer_id, order_date)
VALUES (1, 1, '2023-08-07');

Če poskusite ustvariti naročilo brez obstoječega identifikacijska številka stranke, zbirka podatkov prikaže sporočilo o napaki:

Cannot add or update a child row: a foreign key constraint fails
(`db_9_4ee205c`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY
(`customer_id`) REFERENCES `customers` (`customer_id`))

4. UNIQUE omejitev

Ta omejitev zagotavlja, da nobeni vrstici ne moreta imeti enakih vrednosti za določen stolpec. Tako kot primarni ključi tudi edinstvena omejitev ohranja celovitost podatkov in preprečuje podvojene vnose. Če delate s slabo zasnovano zbirko podatkov brez omejitve UNIQUE, boste morda morali poiščite in izbrišite dvojnike.

Za razliko od primarnih ključev imate lahko na eni tabeli veliko UNIQUE omejitev. Na primer, ko ustvarjate a Stranke tabelo, boste morda želeli imeti edinstvene ID-je in telefonske številke. Če želite dodati takšno omejitev s strežnikom MySQL, uporabite to sintakso:

CREATETABLE Customers (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Če v bazo podatkov vnesete zapise z isto mobilno številko, se prikaže sporočilo o napaki.

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (123456, 'Dior', 'Christian', 254000000 );

INSERTINTO Customers (ID, LastName, FirstName, Mobile_No)
VALUES (7891011, 'Dedan', 'Kimathi', 254000000 );

Sporočilo o napaki bo nekaj takega:

Duplicate entry '254000000' for key 'Mobile_No'

Ta UNIQUE omejitev zagotavlja, da baza podatkov ne bo imela strank z enakimi ID-ji ali številkami mobilnih telefonov.

5. PREVERITE Omejitev

Omejitev CHECK omejuje obseg vrednosti v stolpcu. Če v stolpec dodate omejitev CHECK, bodo dovoljene samo določene vrednosti za ta stolpec. Uveljavlja celovitost podatkov tako, da uporabniku zagotovi, da v tabelo vstavi samo veljavne podatke.

Omejitev CHECK mora ovrednotiti vrednost kot TRUE ali UNKNOWN za vsako določeno vrstico ali vnos tabele. Če je vrednost FALSE, baza podatkov prikaže sporočilo o napaki.

Na primer, v tabeli Stranke boste morda želeli služiti le strankam, starejšim od 18 let. Dodate lahko omejitev CHECK, da zagotovite, da ne služite mladoletnim strankam. Omejitev lahko dodate v bazo podatkov PostgreSQL, kot je prikazano v naslednji kodi:

CREATETABLE Customers (
ID int NOT NULL,
Age int CHECK(Age>=18),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Mobile_No BIGINT UNIQUE
);

Zdaj, če poskušate vstaviti starost stranke pod 18 let:

INSERTINTO Customers (ID, Age, LastName, FirstName, Mobile_No)
VALUES (123456, 15, 'Dior', 'Christian', 1254000000 );

Baza podatkov bo prikazala takšno sporočilo o napaki:

ERROR: new row for relation "customers" violates check constraint
"customers_age_check"
Detail: Failing row contains (123456, 15, Dior, Christian, 1254000000)

Kako dodati in odstraniti omejitve SQL iz baz podatkov

Omejitve SQL niso vklesane v kamen. Obstoječim tabelam lahko dodate ali odstranite omejitve s stavkom ALTER TABLE. Stavek ALTER vam omogoča delo z omejitvami, ki ustrezajo vašim potrebam po podatkih.

Obstaja veliko več omejitev SQL, ki se jih lahko naučite oblikovati zbirko podatkov po svojih željah. Začnete lahko s tistimi, ki so navedeni v tem članku.