Я предполагаю, как сделать правильные противопоставления следующим таблицам:
Таблица m_option :
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(32) | NO | PRI | NULL | |
| name | varchar(255)| NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
Таблица m_option_value :
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(32) | NO | PRI | NULL | |
| option | int(32) | NO | INDX| NULL | |
| name | varchar(255)| NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
Таблица product :
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(32) | NO | PRI | NULL | |
| name | varchar(255 | NO | | NULL | |
| option | int(32) | NO | INDX| NULL | |
| opt_val | int(32) | NO | INDX| NULL | |
+----------+-------------+------+-----+---------+-------+
В таблице product столбцы "option" и "opt_val" являются индексами и имеютпротивопоказание.«option» ограничен внешним ключом «id» в таблице m_option , а «opt_val» ограничен внешним ключом «id» в таблице m_option_value .То, чего я пытаюсь добиться, - это ограничить значения «opt_val» не только его основной таблицей, но и столбцом текущей таблицы option .Я имею в виду, что я хочу разрешить значения в «opt_val» только в том случае, если выполняются два условия: значение должно существовать в option (уже достигнуто с регулярным ограничением), а значение должно иметь такой же идентификатор основной таблицы, что и столбец «option»значение.Если я не правильно выразил mysqlf, я приведу примеры:
Таблица m_option значения:
таблица m_option_values значения:
- 1 - 1 (цвет) - красный
- 2 - 1 (цвет)- синий
- 3 - 2 (форма) - квадрат
- 4 - 2 (форма) - круг
таблица продукт значения:
- 1 - Toy1 - 1 (цвет) - 1 (красный) ПРАВИЛЬНО
- 2 - Toy2 - 2 (форма) - 3 (квадрат) ПРАВИЛЬНО
- 3 - Toy3 - 1 (Цвет) - 4 (Круг) РАЗРЕШЕНО, НО НЕПРАВИЛЬНО
Строка 3 «opt_val» столбец неверен, потому чтостолбец должен разрешать только значения «Color», определенные в «m_option_values» со значением «option», установленным как «1».