3

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 ...
"""
4

1 に答える 1