Datu bāzu attiecības

Attiecības ar datu bāzēm ir visu relāciju datu bāzu mugurkauls

Starp divām datu bāzes tabulām ir izveidotas attiecības, ja vienai tabulai ir ārējā atslēga, kas atsaucas uz citas tabulas primāro atslēgu. Šis ir termins relāciju datu bāzes pamatkoncepcija.

Kā ārvalstu valoda strādā, lai izveidotu attiecības

Apskatīsim primāro un ārējo atslēgu pamatus. Primārais taustiņš unikāli identificē katru ierakstu tabulā. Tas ir kandidātu atslēgas veids, kas parasti ir pirmā tabulas kolonna, un to var automātiski izveidot datubāze, lai nodrošinātu, ka tā ir unikāla.

Ārzemju 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 māca kādā kursā.

Šeit Kursu tabulas galvenā atslēga ir Course_ID. Tās ārējā atslēga ir Teacher_ID:

Kursi
Kurss_ID Kursa nosaukums Teacher_ID
Kurss_001 Bioloģija Teacher_001
Course_002 Matemātika Teacher_001
Course_003 Angļu Teacher_003

Jūs varat redzēt, ka svešvalodas kursi atbilst primārajam atslēgu skolotājos:

Skolotāji
Teacher_ID Skolotāja vārds
Teacher_001 Karmena
Teacher_002 Veronika
Teacher_003 Jorge

Var teikt, ka svešvalodas Teacher_ID ir palīdzējusi izveidot attiecības starp kursiem un Skolotāju tabulām.

Datubāzu attiecību veidi

Izmantojot ārējās atslēgas vai citas kandidātu atslēgas, varat izmantot trīs veidu attiecības starp tabulām:

Pakalpojums "viens pret viens" : šāda veida attiecības ļauj tikai vienu ierakstu katrā attiecību pusē.

Primārais taustiņš attiecas tikai uz vienu ierakstu - vai nē - citā tabulā. Piemēram, laulībā katram laulātajam ir tikai viens cits laulātais. Šāda veida attiecības var īstenot vienā tabulā un tādēļ neizmanto ārēju atslēgu.

Viens-pret-daudz : attiecības "viens pret daudz" ļauj vienā ierakstā vienā tabulā saistīt ar vairākiem ierakstiem citā tabulā.

Apsveriet uzņēmumu ar datubāzi, kurā ir tabulas "Klienti un pasūtījumi".

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ādēļ Pasūtījumu tabulā būtu ietverta ārējā atslēga, kas sakrita ar klientu tabulas primāro atslēgu, bet Klientiem tabulā nebūtu ārējās atslēgas, kas norāda uz Pasūtījumu tabulu.

Multi-to-many : šī ir sarežģīta saistība, kurā daudzi ieraksti tabulā var saistīt ar daudziem ierakstiem citā tabulā. Piemēram, mūsu biznesam, iespējams, ir vajadzīgi ne tikai Klienti un Pasūtījumu tabulas, bet, iespējams, arī nepieciešama produktu tabula.

Atkal, attiecības starp Klientiem un Pasūtījumu tabulu ir viens pret daudziem, taču apsveriet saikni starp tabulu Rīkojumi un Preces. Pasūtījumā var būt vairāki produkti, un produktu var saistīt ar vairākiem pasūtījumiem: vairāki klienti var iesniegt pasūtījumu, kurā ir daži no tiem pašiem produktiem. Šāda veida attiecības prasa vismaz trīs tabulas.

Kas ir datu bāzu attiecības svarīgas?

Konsekventu attiecību izveidošana starp datu bāzes tabulām palīdz nodrošināt datu integritāti, veicinot datu bāzes normalizēšanu. Piemēram, ko tad, ja mēs nesaistītu nevienu tabulu ar svešvalodas palīdzību, tā vietā vienkārši apvienojām datus kursu un skolotāju tabulās, piemēram:

Skolotāji un kursi
Teacher_ID Skolotāja vārds Kurss
Teacher_001 Karmena Bioloģija, matemātika
Teacher_002 Veronika Matemātika
Teacher_003 Jorge Angļu

Šis dizains ir neelastīgs un pārkāpj pirmo datu bāzes normalizēšanas principu, First Normal Form (1NF), kas nosaka, ka katrai tabulas šūnai jābūt vienai atsevišķai datu vienībai.

Vai varbūt mēs nolēmām vienkārši pievienot otro ierakstu Carmen, lai ieviestu 1NF:

Skolotāji un kursi
Teacher_ID Skolotāja vārds Kurss
Teacher_001 Karmena Bioloģija
Teacher_001 Karmena Matemātika
Teacher_002 Veronika Matemātika
Teacher_003 Jorge Angļu

Tas joprojām ir vājš dizains, radot nevajadzīgu dublēšanos un ko sauc par datu ievietošanas anomālijām , kas tikai nozīmē, ka tas varētu veicināt neatbilstošus datus.

Piemēram, ja skolotājam ir vairāki ieraksti, kas, 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 līdzekļa, lai to identificētu vai izvairītos no tā.

Pārtraucot šo tabulu divās tabulās, Skolotāji un Kursi (kā vizualizēti iepriekš), izveido pienācīgu attiecību starp datiem un tādējādi palīdz nodrošināt datu konsekvenci un precizitāti.