У меня есть следующие таблицы; который будет содержать информацию о различных типах статей.
Мне нужна помощь, чтобы придумать правильную схему для этого.
Таблицы:
CREATE TABLE IF NOT EXISTS `math_articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL,
`body` text,
PRIMARY KEY (`id`),
UNIQUE KEY `title` (`title`)
)
CREATE TABLE IF NOT EXISTS `news_articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL,
`body` text,
PRIMARY KEY (`id`),
UNIQUE KEY `title` (`title`)
)
CREATE TABLE IF NOT EXISTS `other_articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL,
`body` text,
PRIMARY KEY (`id`),
UNIQUE KEY `title` (`title`)
)
CREATE TABLE IF NOT EXISTS `references` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`article_from_table_name` text NOT NULL,
`from_id` int(11) NOT NULL,
`article_to_table_name` text NOT NULL,
`to_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
вставка данных теста:
INSERT INTO `TEST`.`math_articles` (
`id` ,
`title` ,
`body`
)
VALUES (
NULL , 'fibonacci sequences', 'fib sequences are: 0,1,1,2,3,5...also see article Leonardo of Pisa'
);
Так как этот math_articles.title = 'последовательности fibonacci' упоминает, что статья 'Леонардо Пизанский', моя программа вставит в таблицу other_articles следующие данные:
INSERT INTO `TEST`.`other_articles` (
`id` ,
`title` ,
`body`
)
VALUES (
NULL , 'Leonardo of Pisa', 'Leonardo of Pisa also known as Leonardo of Pisa, Leonardo Pisano, Leonardo Bonacci, Leonardo Fibonacci, or, most commonly, simply Fibonacci, was.....'
);
Проблема схемы с ссылками на таблицы
Так как на таблицу other_articles.title = 'Леонардо Пизанский' ссылались в таблице math_articles.title = 'последовательности Фибоначчи', я должен был сохранить эту ссылку в таблице ссылок следующим образом:
не уверен / проблема вставлена в таблицу ссылок
INSERT INTO `TEST`.`references`
(`id`, `article_from_table_name`, `from_id`, `article_to_table_name`, `to_id`)
VALUES
(NULL, 'math_articles', '1', 'other_articles', '1');
Как лучше всего сохранить эти ссылки?
Мои проблемы со схемой таблицы ссылок!
- Тип данных двух столбцов article_from_table_name и article_to_table_name является текстовым, но они представляют собой реальные таблицы в моей базе данных.
- from_id и to_id должны быть внешними ключами их предполагаемых таблиц как
from_id = article_from_table_name.id и to_id = article_to_table_name.id
Я не знаю, как определить это в схеме.
что если я удалю статью math_articles.title = 'последовательности fibonacci', то таблица ссылок также будет обновлена, я знаю, что должен использовать какой-то триггер "ON DELETE CASCADE".