Я работаю над проектом, в котором нам нужно создать простой API на основе базы данных. Мой проект связан с бейсболом и будет хранить данные об игроке, команде и агенте игрока.
Моя цель - база данных с 3 таблицами: players
, teams
и agents
. teams
до players
- это один ко многим, а от agents
до players
- это один ко многим. Таблица players
имеет внешние ключи team_id
и agent_id
, связанные с каждой из двух других таблиц.
Здесь я потерялся. В таблице teams
мне нужен столбец, в котором хранится массив player_id
с. В основном это будет состав команды. В таблице agent
я бы хотел, чтобы столбец clients
также содержал массив player_id
s, который будет списком клиентов. У меня проблемы с реализацией этого. Должны ли эти столбцы быть внешними ключами, ссылающимися на player.id
, или список команды и список клиентов агента должны быть разбиты на отдельные таблицы? Будет ли моя идея работать?
Вот мои модели, код которых не имеет отношения к моему вопросу (имя, должность, местоположение и т. Д. c):
class Player(db.Model):
__tablename__ = 'players'
id = db.Column(db.Integer, primary_key=True)
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'),
nullable=False)
agent_id = db.Column(db.Integer, db.ForeignKey('agents.id'),
nullable=False)
team = db.relationship(
'Team', backref=db.backref('player', cascade='all,delete'))
agent = db.relationship(
'Agent', backref=db.backref('player', cascade='all,delete'))
class Team(db.Model):
__tablename__ = 'teams'
id = db.Column(db.Integer, primary_key=True)
players = db.Column(db.ARRAY(db.String), default=[])
class Agent(db.Model):
__tablename__ = 'agents'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
clients = db.Column(db.ARRAY(db.String), default=[])