什么是“其他表,列依赖,动态表状态”?

时间:2011-10-22 06:20:33

标签: php mysql database-design

我正在尝试在某些设计文件上勾画出一个数据库模板,而我遇到了依赖项问题。

用户向网站提交内容以供查看,内容根据内容的类型给予优先级。但是,我也希望优先级由用户设置。基本上,如果人A是人B的朋友,则人A提交的内容对于人B是高优先级的。人C不是人A的朋友,因此该媒体中人C的内容是低优先级。

我甚至不知道从哪里开始。任何正确方向的推动都将受到赞赏。我认为这是一个MySQL问题;但是,我使用PHP作为服务器端脚本语言,我想知道数学是否使得它没有通过MySQL的解决方案。

我正在考虑只为朋友内容使用一个区域,而不是当前没有弄乱优先级。

1 个答案:

答案 0 :(得分:1)

只要你跟踪你需要的东西就不应该是问题,诀窍就在于编写Sql。例如,如果您有以下表结构

person
------
id
name
otherstuff

person_releationship
-------------------
person_a_id
person_b_id
relationship_type_id

relationship_type
-------------------------
id
content_priority

content
--------------
id
stuff
person_id
user_priority

您可以编写以下语句,该语句将检索与某人关联的所有内容,不包括他们自己的内容,并按content_priority划分优先级

SELECT
    stuff
FROM 
    content c
    INNER JOIN person p
    ON c.person_id = p.id
    INNER JOIN person_releationship pr
    ON p.person_id = pr.person_a_id 
       or p.person_id = pr.person_b_id 
    INNER JOIN relationship_type rt
    ON pr.relationship_type_id = rt.id
WHERE
    p.id = "A"
    and c.person_id <> "A"
ORDER BY
    rt.content_priority, 
    c.user_priority

如果您需要,您也可以使用加权优先级,以便ORDER BY可以

ORDER BY
rt.content_priority *  c.user_priority

您应该注意,此SQL和表设计独立于RDBMS和Web技术。