Ich habe die folgenden Objekte und Beziehungen definiert. Das ist eigentlich ein ganz einfacher Fall, und ich biete all diese Felder an, um zu zeigen, warum ich glaube, dass Inhalations- und Injektionsnarkose von zwei verschiedenen Klassen definiert werden sollte.multiple/split Klassenassoziationen in sqlalchemy
class InhalationAnesthesia(Base):
__tablename__ = "inhalation_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
concentration = Column(Float)
concentration_unit = Column(String)
duration = Column(Float)
duration_unit = Column(String)
class TwoStepInjectionAnesthesia(Base):
__tablename__ = "twostep_injection_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
solution_concentration = Column(Float)
solution_concentration_unit = Column(String)
primary_dose = Column(Float)
primary_rate = Column(Float)
primary_rate_unit = Column(String)
secondary_rate = Column(Float)
secondary_rate_unit = Column(String)
class Operation(Base):
__tablename__ = "operations"
id = Column(Integer, primary_key=True)
anesthesia_id = Column(Integer, ForeignKey('inhalation_anesthesias.id'))
anesthesia = relationship("InhalationAnesthesia", backref="used_in_operations")
I würde jedoch wie das Anästhetikum Attribut der Klasse Operation
so zu definieren, dass jedes Operation
Objekt entweder ein TwoStepInjectionAnesthesia
Objekt zeigen kann oder ein InhalationAnesthesia
Objekt.
Wie kann ich das tun?
Mit diesem Setup sollte ich in der Lage sein, sowohl "InhalationAnästhesie" - als auch "TwoStepInjectionAnästhesie" -Objekte unter "Operation.anästhesie" zu referenzieren. Würde "Operation.anesthesia = [TwoStepInjektionAnästhesie (..), Inhalationsanästhesie (..), Inhalationsanästhesie (..)] etwas durcheinander bringen? – TheChymera
@TheChymera Ja und Ja. In diesem Beispiel bezieht sich eine "Operations" -Instanz nur auf ein "Anästhesie" -Objekt. Wenn Sie eine Liste benötigen, sollten Sie den Code ein wenig ändern. –
Noch eine Sache, was ist der Vorteil der Verwendung der oben genannten Einrichtung (abgesehen von etwas besser organisiert auf der Python-Ende)? Wird die tatsächliche SQL-Tabelle, die generiert wird, bestimmte Spaltentypen nur für Zeilen mit bestimmten Trennzeichen enthalten? (dadurch Speicherplatz sparen?) – TheChymera