Вопрос такой. Пишу программу в рамках студенческой работы, У меня в базе данных есть сущности Преподаватель, Студент, Аккаунт.
Нужно дать возможность и студентам и преподавателям авторизоваться по данным аккаунта, но я не могу решить, как правильнее сделать связь между сущностями. Я изначально хотел, чтобы атрибут вторичного ключа пользователей был в сущности Аккаунт, но я не знаю, можно ли сделать так, чтобы вторичный ключ мог привязываться от разных таблиц(Преподаватель/Студент), либо создать 2 колонки с разрешением на нулл, но звучит так себе.
Не знаю, как быть, есть у кого советы ?
	
	
	SQL
	
		
		
								
				
								
				
								
				
								
				
			
	
		
			MySQL Связь между сущностями
"Преподаватель" и "Студент" - это не две разные сущности, а две разные роли (см. RBAC) одной сущности "Пользователь" (Аккаунт). Первичен именно пользователь системы. 
Если разносить преподавателей и студентов по разным таблицам (насколько оправдано такое архитектурное решение?), то это не Аккаунт должен ссылаться на П и C, а в таблицах П и С должно быть поле id_аккаунта.
				
							Если разносить преподавателей и студентов по разным таблицам (насколько оправдано такое архитектурное решение?), то это не Аккаунт должен ссылаться на П и C, а в таблицах П и С должно быть поле id_аккаунта.
и студенты и преподы -- люди. даже если ты лично так не считаешь...
это как в загсе, есть запись о ком-то, и пофиг кем ты будешь (или кем был, или кем так и не стал)
да, конечно же можно засунуть всю информацию о пользователе в "Аккаунт"... но "логичнее" было бы создать таблицу "пользователь"... на которую будут ссылаться и "аккаунт", и "студень", и "препод"....
				
							это как в загсе, есть запись о ком-то, и пофиг кем ты будешь (или кем был, или кем так и не стал)
да, конечно же можно засунуть всю информацию о пользователе в "Аккаунт"... но "логичнее" было бы создать таблицу "пользователь"... на которую будут ссылаться и "аккаунт", и "студень", и "препод"....
просто  следуй  правила  третьей  нф   при разработке  архитектуры бд   и все
				
							Я вижу это так:
				
							 from sqlalchemy import Column, Integer, String, ForeignKey 
from sqlalchemy.orm import relationship, backref, polymorphic_union 
from sqlalchemy.ext.declarative import declarative_base 
 
Base = declarative_base() 
 
class Account(Base): 
    __tablename__ = 'accounts' 
    id = Column(Integer, primary_key=True) 
    username = Column(String) 
    password = Column(String) 
    account_type = Column(String(50)) 
 
    __mapper_args__ = { 
        'polymorphic_on': account_type, 
        'polymorphic_identity': 'account' 
    } 
 
class Teacher(Base): 
    __tablename__ = 'teachers' 
    id = Column(Integer, primary_key=True) 
    name = Column(String) 
    account_id = Column(Integer, ForeignKey('accounts.id')) 
    account = relationship(Account, backref=backref('teachers', uselist=False)) 
 
    __mapper_args__ = { 
        'polymorphic_identity': 'teacher' 
    } 
 
class Student(Base): 
    __tablename__ = 'students' 
    id = Column(Integer, primary_key=True) 
    name = Column(String) 
    account_id = Column(Integer, ForeignKey('accounts.id')) 
    account = relationship(Account, backref=backref('students', uselist=False)) 
 
    __mapper_args__ = { 
        'polymorphic_identity': 'student' 
    } 
  account = Account(username='user1', password='123', account_type='teacher') 
teacher = Teacher(name='John', account=account) 
session.add(teacher) 
session.commit() 
  account = session.query(Account).filter_by(username='user1', password='123').first() 
people = account.teachers + account.students 
 Похожие вопросы
- Под каким пользователем нужно работать в MySQL?
- MySQL Truncate/Delete - как это работает?
- Почему так нужен mysql?
- Друзья пожалуйста скажите любой бесплатный хостинг чтобы работал и поддерживал PHP + MySQL.
- Не отрабатывает вложенный MySQL запрос
- Нормализация базы данных, не могу понять связи
- Как в Mysql поставить, что бы при регистрации пароль содержал не меньше 8 символов?
- Обязательно ли делать первичный ключ (id колонку) в таблице mysql, если каждое значение и так будет уникальным?
- Форма ввода в базу данных MySQL через Php
- MySQL.Задания по запросам.
 
			 
						 
						