【问题标题】:Database Modelling when multiple entities are involved涉及多个实体时的数据库建模
【发布时间】:2013-07-26 12:57:58
【问题描述】:

我在基于 MySQL 的 Web 应用程序中有三个实体 - 客户、服务和备注。每个客户可以有多个由不同用户发布的注释。同样,一个服务也可以有多个注释。我想将所有笔记存储在一个表中以便于检索。基本上,除了插入/更新这些表之外,还有很多查询。

以下是数据库架构:

Table: Customer
id - integer
name - varchar
status - varchar

Table: Service
id - integer
name - varchar
status - varchar
price - float

Table: Note
id - integer
note - text
author - integer
type - varchar
cdate - datetime

我准备了两种方法来建立这些表之间的关系:

Approach #1
Table: CustomerNote
id - integer
customer_id - integer (References Customer table)
note_id - integer (References Note table)

Table: ServiceNote
id - integer
service_id - integer (References Service table)
note_id - integer (References Note table)

第二种方法是修改Note表来保存记录的Entity Name和ID。这种方法不使用方法#1中提到的关系

Approach #2
Table: Note
id - integer
note - text
author - integer
type - varchar
cdate - datetime
entity - varchar (possible values are Customer and Service)
entity_id - integer (related to id in the corresponding entity)

第二种方法不需要任何额外的表,但是执行外键关系并不容易。正如我之前所说,查询比插入/更新更多。那么在那种情况下,哪种方法更理想、更有效呢?

我也想知道如果我们实现严格的外键关系是否有任何性能问题。

【问题讨论】:

    标签: mysql database database-design relational-database


    【解决方案1】:

    无论如何,第二种方法更好,将索引添加到类型字段。 如果您可以将类型转换为整数字段来表示这些值,那就更好了。像 1 代表 Seevice 和 2 代表客户。如果你使用整数会更快。但无论如何,这种方法不会满足你的enforce foreign key

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多