我有一个关于 sqlalchemy 和 DB 规范化的问题。
我有一个名为 Accounts 的表,以及 2 种人,Natural_Persons 和 Legal_Persons。
我需要一次只将一个帐户与一个人关联起来。
例如,帐户 ID 4 与 Natural_Person ID 5 相关。
但是......当我查询该信息时,我如何知道账户记录中的 ID 5 是来自自然人还是法人?
最简单的解决方案(目前对我来说)是在 Accounts 表中添加一个名为 person_type 的新字段,并使用例如 char 来区分它们。
所以现在我在帐户表中有一条记录,其中包含以下数据:
account_id = 4
person_id = 5
person_type = N
但现在我想将数据库与 sqlalchemy 一起使用。
如果我使用 Account 类实例加载帐户记录,那么如果我访问“person”属性,它应该检查 person_type 字段并根据情况创建 NaturalPerson 类或 LegalPerson 类的实例!
就像是:
acc = Account(4)
acc.person
"""
if person_type == "L", person returns a LegalPerson instance
but otherwise ...
"""