Skip to main content

Kas ir datu bāzu saistība?

Anonim

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 primārā atslēga ir Course_ID. Tās ārējā atslēga ir Teacher_ID:

Kursi
Kurss_IDKursa nosaukumsTeacher_ID
Kurss_001BioloģijaTeacher_001
Course_002MatemātikaTeacher_001
Course_003AngļuTeacher_003

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

Skolotāji
Teacher_IDSkolotāja vārds
Teacher_001Karmena
Teacher_002Veronika
Teacher_003Jorge

Mēs varam teikt, ka Teacher_ID ārējā atslēga 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:

Viens pret vienu: Šī veida attiecības ļauj tikai vienu ierakstu katrā pusē attiecības.

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 daudziem: Attiecības viens pret daudziem ļ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.

Daudzi pret daudziem: Šī ir sarežģīta saistība, kurā daudzi ieraksti tabulā var savienot 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_IDSkolotāja vārdsKurss
Teacher_001KarmenaBioloģija, matemātika
Teacher_002VeronikaMatemātika
Teacher_003JorgeAngļ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_IDSkolotāja vārdsKurss
Teacher_001KarmenaBioloģija
Teacher_001KarmenaMatemātika
Teacher_002VeronikaMatemātika
Teacher_003JorgeAngļu

Tas joprojām ir vājš dizains, kas rada nevajadzīgu dublēšanos un to, ko sauc datu ievietošanas anomālijas , 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.