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
- Tunnimaterjalid teemal „Andmebaasid“
- Õpik: Andmebaasid ja SQL
- https://www.geeksforgeeks.org/types-of-keys-in-database
- https://www.w3schools.com/sql/
- https://chat.openai.com/

