是否有规范化列=行的表的快捷方式?

tho*_*mas 5 mysql database performance database-normalization database-table

假设你有mySQL表描述你是否可以混合两种物质

Product   A    B    C
---------------------
A         y    n    y
B         n    y    y
C         y    y    y
Run Code Online (Sandbox Code Playgroud)

第一步就是改变它

P1   P2   ?
-----------
A    A    y
A    B    n
A    C    y
B    A    y
B    B    y
B    C    n
C    A    y
C    B    n
C    C    y
Run Code Online (Sandbox Code Playgroud)

但是你有重复的信息.(例如,如果A可以与B混合,那么B可以与A混合),因此,您可以删除多行来获取

P1   P2   ?
-----------
A    A    y
A    B    n
A    C    y
B    B    y
B    C    n
C    C    y
Run Code Online (Sandbox Code Playgroud)

虽然使用小桌子的最后一步非常简单,但手动操作会永远占用更大的桌子.如何使用重复的MEANING自动删除行,但不是相同的内容?

谢谢,我希望我的问题有意义,因为我还在学习数据库

Jam*_*ong 4

如果可以安全地假设您从所有关系加倍开始,例如

如果A B在表中,则B A保证在表中。

然后您所要做的就是删除 P2 < P1 的所有行;

DELETE FROM `table_name` WHERE `P2` < `P1`;
Run Code Online (Sandbox Code Playgroud)

如果不是这种情况,您可以通过遍历表并插入所有重复行(如果它们尚不存在),然后运行它来实现这种情况。