数据库设计MySQL使用外键

时间:2010-04-22 04:00:55

标签: mysql database-design orm kohana

我在理解如何处理我正在制作的程序的数据库端时遇到了一些麻烦。我在Kohana使用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 :(得分:0)

您必须使用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...