Задать вопрос
@Tuman6

Как связать запись с таблицей в MySql?

Здравствуйте.
Может кто сталкивался и сможет подсказать:
есть БД MySql в ней 2 типа таблиц:
1-ый - таблицы где лежат записи разных документов разных форм(на 10 разных форм есть 10 разных таблиц).
2-ой - 1 таблица, которая хранит список этих форм и их описание.
Нужно связать эту таблицу с другими таблицами: 1 запись из этой таблицы ссылается на таблицу формы т.е. внешний ключ ссылается имя таблицы.
Может я мудрю и можно сделать проще...
Думал внести в первую таблицу поле с типом формы, но тогда во все записи любой формы нужно добавить поле с типом и получится избыток информации.
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
idShura
@idShura
Накидал на коленке, поэтому могу ошибаться (Думаю, знающие товарищи поправят):

TAB001_TYPE - Тип документа
TAB002_FIELD - Поля документа
TAB003_DOCS - Документы
TAB004_DOC_VALUE - Значения полей документа

Примерная схема БД
5a4226f6b0f96129029943.png
SQL (Пример)
CREATE TABLE `TAB001_TYPE` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`name` TEXT NOT NULL,
	PRIMARY KEY (`id`)
);

CREATE TABLE `TAB002_FIELD` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`t001_id` INT NOT NULL,
	`field_name` TEXT NOT NULL,
	`field_note` TEXT NOT NULL,
	PRIMARY KEY (`id`)
);

CREATE TABLE `TAB004_DOC_VALUE` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`t003_id` INT NOT NULL,
	`t002_id` INT NOT NULL,
	`value` varchar NOT NULL,
	PRIMARY KEY (`id`)
);

CREATE TABLE `TAB003_DOCS` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`t001_id` INT NOT NULL,
	`doc_name` TEXT NOT NULL,
	`doc_num` INT NOT NULL,
	PRIMARY KEY (`id`)
);

ALTER TABLE `TAB002_FIELD` ADD CONSTRAINT `TAB002_FIELD_fk0` FOREIGN KEY (`t001_id`) REFERENCES `TAB001_TYPE`(`id`);
ALTER TABLE `TAB004_DOC_VALUE` ADD CONSTRAINT `TAB004_DOC_VALUE_fk0` FOREIGN KEY (`t003_id`) REFERENCES `TAB003_DOCS`(`id`);
ALTER TABLE `TAB004_DOC_VALUE` ADD CONSTRAINT `TAB004_DOC_VALUE_fk1` FOREIGN KEY (`t002_id`) REFERENCES `TAB002_FIELD`(`id`);
ALTER TABLE `TAB003_DOCS` ADD CONSTRAINT `TAB003_DOCS_fk0` FOREIGN KEY (`t001_id`) REFERENCES `TAB001_TYPE`(`id`);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы