У меня есть три таблицы:
Один Guardian
может иметь много Addresses
, а один Student
может иметь много Addresses
.
Наблюдения:
Guardian
адреса могут совпадать с Students
Guardian
адреса могут отличаться от Student
This:
addressLine1
= Foo, addressLine2
= Бар ( Студент )
отличается от этого
addressLine1
= Foo, addressLine2
= Бар ( Хранитель )
Просто указав:
- Один
Guardian
имеет много Students
, прикрепленных к нему - Один
Student
имеетмногие Guardians
прикрепленные к нему
Guardian
и Students
имеют как общие, так и специфические атрибуты.
Прямо сейчас я отображаю приведенный ниже фрагмент кода:
CREATE TABLE address
(
id BIGINT,
/* OTHER FIELDS OMITTED */
guardian_id BIGINT,
student_id BIGINT,
PRIMARY KEY (id)
)
CREATE TABLE guardian
(
id BIGINT,
/* OTHER FIELDS OMITTED */
PRIMARY KEY (id)
)
CREATE TABLE student
(
id BIGINT,
/* OTHER FIELDS OMITTED */
PRIMARY KEY (id)
)
ALTER TABLE address
ADD CONSTRAINT constraint_id FOREIGN KEY (guardian_id)
REFERENCES guardian
ALTER TABLE address
ADD CONSTRAINT constraint_id FOREIGN KEY (student_id) REFERENCES
student
Это правильный путь?Я имею в виду, есть лучшее решение для этого случая?
* Адрес не таблица соединения, если я правильно.Это не сделано для целей отношений.У него есть свои специфические поля.