如何为每个模型存储/关联用户特定的数据(状态?)
Posted
技术标签:
【中文标题】如何为每个模型存储/关联用户特定的数据(状态?)【英文标题】:How to store/relate user-specific data (states?) for each model 【发布时间】:2013-01-30 18:58:01 【问题描述】:例如,如果我有一个充满folders
的表,其中包含name
和created
等站点范围的值,我希望每个用户都可以存储他们自己的关于这些@ 的元数据987654325@(例如expanded = 1
或label_color = 'red'
),我应该如何组织我的数据库?
这是这个例子的示意图,正如我目前正在做的那样:
请注意,这是与数据透视表类似的设置,或者是多次通过,只是我想存储/访问数据透视表中的数据。 这是可取的还是有更好的方法来完成这种行为?
我认为这可能不是最优雅的原因是它使我的 ORM 中的连接复杂化,因为我在加载文件夹行时加入了元数据,所以当我将该文件夹加载为与另一个模型。 如何避免这种情况?
【问题讨论】:
你的做法看起来很完美! 您可以将其存储为序列化字符串。它更灵活,因为您的文件夹可以有很多参数。创建特殊方法get_param($field, $default = NULL)
和 set_param($field, $value)
以更改 Model_Folder_Usermeta
。
【参考方案1】:
您的方式看起来是最佳做法。我会在您的folders_usermeta 表中的user_id 和folder_id(这两个定义您的唯一行)上放置一个主键(尽管Kohana 不支持在多个列上设置主键)。
@biakaveron,我永远不会在我的数据库中存储序列化数据,这没有必要,你会失去你的语义和你的 SQL 能力。您可以在此处了解更多信息:
http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back
【讨论】:
以上是关于如何为每个模型存储/关联用户特定的数据(状态?)的主要内容,如果未能解决你的问题,请参考以下文章