DATABASE KEYS

Primary Key

Andmebaaside primaarvõti. See on veerg või veergude rühm, mis identifitseerib unikaalselt iga rea ​​(kirje) tabelis. See peab sisaldama unikaalseid väärtusi ja ei tohi sisaldada NULL-väärtust. Selle peamine eesmärk on tagada andmete terviklikkus ja vältida dubleerimist.

Seda eristab asjaolu, et:

  • Primaarse tabeli identifikaator
  • Ainult üks
  • Ei saa olla NULL

Millal kasutada:
Kui vajate rea jaoks esmast unikaalset identifikaatorit.

Foreign Key

Võõrvõti on relatsioonandmebaaside terviklikkuse piirang, mis seob ühe tabeli veeru või veergude rühma primaarvõtmega (PRIMARY KEY) või unikaalse võtmega teises tabelis, tagades andmete referentsiaalse terviklikkuse.

Seda eristab asjaolu, et:

  • Garanteerib ainulaadsust
  • Kuid see pole peamine isikutunnistus.
  • Võib olla mitu

Millal kasutada:
Kui teil on vaja tabeleid linkida.

Unique Key

Andmebaasides on unikaalne võti (Unique Key) väljade kogum või üksik veerg, mis tagab iga rea ​​unikaalsed väärtused ja duplikaatide puudumise, nagu kirjeldab Vikipeedia. Erinevalt primaarvõtmest (Primary Key) võib unikaalsel võtmel olla NULL-väärtus.

Millal kasutada:
Kui väli peab olema unikaalne, kuid see ei ole peamine ID.

Simple Key

Lihtvõti on võti, mis koosneb ühest väljast, mis identifitseerib kirje unikaalselt. Lisaks ei saa seda välja jagada teisteks väljadeks. Näiteks studentId on üks täisarv, mis identifitseerib unikaalselt konkreetse õpilase. Kahel õpilasel ei saa olla sama studentId.

Seda eristab asjaolu, et:

  • Koosneb ühest veerust
  • See on omadus, mitte teatud tüüpi piirang.

Millal kasutada: Kui võti koosneb ühest veerust.

Composite Key

Liitvõti on primaarvõti, mis koosneb kahest või enamast veerust, mida kasutatakse koos tabeli kirjete unikaalseks tuvastamiseks. Erinevalt ühest veerust koosnevast primaarvõtmest ühendab liitvõti unikaalsuse tagamiseks väärtusi mitmest veerust.Seda eristab asjaolu, et:

Seda eristab asjaolu, et:

  • Koosneb mitmest veerust
  • Ainulaadsus toimib ainult koos

Millal kasutada:
Kui unikaalsus luuakse mitme veeru kombinatsioonina.

Compound Key

Liitvõtit kasutatakse sageli liitvõtme sünonüümina. Liitvõti – mitu välja, mis on samaaegselt võõrvõtmed.

Seda eristab asjaolu, et:

  • See on liitvõti.
  • Ja selle väljad on võõrvõti

Millal kasutada:
Kui tabel on seotud teiste tabelitega ja võti koosneb nende võõrvõtmest.

Superkey

Supervõti on tabeli ühest või mitmest atribuudist (veergudest) koosnev rühm, mis suudab iga tabeli rida unikaalselt identifitseerida. See tagab, et kahel real pole nendes atribuutides sama väärtuste komplekti.

Seda eristab asjaolu, et:

  • Mis tahes veergude komplekt, mis muudab rea unikaalseks
  • Võib sisaldada lisavälju

Millal kasutada:
See on teooria. Seda ei kasutata koodis otse.

Candidate Key

Kandidaatvõti on minimaalne atribuutide kogum, mis identifitseerib unikaalselt iga kirje (tuple) tabelis. Teisisõnu, tabeli kahel real ei tohiks olla identseid väärtusi veergudes, mis moodustavad kandidaatvõtme. Kandidaatvõti on supervõtme alamhulk. Sellel on oluline roll tabelite vaheliste seoste loomisel ja andmete terviklikkuse säilitamisel. Kandidaatvõtmed on eriti olulised andmebaasi normaliseerimisprotsessis, kuna need aitavad kõrvaldada andmete koondamist ja anomaaliaid.

Seda eristab asjaolu, et:

  • Minimaalne supervõti
  • Lisaveergusid pole
  • Selle hulgast valitakse esmane võti.

Millal kasutada:
Kui stringi tuvastamiseks on mitu unikaalset viisi.

Alternate Key

Alternate Key — это ключ в таблице базы данных, который не выбран в качестве первичного ключа. Это дополнительный ключ, аналогичный первичному, с помощью которого можно получить доступ к данным в таблице. Альтернативный ключ также способен уникально идентифицировать каждую запись в таблице.

Seda eristab asjaolu, et:

  • See on kandidaadi võti.
  • Kuid pole valitud primaarvõtmeks

Millal kasutada:
Kui lisaks primaarvõtmele on ka teisi unikaalseid välju.

Kogu sql kood;

create database Timohawp;
use  Timohawp;

create table Students(
	student_id int primary key identity(1,1),
	student_name varchar(30),
	email varchar(30) UNIQUE
);


insert into Students (student_name, email) values
('Anna', 'anna@mail.com'),
('Ivan', 'ivan@mail.com'),
('Maria', 'maria@mail.com');
select * from Students

create table Courses (
    course_id int primary key,
    course_name VARCHAR(100),
    student_id INT,
    FOREIGN KEY (student_id) REFERENCES Students(student_id)
		);

		insert into Courses (course_id, course_name, student_id) values
(1, 'Math', 1),
(2, 'Physics', 1),
(3, 'History', 2);

		select * from Students

		drop table Students;

create table Exams (
    student_id INT,
    subject_id INT,
    grade CHAR(1),
    PRIMARY KEY (student_id, subject_id),
    FOREIGN KEY (student_id) REFERENCES Students(student_id),
    FOREIGN KEY (subject_id) REFERENCES Subjects(subject_id)
);

INSERT INTO Exams VALUES
(1, 1, 'A'),
(1, 2, 'B'),
(2, 1, 'C');

create table Students2 (
    student_id int primary key,
    email VARCHAR(100) UNIQUE,	
    passport_number VARCHAR(20) UNIQUE,
    name VARCHAR(100)
);

create table Enrollments (
student_id int,
course_id int,
Primary key (student_id, course_id)
);