Я пытаюсь создать простую базу данных для проекта, но я не могу понять, как создать базу данных с помощью SQlAlchemy.
Идея такова: есть команды, работающие над отдельными проекты, и у каждой команды есть наставник, но наставник не обязательно является частью команды.
Насколько я понимаю, отношение «команда-пользователь» является отношением «один ко многим», то есть я должен поместить внешний ключ в дочернюю таблицу (таблица User
) и указать relationship()
на родительской таблице (Team
таблица). Но я не понимаю, отношения это один-ко-многим или многие-к-одному.
И отношения между командой и репетитором должны быть отношениями один к одному, поэтому я должен поместите relationship()
в родительскую таблицу и внешний ключ в дочернюю таблицу. Но еще раз, я не могу понять, что такое родительская таблица и что такое дочерняя таблица в моем сценарии.
И, скажем, если бы я хотел получить доступ к команде, в которой находится конкретный пользователь, и к репетитору этой команды, например alex.team.tutor.id
, я должен был бы определить relationship()
в таблице преподавателей с помощью backref='tutor'
или сделать это наоборот?
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
vk_uid = db.Column(db.Integer, index=True, nullable=True)
# team_id = db.Column(db.Integer, db.ForeignKey('team.id'), nullable=True)
is_tutor = db.Column(db.Boolean, default=False)
is_admin = db.Column(db.Boolean, default=False)
class Team(db.Model):
__tablename__ = 'team'
id = db.Column(db.Integer, primary_key=True)
members = db.relationship(
'User',
backref='team',
lazy='dynamic'
)
# tutor = db.relationship('Tutor', backref='team', uselist=False)
tutor_id = db.Column(db.Integer, db.ForeignKey('tutor.id'))
class Tutor(db.Model):
__tablename__ = 'tutor'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
team_id = db.Column(db.Integer, db.ForeignKey('team.id'))
email = db.Column(db.Text)