プロジェクトのデータ モデルを設計したいのですが、「顧客」セクションに問題があります。これは、自然人と法人の 2 種類の顧客がいるためです。これが最善の方法です。
方法 1 : 次のように 3 つのテーブルを作成するには:
Customers:
ID int not null (PK)
CustomerType bit not null
NaturalPersonID int (FK)
LegalPersonID int (FK)
NaturalPeople:
ID int not null (PK)
FirstName nvarchar(50) not null
LastName nvarchar(50) not null
NationalSecurityNumber char(10) not null
...
LegalEntities:
ID int not null (PK)
CompanyName nvarchar(100) not null
RegistrationNumber char(20) not null
...
NaturalPersonID または LegalPersonID のいずれかが入力され、もう一方は null で、CustomerType は顧客のタイプ (Natural または Legal) を示します。
方法 2 : すべてのフィールドを含む 1 つのテーブルを作成するには:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(50)
NationalSecurityNumber char(10)
CompanyName nvarchar(100)
RegistrationNumber char(20)
...
顧客ごとに、いくつかのフィールドが入力され、他のフィールドは null です
方法 3 : いくつかのフィールドを持つ 1 つのテーブルを作成するには:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(100)
NationalSecurityNumber varchar(20)
...
自然な顧客のためにどのフィールドが自然に満たされているか。しかし、顧客が法務の場合は、論理的にデータを配置します。たとえば、LastName フィールドの CompanyName と NationalSecurityNumber フィールドの RegistrationCode および FirstName フィールドは null です。
方法 4 : 私が思いつかなかった、あなたが提案できる他の方法
PS私はMS SQL Server 2012でデータベースを実装しています