Я пытаюсь смоделировать диаграмму ER ниже в SQLAlchemy для создания прототипа функциональности рабочего процесса.
«Компонент» состоит из набора «action», связанного вместе с «action_link». Действие можетиметь действия «от 0 до N» до и «от 0 до N» после, поэтому добавление дополнительных атрибутов для предыдущего / следующего шага не поможет (это причина для таблицы «action_link». Тип действия такжеважно, так как он решит, какие действия в настоящее время открыты для выполнения.

У меня нет проблем при создании действия, компонента и типов:
class Component(Base):
__tablename__ = 'wkf_component_def'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(50), nullable=False)
class Action(Base):
__tablename__ = 'wkf_action_def'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(50), nullable=False)
event = Column(String(128), nullable=False)
class Type(Base):
__tablename__ = 'wfk_type'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(50), nullable=False)
Но я борюсь с "action_link", я не могу просто создать "таблицу связей", так как у меня есть хотя бы один дополнительный столбец "type_id", поэтому мне нужен объект ассоциации (или прокси)
class ComponentLink(Base):
id = Column(Integer, primary_key=True, autoincrement=True)
component_id = Column(Integer, ForeignKey('wkf_component_def.id'))
from_action_id = Column(Integer, ForeignKey('wkf_action_def.id'))
to_action_id = Column(Integer, ForeignKey('wkf_action_def.id'))
type_id = Column(Integer, ForeignKey('wfk_type.id'))
Но я борюсь с утверждениями realtionship / backref, которые отсутствуют выше, мне не удалось заставить отношения работать так, как ожидалось (я так и не смог добавить "действие"_link "объект, а затем передайте его
Если мой подход к решению этой общей ошибки неверен, пожалуйста, дайте мне знать и укажите мне правильное направление