Võtmed

Andmebaaside võtmed

Võtmed on andmebaasi struktuuri oluline osa. Need aitavad unikaalselt tuvastada kirjeid, luua seoseid tabelite vahel ja säilitada andmete terviklikkust.
Vaatleme peamisi võtmete tüüpe:


Primary Key (esmane võti)

Primary key on iga kirje unikaalne identifikaator tabelis.
Ühes tabelis võib olla ainult üks esmavõti.
See ei tohi sisaldada NULL-väärtust ja peab olema unikaalne.

Näide (tabel „Üliõpilased“):

Tabelite loomise kood:

CREATE TABLE Uliopilased (
ID_uliopilane INT PRIMARY KEY,
Nimi TEXT,
Grupp TEXT
);

INSERT INTO Uliopilased (ID_uliopilane, Nimi, Grupp)
VALUES (1, 'Eldar', 'A1'),
(2, 'Nikita', 'B1');

SELECT * FROM Uliopilased;

Siin on ID_üliõpilane Primary Key.

Erinevus: Primary key on tabeli peamine unikaalne identifikaator.


Foreign Key (väline võti)

Foreign key on viide teise tabeli esmavõtmele.
See loob tabelite vahel seoseid (näiteks üliõpilaste ja nende hinnete vahel).

Näide:

Tabelite loomise kood:

CREATE TABLE Hinded (
ID_hinne INT PRIMARY KEY,
Hinne INT,
ID_uliopilane INT,
FOREIGN KEY (ID_uliopilane) REFERENCES Uliopilased(ID_uliopilane)
);

INSERT INTO Hinded (ID_hinne, Hinne, ID_uliopilane)
VALUES (1, 5, 1),
(2, 4, 2);

SELECT * FROM Hinded;;

Siin on ID_üliõpilane Foreign Key, mis viitab tabeli „Üliõpilased“ ID_üliõpilane-le.

Erinevus: Foreign key loob tabelite vahel seose, erinevalt Primary Key-st, mis tuvastab kirje ainult ühes tabelis.


Unique Key (unikaalne võti

Unique key tagab, et väärtus veerus oleks unikaalne, kuid erinevalt Primary Key-st võib tabelis olla mitu unikaalset võtit.
See võib sisaldada NULL-väärtusi.

Näide:

Tabelite loomise kood:

CREATE TABLE Kontaktid (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20)
);

INSERT INTO Kontaktid (ID, Email, Telefon)
VALUES (1, 'khabib@mail.com', '555111'),
(2, 'nikitos@mail.com', '555222');

SELECT * FROM Kontaktid;

Siin võib Email olla Unique Key, et e-posti aadressid ei korduks.

Erinevus: Unique Key võib sisaldada NULL-väärtusi ja ei pruugi olla tabeli peamine võti.\


Simple Key (lihtne võti)

Lihtne võti koosneb ainult ühest veerust, mis suudab unikaalselt tuvastada kirje.

Näide:

Tabelite loomise kood:

CREATE TABLE Uliopilased_Simple (
ID_uliopilane INT PRIMARY KEY,
Nimi VARCHAR(50),
Grupp VARCHAR(10)
);

INSERT INTO Uliopilased_Simple (ID_uliopilane, Nimi, Grupp)
VALUES (
1, 'Nikita', 'C2'),
(2, 'Eldar', 'A1'
);

SELECT * FROM Uliopilased_Simple;

Erinevus: Kui võti koosneb ainult ühest atribuudist, on see lihtne. Kui mitmest, on see koostatud võti (composite/compound).


Composite Key (koostatud võti)

Composite key koosneb kahest või enamast veerust, mis koos tagavad kirje unikaalsuse.

Näide (hinnete tabel):

Tabelite loomise kood:

CREATE TABLE Hinded2 (
ID_aine INT,
ID_uliopilane INT,
Hinne INT,
PRIMARY KEY (ID_aine, ID_uliopilane)
);

INSERT INTO Hinded2 (ID_aine, ID_uliopilane, Hinne)
VALUES
(1, 1, 5),
(1, 2, 4);

SELECT * FROM Hinded2;

Unikaalsus tekib ID_aine + ID_üliõpilane kombinatsioonist.


Compound Key (koostatud/komponeeritud võti)

Compound key sarnaneb composite key-ga — see koosneb mitmest veerust, kuid mitte kõik veerud ei pruugi olla iseseisvalt unikaalsed.
Mõnikord peetakse mõlemaid termineid sünonüümideks.

Näide:

Tabelite loomise kood:

CREATE TABLE Inimesed_Compound (
Nimi VARCHAR(50),
Perekonnanimi VARCHAR(50),
Sunnikuupaev DATE,
PRIMARY KEY (Nimi, Perekonnanimi, Sunnikuupaev)
);

INSERT INTO Inimesed_Compound (Nimi, Perekonnanimi, Sunnikuupaev)
VALUES (
'Nikita', 'Orlenko', '2008-10-10'),
('Eldar', 'Petrov', '2002-08-10'
);

SELECT * FROM Inimesed_Compound;

Superkey (ülevõti)

Superkey on kõikide atribuutide kombinatsioon, mis suudab unikaalselt tuvastada kirje.
Iga Primary Key on Superkey, kuid iga Superkey ei ole Primary Key.

Näide:

Tabelite loomise kood:

CREATE TABLE Inimesed (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Inimesed (ID, Email, Telefon)
VALUES(
1, 'nikitos@mail.com', '555111'),
(2, 'eldar@mail.com', '555222'
);

SELECT * FROM Inimesed;

ID, Email, Telefon — kõik need on Superkey, kuna iga väli eraldi tagab kirje unikaalsuse.


Candidate Key (kandidaatvõti)

Candidate key on potentsiaalne võti, mis võib saada Primary Key-ks.
Kõigist kandidaatvõtmetest valitakse üks, mis saab Primary Key-ks.

Näide:

Tabelite loomise kood:

CREATE TABLE Kandidaadid (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Kandidaadid (ID, Email, Telefon)
VALUES (
1, 'nikitos@mail.com', '555111'
);
SELECT * FROM Kandidaadid

Kandidaatvõtmed: ID, Email, Telefon
Valitud Primary Key: ID


Alternate Key (alternatiivvõti)

Alternate key on kandidaatvõti, mida ei valitud esmase võtmena.

Näide:

Tabelite loomise kood:

CREATE TABLE Alternatiivsed (
ID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20) UNIQUE
);

INSERT INTO Alternatiivsed (ID, Email, Telefon)
VALUES (
1, 'nikitos@mail.com', '555111')


SELECT * FROM Alternatiivsed;

Allikad