По-моему, вы спроектировали это неправильно. Предложение (как комментарий к вопросу о том, что на products
должны ссылаться 3 другие таблицы) - опять же, на мой взгляд, - неправильно.
Не следует создавать отдельные таблицы для рубашек, перчаток илиноски. Что вы будете делать, когда начнете продавать шапки, брюки или обувь? Будете ли вы создавать новые таблицы для всех этих? Конечно, нет - это просто одежда (товары).
Итак - создайте одну таблицу, которая содержит все типы;когда появляется новый тип, просто добавьте новую строку в эту таблицу и сделайте ссылку на нее из таблицы products
.
Примерно так:
SQL> create table product_type
2 (id_type number primary key,
3 name varchar2(30)
4 );
Table created.
SQL> create table products
2 (id_product number primary key,
3 id_type number references product_type,
4 color varchar2(20),
5 price number
6 );
Table created.
SQL> insert into product_type
2 select 1, 'shirt' from dual union all
3 select 2, 'glove' from dual union all
4 select 3, 'socks' from dual;
3 rows created.
SQL> insert into products
2 -- shirt
3 select 100, 1, 'red', 100 from dual union all
4 -- gloves
5 select 101, 2, 'blue', 150 from dual;
2 rows created.
SQL>
А вот и обувь:
SQL> insert into product_type
2 select 4, 'shoes' from dual;
1 row created.
SQL> insert into products
2 select 113, 4, 'brown', 400 from dual;
1 row created.
SQL>
Вывод: прочитайте о нормализация .
Если кто-то скажет, что «цвета должны быть в отдельной таблице», ну, возможно, это тоже не будет плохой идеей. Кроме того, нужно ли расширять таблицу products
на столбец даты (который будет показывать, какая цена действовала в определенный период)? Неплохая идея. Есть множество опций, которые вы можете включить в модель. Я просто пытался указать вам правильное направление.