Andmebaasi võtmed (Keys)

1. Primary Key (Primaarvõti)

Definitsioon:
Primaarvõti on veerg (või veerud), mis identifitseerib iga tabeli rea unikaalselt.

Milleks kasutatakse:

  • tagab, et igal real on unikaalne identiteet
  • ei tohi sisaldada NULL väärtusi

Erinevus:

  • ainult üks primaarvõti tabeli kohta
  • alati unikaalne + NOT NULL

Näide:

CREATE TABLE Opilased (
    opilane_id INT PRIMARY KEY,
    nimi VARCHAR(50),
    vanus INT
);

2. Foreign Key (Võõrvõti)

Definitsioon:
Võõrvõti on veerg, mis viitab teise tabeli primaarvõtmele.

Milleks kasutatakse:

  • loob seose tabelite vahel
  • tagab andmete tervikluse

Erinevus:

  • võib korduda
  • võib olla NULL (kui pole määratud teisiti)

Näide:

CREATE TABLE Kursused (
    kursus_id INT PRIMARY KEY,
    nimetus VARCHAR(50)
);

CREATE TABLE Registreerimised (
    reg_id INT PRIMARY KEY,
    opilane_id INT,
    kursus_id INT,
    FOREIGN KEY (kursus_id) REFERENCES Kursused(kursus_id)
);

3. Unique Key (Unikaalne võti)

Definitsioon:
Tagab, et kõik väärtused veerus on unikaalsed.

Milleks kasutatakse:

  • väldib duplikaate
  • nt emailid, isikukoodid

Erinevus:

  • võib sisaldada NULL väärtusi
  • tabelis võib olla mitu unique key’d

Näide:

CREATE TABLE Kasutajad (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);

4. Simple Key (Lihtvõti)

Definitsioon:
Võti, mis koosneb ühest veerust.

Milleks kasutatakse:

  • lihtne identifitseerimine

Erinevus:

  • ainult üks atribuut
  • vastand composite key’le

Näide:

CREATE TABLE Raamatud (
    isbn VARCHAR(20) PRIMARY KEY,
    pealkiri VARCHAR(100)
);

5. Composite Key (Liitvõti)

Definitsioon:
Primaarvõti, mis koosneb mitmest veerust.

Milleks kasutatakse:

  • kui üks veerg ei ole piisav unikaalsuseks

Erinevus:

  • koosneb mitmest atribuudist
  • erineb simple key’st

Näide:

CREATE TABLE Hinded (
    opilane_id INT,
    aine_id INT,
    hinne INT,
    PRIMARY KEY (opilane_id, aine_id)
);

6. Compound Key

Definitsioon:
Sageli kasutatakse sünonüümina composite key’le (mitmest veerust koosnev võti).

Milleks kasutatakse:

  • sama eesmärk nagu composite key

Erinevus:

  • mõnes kontekstis rõhutab, et kõik osad on vajalikud

Näide:

CREATE TABLE Tellimused (
    tellimus_id INT,
    toode_id INT,
    kogus INT,
    PRIMARY KEY (tellimus_id, toode_id)
);

7. Superkey

Definitsioon:
Üks või mitu veergu, mis identifitseerivad rea unikaalselt.

Milleks kasutatakse:

  • teoreetiline mõiste (andmebaasi disainis)

Erinevus:

  • võib sisaldada üleliigseid atribuute
  • candidate key on selle minimaalne versioon

Näide:

(opilane_id)
(opilane_id, nimi)
(opilane_id, nimi, vanus)

8. Candidate Key (Kandidaatvõti)

Definitsioon:
Minimaalne superkey – väikseim võimalik unikaalne võti.

Milleks kasutatakse:

  • primaarvõtme valimiseks

Erinevus:

  • ei sisalda üleliigseid veerge

Näide:

CREATE TABLE Toootajad (
    isikukood VARCHAR(11) UNIQUE,
    email VARCHAR(100) UNIQUE,
    nimi VARCHAR(50)
);

9. Alternate Key (Alternatiivvõti)

Definitsioon:
Candidate key, mida ei valitud primaarvõtmeks.

Milleks kasutatakse:

  • täiendavaks unikaalsuse tagamiseks

Erinevus:

  • ei ole primary key
  • on siiski UNIQUE

Näide:

CREATE TABLE Toootajad (
    tootaja_id INT PRIMARY KEY,
    isikukood VARCHAR(11) UNIQUE,
    email VARCHAR(100) UNIQUE
);

ALLIKAD:

Database System Concepts (Silberschatz)

MySQL Documentation – https://dev.mysql.com/doc/