2016-12-16 2 views
0

Я работаю над системой управления школами, которая имеет два типа сущностей.Две таблицы с различной целью, но одинаковые атрибуты/поля

User 
----- 
UserId 
UserType 
Name 
ContactNumber 
Address 

, в котором содержатся все учащиеся/преподаватели, чья посещаемость отмечена.

Другая таблица

ContactDetails 
---- 
ContactId 
Name 
ContactNumber 
Address 

ContactDetails strores информацию родителей и родственников пользователей (с помощью Mapping таблиц, имеющих много многих отображений) и их присутствие не отмечено.

У меня уже есть таблица aspnetUsers, в которой хранятся все учетные данные.

Теперь изменение состоит в том, что родители (а не родственники), которые являются контактами, должны войти в систему и обновить данные.

есть два подхода.

  1. Создайте Usertype = Parent, откройте контакты таблицы и перегруппируйте все отношения. Вход в систему будет рассматривать только таблицу пользователей для получения информации после аутентификации.

  2. Создайте роль родителя в aspNetRoles и когда role = parent, посмотрите в User или Contacts в зависимости от роли для информации.

Нужно ли находиться в разных таблицах два разных объекта, имеющие разные цели, но одинаковые поля?

ответ

1

Подобные атрибуты должны быть подсказкой. У вас есть одна сущность, установленная в разных ролях. Может ли тот же человек быть учителем и родителем? Может ли студент стать учителем или родителем?

Многие системы начинают использовать различные категории людей в качестве разных наборов сущностей, что приводит к дублированию работы при тех же изменениях, которые необходимо применять, и одни и те же запросы выполняются на нескольких таблицах. Объединение различных наборов сущностей в один супертип после заполнения базы данных - это, по крайней мере, трудоемкая задача, и это может быть сложно. Гораздо лучше, если эти обобщения могут быть встроены с самого начала.

я предлагаю что-то вроде следующего:

Persons (PersonId PK, Name, ContactNumber, Address) 
Users (PersonId PK/FK, Username, PasswordHash) 
Students (PersonId PK/FK, ...) 
Parents (PersonId PK/FK, ...) 
Relatives (PersonId PK/FK, ...) 
Teachers (PersonId PK/FK, ...) 

Таким образом, личные данные для всех людей, которые хранятся в одном месте, и роль специфической информации для человека могут быть записаны в любом из соответствующих таблиц подтипов ,

 Смежные вопросы

  • Нет связанных вопросов^_^