Мне нужно создать базу данных для 2 типов фермеров (организаций и арендодателей), у которых есть разные столбцы, которые нужно хранить, и мне также нужно версия их информации.
Один дизайн БД, который я придумалс это: (непротиворечивый)
Farmers
Id
FType check(FType in ('organization', 'landlord'))
Unique(Id,Ftype)
Organizations
Id
FType
Unique(Id, FType)
FK(Id, FType) Ref Farmers(Id, FType)
LandLords
Id
FType
Unique(Id, FType)
FK(Id, FType) Ref Farmers(Id, FType)
OrganisationVersions
Id
OrganisationId ref Organizations(id)
--lots of stuff specific to organisation
Startdate
Endate -- if null than this is the current version
LandLordVersions
Id
LandLordId ref LandLords(id)
--lots of stuff specific to landlord
StartDate
EndDate
Второй, не такой последовательный, но гораздо меньше таблиц, выглядит так:
Farmers
Id
FType
Organizations
Id
FarmerId ref Farmers(Id)
--stuff
StartDate
EndDate -- if null than this is the current version
LandLords
Id
FarmerId ref Farmers(Id)
--stuff
StartDate
EndDate