SQL Отношение: одна таблица к нескольким таблицам - PullRequest
1 голос
/ 13 июля 2020

У меня есть три таблицы

import enum
from sqlalchemy import Column, Enum, Float, String
from sqlalchemy.orm import relationship


@enum.unique
class TypeEnum(str, enum.Enum):
    person = "person"
    location = "location"


class Person(Base):
    name = Column(String)
    id = Column(Integer, primary_key=True)


class Location(Base):
    id = Column(Integer, primary_key=True)
    city = Column(String)
    lat = Column(Float)
    lon = Column(Float)


class ExternalIdentifier(Base):
    name = Column(String)
    id = Column(Integer, primary_key=True)
    value = Column(String)
    type = Column(Enum(TypeEnum))
    # internal_id = relationship(...)  # Problem here

Я хотел бы иметь сопоставление между ExternalIdentifier и Person / Location:

  • Если ExternalIdentifier.type равно person, тогда ExternalIdentifier.internal_id должен относиться к объекту из таблицы Person
  • Аналогично, если тип location

К сожалению, мне удалось заставить его работать одним из следующих способов:

  1. создание полей ExternalIdentifier.person_id/location_id вместо ExternalIdentifier.internal_id/type
  2. или создание таблиц person/location_to_external_identifier
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...