Kas ir datu bāzes attiecības?

Satura rādītājs:

Kas ir datu bāzes attiecības?
Kas ir datu bāzes attiecības?
Anonim

Attiecības tiek izveidotas starp divām datu bāzes tabulām, ja viena tabula izmanto ārējo atslēgu, kas atsaucas uz citas tabulas primāro atslēgu. Šis ir termina relāciju datubāze pamatjēdziens.

Kā ārējā atslēga darbojas, lai izveidotu attiecības

Primārā atslēga unikāli identificē katru ierakstu tabulā. Tas ir kandidāta atslēgas veids, kas parasti ir tabulas pirmā kolonna, un to var automātiski ģenerēt datu bāze, lai nodrošinātu, ka tā ir unikāla. Ārējā atslēga ir cita kandidāta atslēga (nevis primārā atslēga), ko izmanto, lai saistītu ierakstu ar datiem citā tabulā.

Piemēram, apsveriet šīs divas tabulas, kurās norādīts, kurš skolotājs kuru kursu māca. Šeit tabulas Kursi primārā atslēga ir Course_ID. Tās ārējā atslēga ir Teacher_ID:

Kursa_ID Kursa_nosaukums Skolotāja_ID
Kurss_001 Bioloģija Skolotājs_001
Kurss_002 Math Skolotājs_002
Kurss_003 angļu valoda Skolotājs_003

Var redzēt, ka kursi ārējā atslēga atbilst primārajai atslēgai sadaļā Skolotāji:

Skolotāja_ID Skolotāja_vārds
Skolotājs_001 Karmena
Skolotājs_002 Veronika
Skolotājs_003 Jorge

Varam teikt, ka skolotāja_ID ārējā atslēga palīdzēja izveidot saistību starp kursiem un skolotāju tabulām.

Image
Image

Datu bāzu attiecību veidi

Izmantojot ārējās atslēgas vai citas iespējamās atslēgas, varat ieviest trīs veidu attiecības starp tabulām:

Viens pret vienu

Šāda veida attiecības pieļauj tikai vienu ierakstu katrā attiecību pusē. Primārā atslēga attiecas tikai uz vienu ierakstu (vai nevienu) citā tabulā. Piemēram, laulībā katram laulātajam ir tikai viens otrs laulātais. Šāda veida attiecības var ieviest vienā tabulā, un tāpēc tajā netiek izmantota ārējā atslēga.

Viens pret daudziem

Attiecības viens pret daudziem ļauj vienu ierakstu vienā tabulā saistīt ar vairākiem ierakstiem citā tabulā. Apsveriet iespēju izveidot uzņēmumu ar datu bāzi, kurā ir klientu un pasūtījumu tabulas.

Viens klients var iegādāties vairākus pasūtījumus, taču vienu pasūtījumu nevarēja saistīt ar vairākiem klientiem. Tāpēc tabulā Pasūtījumi būtu ārējā atslēga, kas atbilstu tabulas Klienti primārajai atslēgai, savukārt tabulā Klienti nebūtu ārējās atslēgas, kas norādītu uz tabulu Pasūtījumi.

Daudzi pret daudziem

Šīs ir sarežģītas attiecības, kurās daudzi ieraksti tabulā var saistīt ar daudziem ierakstiem citā tabulā. Piemēram, mūsu uzņēmumam, iespējams, ir vajadzīgas klientu un pasūtījumu tabulas, kā arī produktu tabula.

Atkal, attiecības starp tabulu Klienti un pasūtījumi ir viens pret daudziem, taču ņemiet vērā saistību starp tabulu Pasūtījumi un produkti. Pasūtījumā var būt vairāki produkti, un produkts var būt saistīts ar vairākiem pasūtījumiem, jo vairāki klienti var iesniegt pasūtījumu, kurā ir daži no tiem pašiem produktiem. Šāda veida attiecībām ir nepieciešamas vismaz trīs tabulas.

Kāpēc datu bāzu attiecības ir svarīgas?

Konsekventu attiecību izveide starp datu bāzes tabulām palīdz nodrošināt datu integritāti, veicinot datu bāzes normalizēšanu. Piemēram, kā būtu, ja mēs nesaistītu nevienu tabulu, izmantojot ārējo atslēgu, bet tā vietā apvienotu datus tabulās Kursi un skolotāji, piemēram:

Skolotāja_ID Skolotāja_vārds Kurss
Skolotājs_001 Karmena Bioloģija, matemātika
Skolotājs_002 Veronika Math
Skolotājs_003 Jorge angļu valoda

Šis dizains ir neelastīgs un pārkāpj pirmo datu bāzes normalizācijas principu - pirmo normālo formu, kas nosaka, ka katrā tabulas šūnā ir jāietver viens, diskrēts datu fragments.

Vai varbūt mēs nolēmām pievienot otru Karmenas ierakstu, lai īstenotu 1NF:

Skolotāja_ID Skolotāja_vārds Kurss
Skolotājs_001 Karmena Bioloģija
Skolotājs_001 Karmena Math
Skolotājs_002 Veronika Math
Skolotājs_003 Jorge angļu valoda

Šis joprojām ir vājš dizains, kas rada nevajadzīgu dublēšanos un tā sauktās datu ievietošanas anomālijas, kas nozīmē, ka tas var veicināt pretrunīgus datus. Piemēram, ja skolotājam ir vairāki ieraksti, ko darīt, ja daži dati ir jārediģē, bet persona, kas veic datu rediģēšanu, neapzinās, ka pastāv vairāki ieraksti? Tad tabulā būtu ietverti dažādi dati par vienu un to pašu personu, bez skaidra veida, kā to identificēt vai izvairīties no tā.

Sadalot šo tabulu divās tabulās - skolotāji un kursi, tiek izveidotas pareizas attiecības starp datiem un tādējādi tiek nodrošināta datu konsekvence un precizitāte.

Ieteicams: