у меня есть эти 3 объекта: студент, персонал и обсуждение.
Их отношения таковы, что: 1 студент может публиковать много обсуждений; 1 сотрудник может публиковать множество обсуждений; но 1 обсуждение может быть опубликовано только студентом или сотрудником. Можно ли, чтобы внешние ключи studentID и staffID находились в дискуссионном объекте? но при этом каждая запись в нем может иметь 1 нулевое значение в любом из этих 2 атрибутов.
Отношение ERD - соедините 2 необязательных объекта с 1 объектом
Ответы (1)
Рекомендуется применять Вторую нормальную форму (2NF):
Первый подход: наличие базовой таблицы для людей:
У вас может быть таблица People
для хранения общих свойств людей. Студент и персонал будут дочерними элементами этой таблицы, наличие внешнего ключа таблицы Peoples в таблице для обсуждения решит проблему.
Второй подход: наличие базовой таблицы для обсуждения:< br> Чтобы уменьшить избыточность, у вас может быть таблица Discussion-Base
, которая будет базовой таблицей для двух других сущностей: таблиц Staff-Discussion
и Student-Discussion
.
Таблица Discussion-Base
будет содержать общие свойства.
Решение приветствуется, когда свойства таблиц Staff-Discussion и Student-Discussion различны.
Если они одинаковы и единственная разница заключается в необязательном внешнем ключе, упомянутый вами дизайн эффективен.
Надеюсь это поможет.