【发布时间】:2018-02-05 02:46:02
【问题描述】:
我有一个树表,其中两个与第三个表有多对多的关系。现在我想知道我是否将这些关系合并在一起并为此关系创建一个关系表是一种不好的做法吗?
我认为这种设计使我的关系和操作更易于管理和理解。但我担心性能。 我想知道哪一种方式的性能更好?
共享中间表,我添加它的图片还是为每个关系创建一个中间表?
【问题讨论】:
-
我宁愿合并
tbl_2和tbl_3。 -
它们有许多不同的数据和字段,在我的 ORM (laravel-Eloquent) 中不支持继承的模型映射。
-
你没有标记 ORM 或 laravel。但是 - 您可以使用 hasOne 关系(
Movie has-one Media and Book has-one Media而不是Movie extends Media and Book extends Media)来解决。然后,您可以拥有一个单独但干净的联结表media_tags,而不是两个表books_tags和movie_tags或多态关系。 -
3 路多:多映射可能是一个好主意,也可能不是一个好主意。这取决于每个方向有多少,表有多大,在将其用于 2 路但重复时,您需要使用
DISTINCT或GROUP BY的频率等。
标签: mysql database database-design