W tabelach mogą obowiązywać następujące 3 typy relacji :
1:1, czyli jeden do jednego, tzn., że dokładnie jednemu rekordowi z jednej tabeli odpowiada dokładnie jeden rekord z drugiej tabeli, np. dany użytkownik z tabeli users może mieć dokładnie jeden typ użytkownika przypisany z tabeli user_types.
1:M, czyli jeden do wielu, tzn., że dokładnie jeden rekord z jednej tabeli może mieć przypisane więcej rekordów z innej tabeli, np. jeden użytkownik z tabeli users może mieć przydzielone w tabeli user_rights wiele praw z tabeli user_right_types.
M:M, czyli wiele do wielu, tzn., że wiele rekordów z jednej tabeli może mieć przypisane wiele rekordów z drugiej tabeli. Relacji tego typu należy unikać przy budowaniu bazy danych i jeżeli występuje taki typ relacji należy doprowadzić do rozbicia struktury tabeli tak, aby powstała relacja typu 1:N lub 1:1. W opisywanej bazie relacje tego typu nie występują.
Rysunek 3 Typy relacji w tabelach
W opisywanej przeze mnie bazie danych prawie wszystkie relacje są typu 1:M, czyli jeden do wielu. Jednak w kilku tabelach występują relacje typu 1:1, czyli jeden do jednego.
W tabeli users jest tak dla tego gdyż dany użytkownik może mieć tylko jeden przydzielony typ użytkownika z tabeli user_types.
W tabeli rooms dane pomieszczenie może być dokładnie jednego typu, gdyż np. typ „wc” nie może być jednocześnie typem „sala komputerowa ogólnego dostępu”. Choć może się zdarzyć, że sala komputerowa ogólnego dostępu może być salą komputerową do prowadzenia zajęć ze studentami. Nie filozofujmy jednak.
W tabeli computers dany komputer może być także tylko jednego typu, choć możliwe jest, aby np. serwer był jednocześnie komputerem, z którego mogą korzystać studenci na zajęciach.
Jednak w obu przypadkach założenia bazy oraz systemu nie pozwalają na to.
Z kolei w tabeli weather, poszczególne typy czujników nie mogą się powtarzać, gdyż jak wspomniałem wcześniej jest tylko jedna temperatura na dworze, jedna wilgotność powietrza, choć fizycznie czujników temperatury może być np. 6.
W zasadzie tak samo może być odnośnie tabeli sensor_states, lecz w tym przypadku różne typy czujników powtarzają się w tabeli.
Wszystkie relacje, jakie występują w bazie są przedstawione na Rysunek 2
Copyright © 2008-2010 EPrace oraz autorzy prac.