Здравствуйте. Столкнулся с MySQL. Курс ознакомительный, но все же хотелось бы знать хотя бы азы. Нашел один пример:
CREATE TABLE usr (
usr_id INT AUTO_INCREMENT NOT NULL,
FIRST VARCHAR(25) NOT NULL,
surname VARCHAR(50) NOT NULL,
PRIMARY KEY(usr_id)
) ENGINE=MyISAM CHARACTER SET=UTF8;
CREATE TABLE product (
prod_id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(40) NOT NULL,
descr VARCHAR(255) NOT NULL,
PRIMARY KEY(prod_id)
) ENGINE=MyISAM CHARACTER SET=UTF8;
CREATE TABLE invoice (
inv_id INT AUTO_INCREMENT NOT NULL,
usr_id INT NOT NULL,
prod_id INT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY(inv_id),
FOREIGN KEY (usr_id) REFERENCES usr(usr_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY (prod_id) REFERENCES product(prod_id)
ON UPDATE CASCADE
ON DELETE RESTRICT
) ENGINE=MyISAM CHARACTER SET=UTF8;
Суть следующая: таблица товаров, покупателей и таблица заказов. Вопросы:
usr_id INT AUTO_INCREMENT NOT NULL,
означает создание первичного ключа таблици покупаителей, ID увеличиваеться автоматом и не может быть нулевым?ENGINE=MyISAM CHARACTER SET=UTF8;
(что - то с кодировкой) и обязательно ли это?FOREIGN KEY (usr_id) REFERENCES usr(usr_id) ON UPDATE CASCADE ON DELETE RESTRICT,
показывает, что изменение записи продукт отображается в заказах, а изменение в заказе не отобразится на продукте (так было написано на сайте)? Правильно ли я понял, если убрать продукт то и заказ, связанный с ним уберется, а если, к примеру, покупатель отменил заказ, то товар остаеться в таблице товаров? И эти особенности (изменения) указываються всегда и только после внешних ключей родительских таблиц для данной дочерней при ее создании?P.S.: возможно многим вопросы покажутся профанскими, но для этого ведь и создан форум. Заранее благодарю того, у кого хватит терпения мне ответить.
В вашей схеме реализованы 2 сущности: покупатели и товары. Связь между ними многие-ко-многим, она осуществляется с помощью смежной таблицы: заказы.
В смежной таблице связи многие-ко-многим учитывается то, что и покупатель может заказать несколько товаров, и один товар может быть заказан несколькими покупателями. Например, записи в таблице заказов:
(1, 1, 1, 5) - пользователь 1 заказал товар 1 в кол-ве 5 штук
(2, 1, 2, 6) - пользователь 1 заказал товар 2 в кол-ве 6 штук
(3, 2, 2, 8) - пользователь 2 заказал товар 2 в кол-ве 8 штук
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Что делают эти операторы в пределах одного выражения? Впервые наткнулся на подобный синтаксисВроде:
Как получить id последнего добавленного елемента? Нашел следующую конструкцию SELECT LAST_INSERT_ID() НО на сколько она безопасна?