Разработка базы данных MySQL с использованием внешних ключей - PullRequest
1 голос
/ 22 апреля 2010

У меня возникли небольшие проблемы с пониманием того, как обрабатывать конец базы данных программы, которую я делаю. Я использую ORM в Кохане, но надеюсь, что общее понимание того, как решить эту проблему, приведет меня к ответу с ORM.

Я пишу программу для пользователей, которая будет управлять информацией о своих исследованиях. Мои таблицы в основном такие:

CREATE TABLE tags(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
tags VARCHAR(30),
UNIQUE(tags)
)
ENGINE=INNODB DEFAULT CHARSET=utf8;


CREATE TABLE stock_tags(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
tag_id INT NOT NULL,
stock_id INT NOT NULL,
FOREIGN KEY (tag_id) REFERENCES tags(id),
FOREIGN KEY(stock_id) REFERENCES stocks(id) ON DELETE CASCADE
)
ENGINE=INNODB DEFAULT CHARSET=utf8;


CREATE TABLE notes(
id INT AUTO_INCREMENT NOT NULL,
stock_id INT NOT NULL,
notes TEXT NOT NULL,
FOREIGN KEY (stock_id) REFERENCES stocks(id) ON DELETE CASCADE,
PRIMARY KEY(id)
)
ENGINE=INNODB DEFAULT CHARSET=utf8;


CREATE TABLE links(
id INT AUTO_INCREMENT NOT NULL,
stock_id INT NOT NULL,
links VARCHAR(2083) NOT NULL,
FOREIGN KEY (stock_id) REFERENCES stocks(id) ON DELETE CASCADE,
PRIMARY KEY(id) 
)
ENGINE=INNODB DEFAULT CHARSET=utf8;

Как получить все атрибуты одной акции, включая ее ссылки, заметки и теги? Нужно ли добавлять ссылки, заметки и столбцы тегов в таблицу акций, а затем, как вы это называете? Я знаю, что использование ORM отличается, и я предполагаю, что могу использовать таблицы соединений в SQL.

Спасибо за любую помощь, это действительно поможет мне лучше понять проблему.

1 Ответ

0 голосов
/ 22 апреля 2010

Вам нужно будет связать таблицы вместе, используя JOINS

Что-то вроде

SELECT  *
FROM    stocks s INNER JOIN
        stock_tags st ON s.id = st.stock_id INNER JOIN
        tags t ON st.tag_id = t.id etc...
...