I seguenti oggetti e relazioni sono definiti. Questo è in realtà un caso abbastanza semplice, e sto fornendo tutti questi campi solo per mostrare perché credo che l'inalazione e l'anestesia da iniezione dovrebbero essere definite da due classi diverse.associazioni di classi multiple/suddivise 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")
avrei, però, come per definire l'attributo anestetico della classe Operation
in modo tale che qualsiasi oggetto Operation
può puntare a un oggetto o un oggetto TwoStepInjectionAnesthesia
InhalationAnesthesia
.
Come posso farlo?
Quindi, utilizzando questa configurazione, dovrei essere in grado di fare riferimento a entrambi gli oggetti "InhalationAnesthesia" e "TwoStepInjectionAnesthesia" in "Operation.anesthesia'? Userebbe 'Operation.anesthesia = [TwoStepInjectionAnesthesia (..), InhalationAnesthesia (..), Inhalationanesthesia (..)]' rovinare tutto? – TheChymera
@TheChymera Sì e Sì. Nell'esempio fornito un'istanza di 'Operation' farà riferimento a un solo oggetto' Anesthesia'. Se ti serve una lista, dovresti cambiare un po 'il codice. –
Un'altra cosa, qual è il vantaggio di utilizzare l'impostazione di cui sopra (oltre ad essere organizzata leggermente meglio sul lato Python)? la tabella sql effettiva che viene generata contiene determinati tipi di colonna solo per le righe con determinati descrittori? (quindi risparmiando spazio sul disco?) – TheChymera