1. Primaarvõti (Primary Key)
- Definitsioon: See on tulbas olev unikaalne tunnus, mis tuvastab kindlalt iga rea andmebaasi tabelis.
- Milleks kasutatakse: Selle abil saab andmebaasihaldur (DBMS) ridade vahel vahet teha ja tagada, et andmed ei korduks.
- Erinevus: Tabelis saab olla ainult üks primaarvõti ning see ei tohi kunagi olla tühi (NULL).
- SQL näide:
CREATETABLE kasutajad ( kasutaja_id SERIAL PRIMARYKEY,-- Primaarvõti eesnimi VARCHAR(100));

2. Võõrvõti (Foreign Key)
- Definitsioon: Tulp või tulbad, mis viitavad teise tabeli primaarvõtmele.
- Milleks kasutatakse: Kasutatakse tabelite vaheliste seoste loomiseks ja viitetervikluse (referential integrity) tagamiseks.
- Erinevus: Erinevalt primaarvõtmest võib võõrvõtme väärtus tabelis korduda (nt ühel autoril on mitu raamatut).
- SQL näide:
createtable products(product_id intprimarykeyidentity(1,1),product_name varchar(50)notnull,brand_id int,category_id int,foreignkey(category_id)references categories(category_id),model_year int,list_price decimal(7,2));

phpMy Admidinis MUL = FK
3. Unikaalne võti (Unique Key)
- Definitsioon: Piirang, mis tagab, et kõik väärtused tulbas on üksteisest erinevad.
- Milleks kasutatakse: Et vältida topeltandmeid (nt e-posti aadressid või isikukoodid), mis ei ole tabeli peamiseks võtmeks.
- Erinevus: Erinevalt primaarvõtmest võib unikaalne võti sisaldada tühja väärtust (NULL).
- SQL näide:
createtable customers(customer_id intprimarykey AUTO_INCREMENT,first_name varchar(30)notnull,last_name varchar(30)notnull,email varchar(30)unique-- Unikaalne võti);

4. Lihtne võti (Simple Key)
- Definitsioon: Võti (tavaliselt primaarvõti), mis koosneb ainult ühest tulbast.
- Milleks kasutatakse: Kõige tavalisem viis andmete märgistamiseks, näiteks unikaalne ID-number.
- Erinevus: Koosneb ühest väljast, samas kui liitvõtmed vajavad mitut välja.
- SQL näide:
CREATE TABLE tooted (
toote_kood INT PRIMARY KEY AUTO_INCREMENT-- Lihtne võti
);
5. Liitvõti (Composite Key)
- Definitsioon: Võti, mis koosneb kahest või enamast tulbast, mis koos moodustavad unikaalse tunnuse.
- Milleks kasutatakse: Kasutatakse siis, kui üks tulp üksi ei suuda rida unikaalselt tuvastada (nt eesnimi ja perekonnanimi koos).
- Erinevus: See on alati kombinatsioon mitmest väljast.
- SQL näide:
CREATETABLE piletid ( saali_nr INT, istekoha_nr INT,PRIMARYKEY(saali_nr, istekoha_nr)-- Liitvõti);

6. Sõltuv liitvõti (Compound Key)
- Definitsioon: Liitvõti, kus iga selle osa on eraldiseisev võõrvõti, mis viitab mõnele muule tabelile.
- Milleks kasutatakse: Kasutatakse seosetabelites (nt õpilaste ja kursuste vahel), et näidata, millised objektid on omavahel seotud.
- SQL näide:
CREATETABLE stocks ( store_id INT, product_id INT, quantity INT,PRIMARYKEY(store_id, product_id)--Compound Key);

7. Supervõti (Superkey)
- Definitsioon: Mis tahes tulbade komplekt tabelis, mis võimaldab rida unikaalselt tuvastada.
- Milleks kasutatakse: See on teoreetiline mõiste, et leida kõik võimalikud kombinatsioonid, mis rida eristavad.
- Erinevus: Võib sisaldada ka “liigseid” tulpasid, mis ei ole unikaalsuse jaoks tegelikult vajalikud.
- Naide: (customer_id, first_name) on supervõti, sest customer_id on juba unikaalne ning first_name on sellele lihtsalt lisatud lisaatribuut.
createtable customers(customer_id intprimarykey AUTO_INCREMENT,first_name varchar(30)notnull,last_name varchar(30)notnull,email varchar(30)unique-- Unikaalne võti ja supervõti);
8. Potentsiaalne võti (Candidate Key)
- Definitsioon: Minimaalne supervõti ehk võti, millest ei saa enam ühtegi tulpa eemaldada, ilma et unikaalsus kaoks.
- Milleks kasutatakse: Nende hulgast valitakse tavaliselt välja üks, millest saab tabeli primaarvõti.
- Erinevus: Ei sisalda kunagi üleliigseid andmeid, erinevalt supervõtmest.
createtable customers(customer_id intprimarykey AUTO_INCREMENT,-- Candidate Key first_name varchar(30)notnull,last_name varchar(30)notnull,email varchar(30)unique-- Candidate Key street varchar(30),city varchar(30),_statevarchar(30),zip_code varchar(10));
| Võtme tüüp (Võtme liik) | Tulvade komplekt (Veerud) | Selgitus (Miks see nii on?) |
| Candidate Key (Potentsiaalne võti) | customer_id | Minimaalne ja unikaalne komplekt. Selles puuduvad liigsed andmed. |
| Candidate Key (Potentsiaalne võti) | email | Minimaalne ja unikaalne tänu unique piirangule. Sobib rearea unikaalseks tuvastamiseks. |
| Superkey (Supervõti) | customer_id + last_name | See on unikaalne komplekt, kuid sisaldab liigset infot (perekonnanimi). |
| Superkey (Supervõti) | email + street | Unikaalne tänu e-mailile, kuid tänavanimi on tuvastamiseks mittevajalik lisa. |
| Mitte mingi võti | first_name + last_name | Ei taga unikaalsust, kuna andmebaasis võib olla mitu sama ees- ja perekonnanimega inimest. |
9. Alternatiivne võti (Alternate Key)
- Definitsioon: Potentsiaalne võti, mida ei valitud tabeli primaarvõtmeks.
- Milleks kasutatakse: See jääb tabelisse toimima unikaalse võtmena (Unique Key).
- Erinevus: See on “varuvõti” – kui meil on ID ja Email, ning ID on primaarvõti, siis Email on alternatiivne võti.
createtable customers(customer_id intprimarykey AUTO_INCREMENT,-- primary keyfirst_name varchar(30)notnull,last_name varchar(30)notnull,email varchar(30)unique-- Alternate Keystreet varchar(30),city varchar(30),_statevarchar(30),zip_code varchar(10));