Skip to main content

Relacje jeden-do-wielu w bazie danych

Baza danych Access tworzenie relacji między tabelami # 13 (Może 2024)

Baza danych Access tworzenie relacji między tabelami # 13 (Może 2024)
Anonim

Relacja jeden-do-wielu w bazie danych występuje, gdy każdy rekord w Tabeli A może mieć wiele powiązanych rekordów w Tabeli B, ale każdy rekord w Tabeli B może mieć tylko jeden odpowiadający rekord w Tabeli A. Relacja jeden do wielu w baza danych jest najczęstszym projektem relacyjnej bazy danych i jest podstawą dobrego projektu.

Zastanów się nad relacją między nauczycielem a kursami, których uczy. Nauczyciel może uczyć wielu kursów, ale kurs nie miałby takiej samej relacji z nauczycielem.

Dlatego dla każdego rekordu w tabeli Nauczycieli może być wiele rekordów w tabeli Kursy. Jest to relacja jeden do wielu: jeden nauczyciel na wiele kursów.

Dlaczego ustanowienie relacji jeden do wielu jest ważne

Aby reprezentować relację jeden-do-wielu, potrzebujesz co najmniej dwóch tabel. Zobaczmy, dlaczego.

Być może stworzyliśmy stół, w którym chcieliśmy nagrać nazwę i nauczane przedmioty. Możemy zaprojektować to tak:

Nauczyciele i kursy
Teacher_IDImię nauczycielaKierunek
Teacher_001CarmenBiologia
Teacher_002VeronicaMatematyka
Teacher_003Jorgejęzyk angielski

Co się stanie, jeśli Carmen naucza dwóch lub więcej kursów? Mamy dwie opcje tego projektu. Moglibyśmy dodać to do istniejącej już płyty Carmen, tak jak poniżej:

Nauczyciele i kursy
Teacher_IDNauczyciel_ImięKierunek
Teacher_001CarmenBiologia, matematyka
Teacher_002VeronicaMatematyka
Teacher_003Jorgejęzyk angielski

Powyższy projekt jest jednak nieelastyczny i może powodować problemy podczas próby wstawienia, edycji lub usunięcia danych.

Utrudnia to wyszukiwanie danych. Ten projekt narusza pierwszą zasadę normalizacji baz danych, pierwszą normalną formę (1NF), która stwierdza, że ​​każda komórka tabeli powinna zawierać pojedynczy, dyskretny kawałek danych.

Inną alternatywą dla projektu może być po prostu dodanie drugiego rekordu dla Carmen:

Nauczyciele i kursy
Nauczyciel_IDNauczyciel_ImięKierunek
Teacher_001CarmenBiologia
Teacher_001CarmenMatematyka
Teacher_002VeronicaMatematyka
Teacher_003Jorgejęzyk angielski

To przylega do 1NF, ale nadal jest kiepskim projektem bazy danych, ponieważ wprowadza redundancję i może niepotrzebnie powiększać bardzo dużą bazę danych. Co ważniejsze, dane mogą stać się niespójne. Na przykład, co jeśli zmieni się imię Carmen? Ktoś, kto pracuje z danymi, może zaktualizować swoją nazwę w jednym rekordzie i nie zaktualizuje jej w drugim rekordzie. Ten projekt narusza drugą normalną formę (2NF), która przylega do 1NF i musi także unikać zwolnień wielu rekordów, oddzielając podzbiory danych na wiele tabel i tworząc relacje między nimi.

Jak zaprojektować bazę danych z jedno do wielu relacji

Aby zaimplementować relację jeden-do-wielu w tabeli Nauczyciele i kursy, dzielimy tabele na dwie i łączymy je za pomocą klucza obcego.

Tutaj usunęliśmy kolumnę Kurs w tabeli Nauczyciele:

Nauczyciele
Nauczyciel_IDNauczyciel_Imię
Teacher_001Carmen
Teacher_002Veronica
Teacher_003Jorge

A oto tabela kursów. Zauważ, że jego klucz obcy, Teacher_ID, łączy kurs z nauczycielem w tabeli Nauczycieli:

Kursy
Identyfikator kursuNazwa kursuTeacher_ID
Course_001BiologiaTeacher_001
Course_002MatematykaTeacher_001
Course_003język angielskiTeacher_003

Rozwinęliśmy relację między tabelą Nauczyciele i Kursy, używając klucza obcego.

To mówi nam, że zarówno biologia, jak i matematyka są nauczane przez Carmen i że Jorge uczy angielskiego.

Możemy zobaczyć, w jaki sposób ten projekt pozwala uniknąć ewentualnych zwolnień, umożliwia poszczególnym nauczycielom nauczanie wielu kursów i wdraża relację jeden-do-wielu.

Bazy danych mogą również implementować relację jeden-do-jednego i relację wiele-do-wielu.