Docstoc

Chei unice si chei primare

Document Sample
Chei unice si chei primare Powered By Docstoc
					Chei unice si chei primare
In domeniul bazelor de date relationale, o cheie primara (primary key) sau o cheie unica (unique key) sunt cele care identifica in mod unic, fiecare rand dintr-un tabel. Fiecare cheie primara cuprinde o singura coloana sau un set de coloane. Oricare doua randuri dintr-un tabel nu pot avea aceeasi valoare in acele coloane. In functie de felul cum acesta este conceput acestuia, un tabel poate avea mai multe chei unice, dar cel mult o cheie primara. O cheie unica trebuie sa identifice toate randurile posibile care exista intr-un tabel si nu doar randurile care exista la un moment dat. Ex: CNP, ISBN. O cheie primara este un caz particular al cheii unice. Diferenta majora este ca pentru cheile unice, constraint-ul NOT NULL implicit nu este aplicat automat, pe cand la cheile primare, este. Astfel, valorile din coloanele care au chei unice pot fi sau nu NULLE. O alta diferenta este ca “primary keys” trebuiesc definite folosind o alta sintaxa. Cheile unice, precum si cheile primare se pot numi si “chei straine” (foreign keys). Cheie straine In contextul bazelor de date relationale, un o cheie straina (“foreign key”) este un constraint referential intre doua tabele. Cheia straina identifica o coloana sau un set de coloane intr-un tabel care face referinta la o coloana sau un set de coloane dintr-un alt tabel. Coloanele din tabelul care face referinta trebuie sa fie cheia primara in tabelul la care se face referinta. Astfel, un rand din tabelul care face referinta nu poate contine valori care nu exista in tabelul la care se face referinta. Tabelul care face referinta si cel la care se face referinta pot fi acelasi tabel, adica cheia straina face referire la acelasi tabel. O astfel de cheie straina este cunoscuta in SQL-2003 ca o cheie straina de autoreferire sau o cheie straina recursiva. Un tabel poate avea mai multe chei straine si fiecare dintre acestea poate avea un tabel de referinta diferit. Relatii gresite dintre cheie straine si chei primare sau enaplicarea acelor relatii sunt adeseaori cauza promelor ce apar la bazele de date. Ca un exemplu pentru a ilustra cheile straine, sa presupunem ca o baza de date de conturi are un tabel cu facturi si fiecare facture este asociata unui anumit furnizor. Detaliile furnizorilor (adresa, telefon) sunt tinute intr-un alt tabel; fiecare furnizor primeste un “nr. furnizor” pentru a fi identificat. Fiecare inregistrare a facturii are un atriibut care contine numarul furnizoruluipentru acea factura. Apoi, “numarul furnizorului” este cheia primara in tabelul furnizorului. Cheia straina din tabelul cu facturi este in stransa legatura cu acea cheie primara. Schema este urmatoarea:
Furnizor ( NumarFurnizor, Nume, Adresa, Tipul ) Invoices ( NumarFactura, NumarFurnizor, Text )

Ex:
CREATE TABLE Furnizor ( NumarFurnizor INTEGER NOT NULL, Nume VARCHAR(20) NOT NULL, Adresa VARCHAR(50) NOT NULL, Tipul VARCHAR(10), CONSTRAINT furnizor_pk PRIMARY KEY(NumarFurnizor), CONSTRAINT number_value CHECK (NumarFurnizor > 0) ) CREATE TABLE Facturi ( NumarFactura INTEGER NOT NULL, NumarFurnizor INTEGER NOT NULL, Text VARCHAR(4096), CONSTRAINT factura_pk PRIMARY KEY(NumarFactura), CONSTRAINT inumber_value CHECK (NumarFactura > 0), CONSTRAINT furnizor_fk FOREIGN KEY(NumarFurnizor) REFERENCES Furnizor(NumarFurnizor) ON UPDATE CASCADE ON DELETE RESTRICT )


				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:4571
posted:11/11/2008
language:Romanian
pages:2