我试图用NaturalPersons、LegalEntities和它们的SocialNetworkAccounts列表来构建基本的数据库结构,这个表的简化结构如下所示:
NaturalPersons table:
– ID [number] AI PK
– Name [text]
– Surname [text]
LegalEntities table:
– ID [number] AI PK
– CompanyName [text] unique
SocialNetworkAccounts table:
– ID [number] AI PK
– SocialNetworkLink [text]
– SubjectID [number] FK问题是,我只能将SubjectID链接到NaturalPersons.ID或LegalEntities.ID,并且只能考虑以下解决办法:
我可以为SocialNetworkAccounts做两张桌子,就像
SocialNetworkAccounts-NP table:
– ID [number] AI PK
– SocialNetworkLink [text]
– PersonID [number] FK
SocialNetworkAccounts-LE table:
– ID [number] AI PK
– SocialNetworkLink [text]
– CompanyID [number] FK但是,我不喜欢数据库中有许多类似的表,因为它会使查询和进一步开发复杂化。
我可以把外国钥匙放在前两张桌子上:
NaturalPersons table:
– ID [number] AI PK
– Name [text]
– Surname [text]
– SocialNetworkLinkID [number] FK
LegalEntities table:
– ID [number] AI PK
– CompanyName [text] unique
– SocialNetworkLinkID [number] FK
SocialNetworkAccounts table:
– ID [number] AI PK
– SocialNetworkLink [text]但那样的话,我将无法为每个人/公司添加多个条目(社交链接)。
我正在考虑另一种选择,我可以填写PersonID或CompanyID:
NaturalPersons table:
– ID [number] AI PK
– Name [text]
– Surname [text]
LegalEntities table:
– ID [number] AI PK
– CompanyName [text] unique
SocialNetworkAccounts table:
– ID [number] AI PK
– SocialNetworkLink [text]
– PersonID [number] FK
– CompanyID [number] FK但是SQL需要显示FK列中的数据。我需要类似于“复合外键”的东西,其中有“PersonID或CompanyID”。
因此,我对这种情况下的最佳实践感到困惑。我也不确定如何调用该特性(如果存在的话)。
发布于 2022-11-29 22:28:13
在这种情况下,我会创建两个表
具有非空外键的
的非空外键
我把这些叫做“关联表”。
https://stackoverflow.com/questions/74620572
复制相似问题