如何在MySQL中正确建模产品兼容性矩阵

如何在MySQL中正确建模产品兼容性矩阵,mysql,sql,database,stored-procedures,Mysql,Sql,Database,Stored Procedures,所以,我有一个问题,我正在努力解决。我有一个包含产品的数据库,另一个包含两个产品之间的交叉引用。我已经能够生成以下模式和SQL过程,以我想要的方式显示信息(请参阅SQL FIDLE): 它本质上模仿了带有列和行引用的Excel工作表,与列标题中列出的大量其他产品相比,列可以是特定的产品。最终目标不仅是显示它,而且如果您是管理员用户,请更新兼容性状态或添加/更新notes字段 我的问题: 1) 我无法在表中显示实际的ProductCompatibility表ID。 2) 所示的注释字段与所选产品

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

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

我的问题:

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

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


如果我应该以不同的方式对数据库建模,或者使用不同的SQL存储过程,那么我愿意接受ideals来实现我的目标。

要选择,您可以这样做:

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

这到底是做什么的?这是否替换了SQLFIDLE脚本的一部分?我没有完全替换。所以,不幸的是,我不知道这是否解决了我要做的事情?我试图将信息显示为动态数据透视表,但您显示的是数据的静态行视图,可以轻松更新。我的想法是能够在动态透视表中捕获更新。我只是描述了矩阵场景的典型数据模型。更常见的做法是在数据库端这样做,然后在UI代码中对其进行透视,这与在数据库中对其建模的方式非常相似。但是,客户希望以我描述的方式显示它。