我正在创建一个产品数据库并尝试以正确的方式进行。到目前为止,我的数据库设置如下。
我的产品表只是一个产品和营销说明。 sku表将skuid与productid联系起来。一种产品有很多skus。 Skus是每种产品都独一无二的。三个属性表将属性值(即大小,重量,颜色等)与sku id相关联。
结果如下。
http://174.121.67.116/~aware/awarebk/product_sku_view.php?code=789
产品789具有与之相关的skus 17,24,25,29,30。第25,29和30行是我的问题。您看到允许重复。该表在数据库中不存在。它是使用下面的代码创建的。我希望每个sku id的属性组合都是唯一的。我是通过前端验证做到的吗?有没有办法在后端执行此操作?这是我用来生成sku行的mysql代码。
$sidresult = mysql_query("SELECT sku.product_idproduct,
sku.idsku,
amaterial.material,
amcolor.color,
atype.type
FROM sku sku
LEFT OUTER JOIN amaterial ON sku.idsku = amaterial.sku_idsku
LEFT OUTER JOIN amcolor ON sku.idsku = amcolor.sku_idsku
LEFT OUTER JOIN atype ON sku.idsku = atype.sku_idsku
WHERE sku.product_idproduct =$pid");
if (mysql_num_rows($sidresult) > 0) {
echo '
<table border="1" cellspacing="0" cellpadding="5px">
<tr>
<th>SKU ID</th>
<th>Material</th>
<th>Material Color</th>
<th>Type</th>
</tr>';
while ($sidrow = mysql_fetch_array($sidresult)) {
echo '<tr>';
echo '<td>' . $sidrow['idsku'] . '</td>';
echo '<td>' . $sidrow['material'] . '</td>';
echo '<td>' . $sidrow['color'] . '</td>';
echo '<td>' . $sidrow['type'] . '</td>';
echo "</tr>";
}
// close table>
echo "</table>";
同样,我的目标是确保使用skuid生成的属性行是唯一的,并且无法添加重复项。那么如何验证多个表中的重复项呢?
答案 0 :(得分:1)
您的后端验证代码应检查用户针对产品ID输入的新SKU值 - 看起来您正在使用PHP,因此此例程应位于您处理SKU输入表单的位置(add_product_sku_view.php) 。
获取用户的输入,运行SQL查询以查看它是否返回任何现有SKU,并在组合已存在时通知用户。只有在他们输入了唯一的SKU详细信息后,才允许将记录插入到SKU表中。