Фляга-с SQLAlchemy структура модели


Я ищу обзор фляжке-с SQLAlchemy структуры модели, в частности, присоединение к БД лучших практик, таких как недопущение дублирования и т. д.

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

Спецификация Модель:

  • Кафедра: кафедра представляет собой набор команд. Отдел без команд должны считаться действительными. На удаление, все команды, связанные с управлением должны быть удалены.

  • Команды: команда представляет собой набор ролей. Команда без роли должны считаться действительными. На удаление, все роли, связанные с командой также должен быть удален. Команда может принадлежать только к одной кафедре.

  • Роль: роль может принадлежать только одной команде.

Модели:

class Department(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)

    teams = db.relationship(
        'Team',
        backref='department',
        cascade='all, delete-orphan',
        lazy='dynamic'
    )

    def __repr__(self):
        return '<Department {} >'.format(self.name)


class Team(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)

    roles = db.relationship(
        'Role',
        backref="team",
        cascade="all, delete-orphan",
        lazy='dynamic'
    )

    department_id = db.Column(
        db.Integer,
        db.ForeignKey('department.id'),
        nullable=False
    )

    def __repr__(self):
        return '<Team {} >'.format(self.name)


class Role(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)


    team_id = db.Column(db.Integer, db.ForeignKey('team.id'), nullable=False)

    def __repr__(self):
        return '<Role {} : ID {} >'.format(self.name, self.id)

Вопросы:

Я написал это как SQL, я ожидал роли содержать как Department_id и Team_id. Может та же структура быть достигнуто с помощью SQL-Алхимия? Текущая (неоптимальным?) структура симптоматических ОРМ?

Обновление

Таблицы это производит следующим образом:

Department: ID, Name
Team: ID, Name, department_id
Role: ID, Name, role_id


237
3
задан 7 апреля 2018 в 02:04 Источник Поделиться
Комментарии