【问题标题】:What is 'other-table, column-dependent, dynamic table status'?什么是“其他表、列相关、动态表状态”?
【发布时间】:2011-10-22 14:54:36
【问题描述】:

我正在尝试在一些设计纸上勾勒出一个数据库模板,但我遇到了依赖问题。

用户向网站提交内容以供查看,内容根据内容类型给予优先级。但是,我也希望由用户设置优先级。基本上,如果 A 是 B 的朋友,那么 A 提交的内容对于 B 来说是高优先级。C 不是 A 的朋友,所以在这个媒介中内容对于 C 来说是低优先级。

我什至不知道从哪里开始。任何朝着正确方向的推动将不胜感激。我认为这是一个 MySQL 问题;但是,我使用 PHP 作为服务器端脚本语言,我想知道数学是否可以通过 MySQL 解决。

目前,我正在考虑仅将一个区域用于朋友内容,而不是搞乱优先级。

【问题讨论】:

    标签: php mysql database-design


    【解决方案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 技术。

    【讨论】:

    • 因此,如果内容具有被用户关系覆盖的默认优先级,我只需要选择哪个更重要,还是应该通过公式混合列:内容 - ------------- id stuff person_id content_priority
    • 这取决于你。您是否希望非朋友的最高优先级始终低于朋友的最低优先级?
    • 我不确定什么 RDSM。这对加权优先级很有趣。谢谢。
    • 哎呀我的意思是RDBMS
    • 嗯,我想做的是将网站高度优先的内容与高度个性化的内容混合在一种以牙还牙的系统上。两个朋友内容视图,后跟两个站点优先级视图。即使朋友内容是高站点优先级,这也是一种享受。因此,如果它既是朋友内容又是优先内容,则不会被视为优先视图。通过这种方式,我希望在保持健康社会的同时鼓励社区成长。
    猜你喜欢
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多