`Код Клиента` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`ФИО клиента` VARCHAR(80) NOT NULL ,
`Телефон клиента` INT NULL , -- В дальнейшем изменим тип на строковый – VARCHAR.
`Адрес клиента` VARCHAR(150) NULL ,
PRIMARY KEY (`Код Клиента`) ,
INDEX `ixClient` (`ФИО клиента` ASC)
);
Модифицируем таблицу. Изменим столбец «Телефон клиента», сменив для него тип данных на строковый. Для номеров телефонов лучше использовать тип данных VARCHAR, т.к. в этом случае удобнее осуществлять поиск. Например, можно будет проводить поиск по трем первым цифрам номера.
Заодно сделаем ввод номера телефона обязательным.
ALTER TABLE Клиенты MODIFY `Телефон клиента` VARCHAR(7) NOT NULL; -- Семь символов для телефона в данном примере достаточно.
Проверим правильность параметров таблицы.
DESC Клиенты;
Создадим таблицу «Заказы» c лишней, ненужной колонкой.
DROP TABLE IF EXISTS `Заказы` ;
CREATE TABLE IF NOT EXISTS `Заказы`
(
`Код Заказа` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`Код магазина` INT UNSIGNED NOT NULL ,
`Код товара` INT UNSIGNED NOT NULL ,
`Количество` INT NOT NULL ,
`Код клиента` INT UNSIGNED NOT NULL ,
`Лишняя колонка` INT NOT NULL, -- Ненужная колонка, которая будет удалена далее оператором ALTER TABLE.
PRIMARY KEY (`Код Заказа`) ,
INDEX `FKShopCod` (`Код магазина` ASC) , -- Создадим индекс по столбцу «Код магазина».
INDEX `FKGoodsCod` (`Код товара` ASC) ,
INDEX `FKClient` (`Код клиента` ASC),
CONSTRAINT `FKShopCod` -- Создадим ограничение на созданный индекс,
FOREIGN KEY (`Код магазина` ) -- превратив его во внешний ключ,
REFERENCES `Интернет-Магазины` (`Код Магазина` ), -- ссылающийся на столбец «Код магазина» из таблицы «Интернет-магазины».
CONSTRAINT `FKGoodsCod`
FOREIGN KEY (`Код товара` )
REFERENCES `Товары` (`Код Товара` ),
CONSTRAINT `FKClient`
FOREIGN KEY (`Код клиента` )
REFERENCES `Клиенты` (`Код Клиента` )
);
Примечание: MySQL 5, движок InnoDB поддерживает ссылочную целостность. Это означает, что задав вышеупомянутый внешний ключ, значениями атрибута «Код магазина» таблицы «Заказы» могут являться только те значения, которые уже существуют в одноименном столбце таблицы «Интернет-магазины». Проще говоря, нельзя сделать заказ по несуществующему в БД магазину. Аналогично два других внешних ключа.
Модифицируем таблицу.
В этот удалим не нужную нам колонку, и создадим другую, содержащую дату заказа.
ALTER TABLE заказы -- Изменим таблицу «Заказы».
ADD COLUMN `Дата заказа` DATE NULL, -- Добавим колонку «Дата заказа» типа DATE, которая не обязательна для заполнения (NULL).
DROP COLUMN `Лишняя колонка`; -- Удалим «лишнюю колонку».