Я создаю базу данных продуктов и пытаюсь сделать это правильно. Вот как у меня настроена база данных.
Мои таблицы продуктов - это просто описание продукта и маркетинга. Стол sku связывает skuid с продукцией. В одном продукте много скусов. Skus уникальны для каждого продукта. Три таблицы атрибутов связывают значение атрибута (то есть размер, вес, цвет и т. Д.) С идентификатором sku.
Вот результат.
http://174.121.67.116/~aware/awarebk/product_sku_view.php?code=789
Продукт 789 имеет отношение к 17, 24, 25, 29, 30. Строки 25, 29 и 30 - моя проблема. Вы видите, что дубликаты разрешены. Эта таблица не существует в базе данных. Он создан с использованием кода ниже. Я хочу, чтобы комбинация атрибутов была уникальной для каждого идентификатора sku. Должен ли я сделать это с помощью внешней проверки? Есть ли способ сделать это на бэкэнде? Вот код mysql, который я использую для генерации строк sku.
$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, уникальна и что дубликаты не могут быть добавлены. Итак, как мне проверить наличие дубликатов в нескольких таблицах?