Desidero progettare il modello di dati del mio progetto ma ho un problema nella sezione "Cliente" poiché ho due tipi di clienti: persone fisiche e persone giuridiche Qual è il modo migliore :Il modo migliore per modellare i clienti naturali e legali tutti insieme
Metodo 1: per avere 3 tabelle come questo:
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
...
che sia NaturalPersonID o LegalPersonID si riempie e l'altro è nullo e CustomerType mostra il tipo di cliente (fisica o giuridica)
Metodo 2: Per avere una tabella con tutti i campi:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(50)
NationalSecurityNumber char(10)
CompanyName nvarchar(100)
RegistrationNumber char(20)
...
Che per ogni cliente alcuni campi sono pieni e gli altri sono nulli
Metodo 3: di avere uno tabella con alcuni campi:
ID int not null (PK)
CustomerType bit not null
FirstName nvarchar(50)
LastName nvarchar(100)
NationalSecurityNumber varchar(20)
...
Quale campo s sono riempiti naturalmente per i clienti naturali. Ma se il cliente è di tipo legale, inseriamo i dati logicamente. Ad esempio, CompanyName nel campo LastName e RegistrationCode nel campo NationalSecurityNumber e il campo FirstName sono nulli.
Metodo 4: qualsiasi altro modo che non ho pensato di e si può suggerire
P.S. Sto implementando il mio database in MS SQL Server 2012
Date un'occhiata al Data Model partito: http://www.tdan.com/view-articles/5014/ – sqlvogel
Come si fa a valutare "migliore"? –