Rozdział 9. ♦ Podstawy MySQL 259
♦ jeden do jednego,
♦ jeden do wielu,
♦ wiele do wielu.
W przypadku relacji jeden do jednego jednemu rekordowi (wierszowi) z tabeli X odpowiada dokładnie jeden rekord z tabeli Y. Z taką sytuacją moglibyśmy mieć do czynienia na przykład wtedy, gdyby w jednej tabeli zapisać imiona i nazwiska osób, a w innej tabeli numery PESEL (rysunek 9.21). Jak wiadomo, każda osoba ma przypisany unikalny numer PESEL, a zatem będzie tu występowała relacja typu jeden do jednego. Oczywiście od razu należałoby przyjąć założenie, że nie będziemy przechowywać danych obywateli innych państw, którzy PESEL-i nie posiadają.
Osobald |
Imię |
Nazwisko |
Data urodzenia |
1 |
Jan |
Kowalski |
1970-01-01 |
2 |
Jan |
Kowalski |
1970-01-01 |
3 |
Andrzej |
Nowak |
1971-02-02 |
4 |
Anna |
Jabłońska |
1972-03-03 |
i PESEL
01234567890
01234567891
01234567892
01234567893
Rysunek 9.21.
Pomiędzy tymi tabelami występuje relacja jeden do jednego
W przypadku relacji jeden do wielu jednemu rekordowi (wierszowi) z tabeli X może odpowiadać jeden lub więcej rekordów z tabeli Y, ale — uwaga—jednemu wierszowi z tabeli Y odpowiada dokładnie jeden wiersz z tabeli X. Z taką sytuacją już mieliśmy do czynienia. Spójrzmy ponownie na rysunek 9.20. Znajdują się na nim dwie tabele, z których pierwsza opisuje klientów, a druga złożone przez tych klientów zamówienia. Jeden klient może złożyć wiele zamówień, ale jedno zamówienie może należeć tylko do jednego klienta. A zatem jest to relacja jeden do wielu (lub też odwrotnie — wiele do jednego).
Przypadek trzeci jest bardziej złożony. Otóż relacja wiele do wielu ma miejsce wówczas, gdy jednemu wierszowi z tabeli X może odpowiadać wiele wierszy z tabeli Y, oraz jednemu wierszowi z tabeli Y może odpowiadać wiele wierszy z tabeli X. Kiedy występuje taka sytuacja? Na przykład wtedy, gdy chcemy zapisać w bazie dane dotyczące książek i autorów. Wiadomo bowiem, że każda książka może mieć jednego lub więcej autorów, ale także każdy autor mógł napisać jedną lub wiele książek. Jest to więc typowa relacja wiele do wielu. Jak taką sytuację odzwierciedlić w praktyce w bazie danych? Osobom, które nie miały dotychczas do czynienia z tworzeniem baz danych, może się nasunąć pomysł, aby utworzyć dwie tabele: KSIĄŻKI i AUTORZY, i w tabeli KSIĄŻKI umieścić dwie lub trzy kolumny odwołujące się do tabeli AUTORZY. Tabele miałyby więc postać taką, jak na rysunku 9.22.
Książki
Rysunek 9.22.
Książka Id
Tytuł
Autorlld
Autor2ld
Autor3ld
Autorld
Imię
Nazwisko
Błędne rozwiązanie problemu relacji wiele do wielu