- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先是什么条件。我有属于“小”组的人。 (换句话说,每个人都有“small_group_id”。然后“小”组形成“大”组(换句话说,“small_groups”可能有或没有“big_group_id”,这取决于小组是否属于更大的组)。
我想创建一个表结构(将由 PHP 使用)来保存和显示以下两件事:
基本上,对我来说,挑战是如何设计和处理这些私有(private)消息的可见性。我的第一个表是这样的:msgID, msgBody, small_groups_list, big_group_list, authorID
所以我存储例如在 'small_groups_id'
中类似于 'id_1; id_4; id_10'
等,大组类似。但是后来我不确定如何搜索这些存储的列表,例如属于 small_group_id = 10 的人应该会看到该消息。此外,small_groups_list
和 big_group_list
防御/类型列应该是什么。
也许有更好的方法来存储和使用这些东西?这就是我来这里的原因。满足此类要求的更好做法是什么?
(即将在mySQL上实现)
提前谢谢你。
[编辑]我对 SQL 和 DB 方面的经验还很缺乏。请在回答时考虑到这一点。
最佳答案
首先:不要使用“数组”列对数据进行反规范化。这使得查询变得很恐怖,更糟更新。
相反,您需要两个单独的表:small_group_visibility
和 big_group_visibility
。这两个表中的每一个都将包含 msgID
和 groupID
。基本上,这是一种多对多关系,指向组和它所关注的消息。
这是一种非常常见的数据库模式。
要查询要显示的消息,假设我们有一个用户,其小组是 (1, 2, 3),大组是 (10, 20)。
SELECT DISTINCT msgID, msgSubject, msgBody -- and so on
FROM messages m
LEFT JOIN small_group_visibility sg
ON sg.msg_id = m.msg_id
LEFT JOIN big_group_visibility bg
ON bg.msg_id = m.msg_id
WHERE
sg.group_id IN (1, 2, 3) OR
bg.group_id IN (10, 20);
关于mysql - SQL:寻求有关表结构等的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21769396/
我是一名优秀的程序员,十分优秀!