Osnovni ključevi koji olakšavaju upravljanje bazama podataka

Tipke baze podataka najlakši su način stvaranja učinkovite relacijske baze podataka

Kao što već znate, baze podataka koriste tablice za organiziranje informacija. (Ako nemate osnovno poznavanje koncepata baze podataka, pročitajte Što je baza podataka? ) Svaka se tablica sastoji od niza redaka, od kojih svaka odgovara jednom zapisu baze podataka. Dakle, kako baze podataka zadržavaju sve te zapise ravno? To je pomoću ključeva.

Primarni ključevi

Prva vrsta ključa o kojoj ćemo raspravljati primarni je ključ . Svaka tablica baze podataka trebala bi imati jedan ili više stupaca koji su označeni kao primarni ključ . Vrijednost ovog ključa mora biti jedinstvena za svaki zapis u bazi podataka.

Na primjer, pretpostavimo da imamo tablicu pod nazivom Zaposlenici koji sadrži podatke o osoblju za svakog zaposlenika u našoj tvrtki. Trebali bismo odabrati odgovarajući primarni ključ koji bi jedinstveno identificirao svakog zaposlenika. Vaša prva misao može biti upotreba imena zaposlenika. To ne bi bilo dobro jer je zamislivo da biste zaposlili dva zaposlenika s istim imenom. Bolji izbor može biti korištenje jedinstvenog ID broja zaposlenika koji dodijelite svakom zaposleniku kada se unajmljuju. Neke organizacije odluče koristiti brojeve socijalnog osiguranja (ili slične državne identifikatore) za ovaj zadatak jer svaki zaposlenik već ima jedan i jamči da su jedinstveni. Međutim, upotreba brojeva socijalne sigurnosti za tu svrhu vrlo je kontroverzna zbog zabrinutosti zbog privatnosti. (Ako radite za vladinu organizaciju, upotreba broja socijalnog osiguranja može biti čak i nezakonita prema Zakonu o privatnosti iz 1974.). Zbog toga se većina organizacija prebacila na upotrebu jedinstvenih identifikatora (ID zaposlenika, studentskog ID-a itd. .) koji ne dijele te probleme vezane uz privatnost.

Kada odlučite o primarnom ključu i postavite bazu podataka, sustav za upravljanje bazom podataka će provesti jedinstvenost ključa.

Ako pokušate umetnuti zapis u tablicu s primarnim ključem koji duplicira postojeći zapis, umetak neće uspjeti.

Većina baza podataka također može generirati vlastite primarne ključeve. Microsoft Access, na primjer, može biti konfiguriran za korištenje vrste podataka AutoNumber da bi dodijelio jedinstveni ID svakom rekordu u tablici. Iako je učinkovita, to je loša dizajnerska praksa jer vam ostavlja beznačajnu vrijednost u svakom zapisu u tablici. Zašto ne biste koristili taj prostor za pohranu nešto korisno?

Strani ključevi

Druga vrsta je strani ključ koji se koristi za stvaranje odnosa između tablica. Prirodni odnosi postoje između tablica u većini struktura baze podataka. Vraćajući se našoj bazi podataka zaposlenika, zamislite da bismo htjeli dodati tablicu koja sadrži podatke o odjelima u bazu podataka. Ova nova tablica može se nazvati Odjeli i sadržavati će veliku količinu informacija o odjelu kao cjelini. Također bismo željeli uključiti informacije o zaposlenicima u odjelu, ali bi bilo suvišno imati iste podatke u dvije tablice (Zaposlenici i odjeli). Umjesto toga, možemo stvoriti odnos između dvaju tablica.

Pretpostavimo da tablica Odjela upotrebljava stupac Naziv odjela kao primarni ključ. Da biste stvorili vezu između dviju tablica, dodajemo novi stupac u tablicu Zaposlenici pod nazivom Odjel. Zatim popuniti naziv odjela na kojem svaki zaposlenik pripada. Također obavještavamo sustav upravljanja bazom podataka da je stupac Odjeljka u tablici Zaposlenici strani ključ koji se odnosi na tablicu Odjela.

Baza podataka će potom provesti referencijalni integritet tako što će osigurati da sve vrijednosti u stupcu Odjela tablice Zaposlenici imaju odgovarajuće stavke u tablici Odjela.

Imajte na umu da ne postoji ograničenje jedinstvenosti za stranog ključa. Možemo (i najvjerojatnije) imati više od jednog zaposlenika koji pripada jednom odjelu. Slično tome, ne postoji zahtjev da unos u tablicu Odjela ima bilo koji odgovarajući unos u tablici Zaposlenici. Moguće je da imamo odjel bez zaposlenika.

Više o ovoj temi potražite u odjeljku Stvaranje stranih ključeva .