Mysql 将关系映射到addrees以及个人和公司
我对如何在我的问题中描绘一种关系表示怀疑 我必须告诉实体Mysql 将关系映射到addrees以及个人和公司,mysql,database,database-design,Mysql,Database,Database Design,我对如何在我的问题中描绘一种关系表示怀疑 我必须告诉实体person和company他们有字段来存储地址,所以我怀疑映射的最佳方式 个人和公司可以共享同一地址树 我正在使用mysql workbench生成图表并创建数据库 那么我该怎么办呢?定义一个名为地址的新实体,并在person和company表中将其指定为外键约束。如果地址相同,则个人和公司通过外键拥有相同的地址。一个人/公司可以拥有多个地址吗? 如果没有,您可以将FK密钥放置在person和company表中 Person Table
person
和company
他们有字段来存储地址,所以我怀疑映射的最佳方式
个人和公司可以共享同一地址树
我正在使用mysql workbench生成图表并创建数据库
那么我该怎么办呢?定义一个名为
地址
的新实体,并在person
和company
表中将其指定为外键约束。如果地址相同,则个人
和公司
通过外键拥有相同的地址。一个人/公司可以拥有多个地址吗?如果没有,您可以将FK密钥放置在person和company表中
Person Table
AddressId (FK)
Company Table
AddressId (FK)
或者,您的地址表中可以有两个FK,一个对个人,一个对公司
Address Table
PersonId (FK, Nullable)
CompanyId (FK, Nullable)
如果是的话,你需要建立很多关系。
你还需要两张桌子
PersonToAddress Table
PersonId (FK to Person)
AddressId (FK to Address)
*Compound PK (PersonId, AddressId)
CompanyToAddress Table
CompanyId (FK to Company)
AddressId (FK to Address)
*Compound PK (CompanyId, AddressId)
谢谢,那么其他公司是否也可以使用这个地址呢?像
n
公司可以使用相同的地址吗?这是正确的。然而,有一个问题。如果一个人搬家了,我们只是更新了地址,这意味着公司搬到了同一个新地址。如果此人移动,但公司不移动,反之亦然。updtate进程必须在地址表中创建一个新条目。@user2283439:是的,此设计允许这样做。请注意沃尔特提出的问题Mitty@user2283439但是我如何才能在我的表格上设置不添加相同的地址?不,个人和公司只能有一个地址,但一个地址可以有n
companys ou persons这是stackoverflow中关于公司和地址的第一个问题。他们真的应该增加一个搜索功能。