1 (изменено: vladimirr, 2011-09-04 21:16:37)

Тема: Создать очень простую базу данных в phpmyadmin

Добрый день. Я занялся за изучение создание баз данных в phpmyadmin, до этого я учил создание баз в SQL Server и MS Access. А вот сейчас, я не могу понять как в phpmyadmin создаётся связи между таблицами. В инете я нашёл самую простую базу данных и на её примере хочу понять принцип связей между таблицами в phpmyadmin. Код создание таблиц я написал, а вот в связях стал путаться да и phpmyadmin начал выдавать ошибки. Прошу помочь только в объяснение создание связей. Вот код:

CREATE TABLE `sdelka_inno_db`.`klient` (
`kod_klienta` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`familiya` VARCHAR( 64 ) NOT NULL ,
`imya` VARCHAR( 64 ) NOT NULL ,
`otchestvo` VARCHAR( 64 ) NOT NULL 
) ENGINE = InnoDB;
CREATE TABLE `sdelka_inno_db`.`sdelka` (
`kod_sdelki` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`kol_vo` INT NOT NULL ,
`data` DATE NOT NULL ,
`kod_tovara` SMALLINT NOT NULL ,
`kod_klienta` SMALLINT NOT NULL ,
CONSTRAINT FOREIGN KEY (`kod_tovara`),
CONSTRAINT FOREIGN KEY (`kod_klienta`)
) ENGINE = InnoDB;
CREATE TABLE `sdelka_inno_db`.`test` (
`kod_tovara` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nazvanie` VARCHAR( 64 ) NOT NULL ,
`tip` VARCHAR( 64 ) NOT NULL ,
`cena` FLOAT NOT NULL 
) ENGINE = InnoDB;

Ниже я прикрепил скриншот с описанием этой базы данных, код которой я написал выше.
http://i5.pixs.ru/storage/0/0/8/Opisanieuc_1601690_2913008.jpg

2

Re: Создать очень простую базу данных в phpmyadmin

Ошибка здесь в типе данных (тип должен быть идентичен):
`kod_tovara` SMALLINT UNSIGNED NOT NULL ,
`kod_klienta` SMALLINT UNSIGNED NOT NULL ,

И здесь (связь с ссылочной таблицей устанавливается через REFERENCES):
FOREIGN KEY (`kod_tovara`) REFERENCES `test` (`kod_tovara`),
FOREIGN KEY (`kod_klienta`) REFERENCES `klient` (`kod_klienta`)

В остальном все соответствует задачнику. Сразу после создания таблиц вы увидите связи в Дизайнере.

3

Re: Создать очень простую базу данных в phpmyadmin

Спасибо большое, что указали на мои ошибки, то на 2х или 3х форумах писал и за полгода ниодного ответа.

Я читал, что БД в phpMyAdmin не нуждаются в связях, поэтому про это редко где пишут, если пишут вообще. Если вот в access нет связи между таблицами, то от такой базы никакого толка, а как в phpMyAdmin?

4

Re: Создать очень простую базу данных в phpmyadmin

vladimirr сказал:

Я читал, что БД в phpMyAdmin не нуждаются в связях, поэтому про это редко где пишут, если пишут вообще. Если вот в access нет связи между таблицами, то от такой базы никакого толка, а как в phpMyAdmin?

Все зависит от типа таблиц. Для таблиц имеющих тип MYISAM связи в phpMyAdmin устанавливаются только для лучшего визуального их представления. Для таблиц имеющих тип InnoDB, связи могут влиять на данные (поведение задается при создании связи), например, каскадное удаление или обновление связанных данных.