例如,如果我的表格中有folders
- 其中包含name
和created
的网站范围值,我希望每个用户都可以存储他们的拥有关于folders
的个人元数据(例如expanded = 1
或label_color = 'red'
),我该如何组织数据库?
这是一个这个例子的图表,正如我现在所说的那样:
请注意,这是与数据透视表类似的设置,或者是多次通过,只是我想存储/访问数据透视表中的数据。 这是可取的还是有更好的方法来实现这种行为?
我认为这可能不是最优雅的原因是它使我的ORM中的连接变得复杂,因为我在加载文件夹行时加入元数据,因此当我将该文件夹作为关系加载时,存在双连接另一种模式。 我该如何避免这种情况?
答案 0 :(得分:1)
你的方式看起来是最好的做法。我会在folder_usermeta表中的user_id和folder_id(这两个定义您的唯一行)上放置一个主键(尽管Kohana不支持在多列上设置主键)。
@biakaveron,我永远不会将序列化数据存储在我的数据库中,没有必要,你将失去语义和SQL能力。你可以在这里找到更多相关信息:
http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back