Czy ktoś może wyjaśnić, jak wdrożyć relacje jeden do jednego, jeden do wielu i wiele do wielu podczas projektowania tabel z kilkoma przykładami?
sql
oracle
database-design
Arsenał
źródło
źródło
Odpowiedzi:
Jeden do jednego: użyj klucza obcego do tabeli, do której istnieje odwołanie:
Należy także nałożyć unikalne ograniczenie na kolumnę klucza obcego (
addess.student_id
), aby zapobiec powiązaniu wielu wierszy w tabeli potomnej (address
) z tym samym wierszem w tabeli, do której istnieje odwołanie (student
).Jeden do wielu : użyj klucza obcego po wielu stronach relacji, łącząc się z powrotem z jednej strony:
Wiele do wielu : użyj tabeli połączeń ( przykład ):
Przykładowe zapytania:
źródło
student
danegoaddress
.student_classes
wiersz powinien mieć tylko jedną relację jeden do jednego. JeślistudentA
jest w,classA
iclassB
powinny być dwa wiersze, wstudent_classes
jednym dla których relacji.Oto kilka przykładów rzeczywistych rodzajów relacji:
Jeden do jednego (1: 1)
Relacja jest jeden do jednego wtedy i tylko wtedy, gdy jeden rekord z tabeli A jest powiązany z maksymalnie jednym rekordem w tabeli B.
Aby ustanowić relację jeden-do-jednego, klucz podstawowy tabeli B (bez rekordu osieroconego) musi być kluczem dodatkowym tabeli A (z rekordami osieroconymi).
Na przykład:
Jeden do wielu (1: M)
Relacja jest jeden do wielu wtedy i tylko wtedy, gdy jeden rekord z tabeli A jest powiązany z jednym lub większą liczbą rekordów w tabeli B. Jednak jeden rekord w tabeli B nie może być powiązany z więcej niż jednym rekordem w tabeli A.
Aby ustanowić relację jeden do wielu, klucz podstawowy tabeli A (tabela „jeden”) musi być kluczem dodatkowym tabeli B (tabela „wielu”).
Na przykład:
Wiele do wielu (M: M)
Relacja jest wiele do wielu wtedy i tylko wtedy, gdy jeden rekord z tabeli A jest powiązany z jednym lub większą liczbą rekordów w tabeli B i odwrotnie.
Aby ustanowić relację wiele do wielu, utwórz trzecią tabelę o nazwie „ClassStudentRelation”, która będzie zawierała klucze podstawowe zarówno tabeli A, jak i tabeli B.
źródło
Jeden za dużo
Relacja tabeli jeden do wielu wygląda następująco:
W systemie relacyjnych baz danych relacja jeden do wielu łączy dwie tabele na podstawie
Foreign Key
kolumny w elemencie potomnym, która odwołuje sięPrimary Key
do wiersza tabeli nadrzędnej.Na powyższym diagramie tabeli
post_id
kolumna wpost_comment
tabeli maForeign Key
związek z kolumnąpost
identyfikatora tabeliPrimary Key
:Jeden na jednego
Relacja tabeli jeden do jednego wygląda następująco:
W systemie relacyjnej bazy danych relacja jeden-do-jednego tabeli łączy dwie tabele na podstawie
Primary Key
kolumny w elemencie potomnym, która jest równieżForeign Key
odniesieniem doPrimary Key
wiersza tabeli nadrzędnej.Dlatego możemy powiedzieć, że tabela potomna dzieli się
Primary Key
z tabelą nadrzędną.Na powyższym schemacie tabeli
id
kolumna wpost_details
tabeli ma równieżForeign Key
związek z kolumnąpost
tabeliid
Primary Key
:Wiele do wielu
Relacja wielu do wielu wygląda następująco:
W systemie relacyjnej bazy danych relacja wiele do wielu łączy dwie tabele nadrzędne za pośrednictwem tabeli podrzędnej, która zawiera dwie
Foreign Key
kolumny odwołujące się doPrimary Key
kolumn dwóch tabel nadrzędnych.Na powyższym diagramie tabeli
post_id
kolumna wpost_tag
tabeli ma równieżForeign Key
związek z kolumnąpost
identyfikatora tabeliPrimary Key
:I
tag_id
kolumna wpost_tag
tabeli maForeign Key
związek z kolumnątag
identyfikatora tabeliPrimary Key
:źródło
Relacja jeden do jednego (1-1): Jest to relacja między kluczem podstawowym a kluczem obcym (klucz podstawowy związany z kluczem obcym tylko jeden rekord). jest to relacja jeden do jednego.
Relacja jeden do wielu (1-M): Jest to także relacja między kluczem podstawowym a kluczem obcym, ale tutaj klucz podstawowy dotyczy wielu rekordów (tj. Tabela A zawiera informacje o książce, a Tabela B ma wielu wydawców jednej książki).
Wiele do wielu (MM): Wiele do wielu obejmuje dwa wymiary, wyjaśnione w pełni jak poniżej z próbką.
źródło