У меня есть таблица пользователей, в которой хранятся сведения о двух типах пользователей, а именно о студентах и преподавателях. Есть 10 полей, таких как имя пользователя, пароль и т. Д., Общий для студентов и преподавателей. В случае каких-либо данных здесь нет 1-го отношения.База данных дизайна для отношений 1 к 1, когда некоторые столбцы применимы только в определенных случаях
В случае студентов, я должен хранить двадцать разные 1 до 1 данных, таких как вес, DOB, Admission No., Родитель, номер телефона и т.д.
В случае учителей, я должен хранить отдельный набор из двадцати от 1 до 1 данных, таких как идентификатор электронной почты, номер аффилиации и т. д., который никак не связан с учащимися.
Какая лучшая структура базы данных, которую я могу использовать в этом сценарии снизу? Если есть лучшие варианты, укажите это тоже.
Одна таблица с 50 столбцами, где 20 столбцов будут иметь значение NULL в случае студентов и 20 столбцов будут иметь значение NULL в случае учителей
Одна таблица с 30 столбцами, где первые 10 столбцов хранит общие данные и следующие 20 столбцов хранят детали учащихся в случае студентов и данных учителя в случае учителя.
Две таблицы с 10 колонками для хранения сведений о пользователе. И еще одна таблица с 20 столбцами для хранения сведений о студентах в случае обучения студентов и преподавателей в случае учителя.
Три таблицы с 10 колонками для хранения сведений о пользователе. Другой стол с 20 колонками для хранения сведений о студентах и еще один стол с 20 столбцами для хранения данных учителя
вариант 4., это классический супер/подтип. – dean
опция 4, без сомнения. Подумайте об этом с объектно-ориентированной точки зрения - таблица с 10 столбцами - это базовый объект, а таблицы учеников и учителей - это производные объекты. –
Вариант 4 является наиболее нормализованным, но в зависимости от использования я бы рассмотрел денормализацию для двух таблиц с 30 столбцами каждый. Один стол для студентов, один для учителей. Первые 10 столбцов обеих таблиц будут одинаковыми. –