【发布时间】:2015-07-20 10:58:54
【问题描述】:
有好几次,我一直在重新理解数据库关系理论,但我仍然没有成功。我再试一次。
假设我有两张桌子: 动物:
CREATE TABLE animals (id INTEGER PRIMARY KEY, name TEXT);
和食物:
CREATE TABLE food (id INTEGER PRIMARY KEY, food TEXT);
我需要将这两个表连接起来。例如,我想从 animals 表中选择“猪”,并从 food 表中接收猪可以吃的所有东西。 我只是不明白如何将它们联系起来。我相信我可以在 food 表中添加一个外键,该外键将链接到 animal 表的主键,但有一个问题我无法弄清楚:
如果我从例如网络表单中输入数据库中的条目会怎样,我在其中输入动物名称和它吃的产品。动物名称转到第一个表并自动收到一个 id。它只是自动增量。所以,为了使它成为第二个表的关系,我必须从第一个表中选择新的 ID!所以我们得到了三个 sql 请求:
1) INSERT INTO animals (name) VALUES ('pig);
2) SELECT id FROM animals WHERE name='pig';(我们将其存储在一个变量中,暂时不重要)
3)INSERT INTO food (product, animal_id) VALUES ('something', 'id of a pig');
我只是觉得这是错误的。 或者我的大脑无法理解如此复杂的抽象。
请指教。
【问题讨论】:
-
您使用的是哪个 DBMS? Postgres?
-
嗯,Postgress 可以放入数组,这会容易得多,但我想要的是,嗯,通用的方式,适用于所有数据库 MS。
标签: sql postgresql