我想设计我的项目的数据模型,但我在“客户”部分遇到问题,因为我有两种类型的客户:自然人和法人实体这是最好的方法:
方法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:拥有一个包含所有字段的表:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(50)
NationalSecurityNumber char(10)
CompanyName nvarchar(100)
RegistrationNumber char(20)
...
对于每个客户,某些字段已填写,其他字段为空
方法 3:拥有一个包含一些字段的表:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(100)
NationalSecurityNumber varchar(20)
...
自然地为自然客户填充了这些字段。但如果客户是合法客户,我们会按逻辑放置数据。例如,LastName 字段中的 CompanyName 和 NationalSecurityNumber 字段中的 RegistrationCode 并且 FirstName 字段为空。
方法4:我没有想到的任何其他方式,你可以建议
PS 我在 MS SQL Server 2012 中实现我的数据库