正确的数据库设计:一个表到多个对象

时间:2017-03-20 05:59:23

标签: mysql database database-design

原谅我。我认为这是一个错误的标题。但是这里。

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

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

enter image description here

正如您在notes表中所看到的,notes.tag是标记表的字符串标识符。 usersitemsworknotes.tag_id是对象行的ID。

以下是 Notes表及其样本值

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

对我而言,这是非常有效的(而且懒惰),但我真的不知道这是否合适。你有什么正确的建议吗?

1 个答案:

答案 0 :(得分:0)

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

在ER图中,我将使NOTE_ *实体成为NOTE实体的不相交is-a。但是,我不会将其“实现”为数据库中的表格。