如何存储/关联每个模型的用户特定数据(状态?)

时间:2013-01-30 18:58:02

标签: php mysql database orm kohana

例如,如果我的表格中有folders - 其中包含namecreated的网站范围值,我希望每个用户都可以存储他们的拥有关于folders的个人元数据(例如expanded = 1label_color = 'red'),我该如何组织数据库?

这是一个这个例子的图表,正如我现在所说的那样:

diagram

请注意,这是与数据透视表类似的设置,或者是多次通过,只是我想存储/访问数据透视表中的数据。 这是可取的还是有更好的方法来实现这种行为?

我认为这可能不是最优雅的原因是它使我的ORM中的连接变得复杂,因为我在加载文件夹行时加入元数据,因此当我将该文件夹作为关系加载时,存在双连接另一种模式。 我该如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

你的方式看起来是最好的做法。我会在folder_usermeta表中的user_id和folder_id(这两个定义您的唯一行)上放置一个主键(尽管Kohana不支持在多列上设置主键)。

@biakaveron,我永远不会将序列化数据存储在我的数据库中,没有必要,你将失去语义和SQL能力。你可以在这里找到更多相关信息:

http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back