Сначала вы должны спросить себя, действительно ли ваш дизайн действительно тот, который вам нужен.
В частности, я говорю о нормализации ваших отношений.Ваши таблицы не отображаются в второй нормальной форме .Возможно, вы захотите иметь таблицу категорий, а затем иметь внешний ключ из таблицы продуктов в таблицу категорий.
Похоже на это
product_id | category_id
1 1
2 1
3 1
4 2
5 2
category_id | category_name
1 cat one
2 cat two
Чтобы перейти ко второй нормальной форме, вы бынеобходимо перенести данные.
Создать таблицу категорий
create table categories (category_id int(11), category_name varchar(100));
Затем выбрать все избыточные данные в таблицу.
insert into categories
select
category_id,
category_name
from products
Удалить избыточные данные
delete c2 from categories c1, categories c2
where c1.category_name = c2.category_name and c1.category_id < c2.category_id
Теперь наведите таблицу продуктов на нормализованные данные
update products, categories
set product.category_id = categories.category_id
where product.category_name = categories.category_name
Затем удалите столбец category_name из продуктов
alter tables products drop column category_name
Наконец добавьте ограничение внешнего ключа из продуктов в категории.
Конечным результатом является нормализованная схема, исключающая возможность избыточных данных.
Редактировать: я действительно имею в виду вторую нормальную форму, а неfirst.
Другое редактирование: шаг «Удалить избыточные данные» изначально был неверным и удалил бы все категории =)