如何以正确的方式使用php命令以下结构:我有3个表
主表:domain
与text modules
(外键fk_text_modules_domain_id)和product modules
(外键fk_product_modules_domain_id)表相关,每个表都有用于标记行顺序的顺序字段。我正在分离查询以过滤数据,并在我合并2个数组之后。我的问题是:如果第一个表的顺序字段值与第二个表顺序值相同,则行的顺序不会以正确的方式呈现。我应该改变什么,我应该如何处理这个问题以获得最佳结果。
+---domain----+
id name
1 example
+----text_modules----+
id name domain_id position
1 example 1 1
+----text_modules-----+
1 example 1 1
如何规范化位置列中的值
答案 0 :(得分:1)
我的问题是:如果第一个表的顺序字段值与第二个表顺序值相同,则行的顺序不会以正确的方式呈现。
那么,不要使用相同的position
!
要利用DBMS强制text_module
永远不能与position
product_module
相同(对于相同的domain_id
),您可以使用继承来“将“position
提取到公共表,并在该表上直接使其成为UNIQUE。像这样:
U1
表示{domain_id, position}
上的UNIQUE约束。
BTW,考虑使用自然键(上面未显示) - InnoDB表是clustered,二级索引很贵。
另一方面,继承带来了自身的复杂性,因此您可以考虑保留当前的表并执行以下操作之一:
position
。