我在基于 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)
第二种方法不需要任何额外的表,但是执行外键关系并不容易。正如我之前所说,查询比插入/更新更多。那么在那种情况下,哪种方法会更理想和更有效?
我还想知道如果我们实施严格的外键关系是否存在任何性能问题。