数据库设计|多对多 - 公司和公司客户所在地

时间:2018-02-21 05:09:00

标签: mysql sql many-to-many

我们假设我有这些表:

  • 公司(身份证,姓名,电话,电子邮件)
  • 客户(身份证,姓名,电话,电子邮件)
  • 地点(身份证,城市,州)

每家公司和每个客户都可以拥有多个位置。

什么是最好的&创建上述关系的最快方法,假设在我的应用程序中,我将需要搜索与客户ID位置的至少一个位置相关的所有公司,反之亦然?

无法找到更通用的标题,请随意将其更改为通用标题。

2 个答案:

答案 0 :(得分:3)

根据我的意见,您可以创建如下表格:

  • 地点(身份证,城市,州)
  • 公司(身份证,姓名,电话,电子邮件)
  • companylocations(id,CompanyId,locationId) - 与公司和公司的外键。位置表
  • 客户(身份证,姓名,电话,电子邮件)
  • customerlocations(id,customerId,locationId) - 与客户的外键&位置表

将索引添加到以下列以更快地获取数据

  • customerlocations(customerId,locationId)
  • companylocations(CompanyId,locationId)
所有表的

id列都是主键,因此我们有一个索引。

答案 1 :(得分:1)

  

您可以为公司和客户构建一些联结表。

Companies  
id (pk)
name
phone
email

Companies_location
id (pk)
company_id (reference to Companies table id) (fk)
location_id (reference to  Location Table id) (fk)

Customers
id (pk)
name
phone
email

Customers_location
id (pk)
customer_id (reference to Customers table id) (fk)
location_id (reference to  Location Table id) (fk)

Location
id (pk)
state
city
  

SQL声明:

You can use Union because they have same field.