mysql - 正确的数据库设计 : One table to Multiple Objects

标签 mysql database database-design

请原谅我。我相信这是一个错误的标题。但就这样吧。

让我们放置一个有 3 个对象的实例。 用户项目工作。这 3 个对象可能包含多个注释

因此,我制定了一个数据库设计,我尝试过并且它有效,但我知道它的性能效率不高,并且我认为这是不合适的。

enter image description here

正如您在 notes 表中看到的,notes.tag 是标记表的字符串标识符。 用户项目工作notes.tag_id 是对象所在行的 ID。

下面是注释表及其示例值

+----+-------+--------+-----------------------------+--+
| ID | TAG   | TAG_ID | MESSAGE                     |  |
+----+-------+--------+-----------------------------+--+
| 1  | items | 1      | Lorem Ipsum                 |  |
+----+-------+--------+-----------------------------+--+
| 2  | items | 1      | Dolor sit Amet              |  |
+----+-------+--------+-----------------------------+--+
| 3  | users | 1      | consectetur adipiscing elit |  |
+----+-------+--------+-----------------------------+--+

对我来说,这非常有效(而且很懒),但我真的不知道这是否正确。您有什么好的建议吗?

最佳答案

我会创建一个单独的NOTE_USERS、NOTE_ITEM、NOTE_WORK 表。然后,您不需要 tag 字段,并且 tag_id 可以是真正的外键。

在 ER 图中,我会将 NOTE_* 实体设为 NOT 实体的不相交 is-a。但是,我不会将其“具体化”为数据库中的表。

关于mysql - 正确的数据库设计 : One table to Multiple Objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896750/

相关文章:

sql - 许多小型 SQL 调用或少量大型 SQL 调用?

mysql - 有效地按类别进行组织

php - 防止 $_POST 轰炸

php - 将带有属性的 XML 导入 mysql

mysql - 获取n组所有记录

.net - 从数据库 Entity Framework Core 中选择多层对象

asp.net - Asp 将查询放入数组并在不刷新页面的情况下通过它

database-design - CakePHP将记录分配给用户:一种可重用的方法

angularjs - 通过分组查询减少 http 请求量

mysql - 子选择性能差