我在理解如何处理我正在制作的程序的数据库端时遇到了一些麻烦。我在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中使用连接表。
感谢您的帮助,这将真正帮助我更好地理解这个问题。
答案 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...