【问题标题】:How to properly model Product Compatibility Matrix in MySQL如何在 MySQL 中正确建模产品兼容性矩阵
【发布时间】:2015-05-09 20:54:34
【问题描述】:

所以,我有一个我正在尝试解决的问题。我有一个包含产品的数据库,另一个包含两个产品之间的交叉引用。我已经能够生成以下模式和 SQL 过程以按我想要的方式显示信息(请参阅 SQL 小提琴):

http://sqlfiddle.com/#!9/7fdc4/1

它本质上模仿了带有列和行引用的 Excel 工作表,其中列可以是特定产品,而其他许多产品则列为行标题。最终目标不仅是显示它,而且如果您是管理员用户,请更新兼容性状态或添加/更新注释字段。

我的问题:

1) 我无法在表中显示实际的 ProductCompatibility 表 ID。 2) 如图所示的备注字段与所选产品没有正确关联。唯一似乎正确显示的数据是兼容性信息列。

我正在使用 ExtJS 构建网站,但这并不重要。我想知道如何对数据进行建模并获得正确的索引,因此我执行了更新。

如果我应该对数据库进行不同的建模,或者使用不同的 SQL 存储过程,那么我对实现目标的理想持开放态度。

【问题讨论】:

    标签: mysql sql database stored-procedures


    【解决方案1】:

    要选择,你可以这样做:

    SELECT 
    CONCAT(pr1.ProductName,'' '', pr1.ProductRelease) as Product1,
    CONCAT(pr2.ProductName,'' '', pr2.ProductRelease) as Product2,
    pc.`Record1`,
    pc.`Record2`, 
    pc.`IsCompatible` as IsCompatible
    pc.`notes` as Notes 
    FROM ProductCompatibility pc 
    JOIN Products as pr1 on pr1.id = pc.Record1
    JOIN Products as pr2 on pr2.id = pc.Record2
    

    【讨论】:

    • 这到底是做什么的?这会替换 SQLFiddle 脚本的一部分吗?我没有完全替换。
    • 所以,不幸的是,我不知道这是否解决了我想要做的事情?我正在尝试将信息显示为动态数据透视表,但您显示的是可以轻松更新的数据的静态行视图。我的想法是能够在动态数据透视表中捕获更新。
    • 我只是在描述矩阵场景的典型数据模型。更常见的做法是在数据库端这样处理,然后在 UI 代码中进行旋转
    • 这就是它在数据库中的建模方式。但是,客户希望它以我描述的方式显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2014-05-04
    • 2016-11-13
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多