id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id, id_producto, id_usuario),
INDEX (id),
INDEX (id_producto),
INDEX (id_usuario),
FOREIGN KEY (id_producto) REFERENCES producto(id),
FOREIGN KEY (id_usuario) REFERENCES usuario(id)
Анализ:
AUTO_INCREMENT
, как правило, "уникальный"
PRIMARY KEY
, по определению, "уникальный"
- Начиная соединение
PRIMARY KEY
с чем-то, что является уникальным не делает много смысла.
FOREIGN KEYs
необходимые индексы. То есть FOREIGN KEY (id_usuario)...
нуждается в INDEX (id_usuario)
.
- В статье
WHERE
в статьях SELECTs
, UPDATEs
и DELETEs
необходимо изучить, какие индексы необходимы. (При отсутствии показывая нам те, я буду считать, нет критических.)
Учитывая все вышесказанное, я рекомендую эти показатели:
PRIMARY KEY(id),
INDEX (id_producto),
INDEX (id_usuario)
Но ... Существует еще один рассмотрение. Является ли это сопоставлением «многие-ко-многим» между usuario
и producto
? Если да, то пара (usario, producto)
является «уникальной»? Если да все это, то:
CREATE TABLE ordenes_productos (
id_producto INT NOT NULL,
id_usuario INT NOT NULL,
fecha_hora DATETIME NOT NULL,
PRIMARY KEY(id_producto, id_usuario), -- map one way
INDEX (id_usuario, id_producto), -- map the other way
FOREIGN KEY (id_producto) REFERENCES producto(id),
FOREIGN KEY (id_usuario) REFERENCES usuario(id)
) ENGINE=INNODB;
More details on many-to-many;
На другую тему ...
CREATE TABLE producto (
id INT NOT NULL AUTO_INCREMENT,
precio DECIMAL,
PRIMARY KEY(id)
) ENGINE=INNODB;
Существуют ли какие-либо другие поля в этой таблице? Вы просто «нормализуете» цену? Не рекомендуется нормализовать любое «непрерывное» значение (дата, число, поплавок и т. Д.). Предостережение: этот комментарий о нормализации и мой комментарий о многих-ко-многим несовместимы.
usuario
отличается (относительно нормализации) тем, что VARCHAR
не является «непрерывным», а VARCHAR
намного больше.
уточните свой вопрос plz, чтобы получить еще несколько подсказок. что вы подразумеваете под * созданием третьей таблицы в следующем клаузуле *? –
Привет @Pokies, я ссылаюсь на Create Clausule таблицы 'ordenes_productos', в этом я - мое замешательство. – WltrRpo