sqlalchemy と DB の正規化について質問があります。
Accounts というテーブルと、Natural_Persons と Legal_Persons の 2 種類の人物があります。
一度に 1 人だけにアカウントを関連付ける必要があります。
たとえば、アカウント ID 4 は Natural_Person ID 5 に関連付けられています。
しかし... その情報を照会したときに、アカウント レコードの ID 5 が自然人または法人の ID であるかどうかを知るにはどうすればよいでしょうか?
最も簡単な解決策 (現時点での私にとって) は、アカウント テーブルに person_type という新しいフィールドを追加し、たとえば char を使用してそれらを区別することです。
これで、アカウント テーブルに次のデータを含むレコードが作成されました。
account_id = 4
person_id = 5
person_type = N
しかし、今は sqlalchemy で DB を使いたいと思っています。
Account クラスのインスタンスを使用してアカウント レコードをロードする場合、"person" 属性にアクセスすると、person_type フィールドをチェックし、状況に応じて NaturalPerson クラスまたは LegalPerson クラスのインスタンスを作成する必要があります。
何かのようなもの:
acc = Account(4)
acc.person
"""
if person_type == "L", person returns a LegalPerson instance
but otherwise ...
"""