Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将关系映射到addrees以及个人和公司_Mysql_Database_Database Design - Fatal编程技术网

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中关于公司和地址的第一个问题。他们真的应该增加一个搜索功能。