好几次我都在回到对数据库关系理论的理解上,但仍然没有成功。我会再试一次。
假设我有两个表: 动物:
CREATE TABLE animals (id INTEGER PRIMARY KEY, name TEXT);
和食物:
CREATE TABLE food (id INTEGER PRIMARY KEY, food TEXT);
我需要的是将这两个表连接起来。例如,我想从 animals 表中选择“ pig ”,并从 food 表中获取 pig 可以吃的所有东西。 我只是不知道如何将它们联系起来。我相信我可以向 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');
我只是觉得不对。 或者我的大脑无法理解如此复杂的抽象概念。
请指教。
最佳答案
您需要一个连接表,它与Animals
和Food
相关。这看起来像:
CREATE TABLE AnimalFoods (
id INTEGER PRIMARY KEY,
AnimalId int references Animal(id),
FoodId int references Food(id)
);
然后您可以使用这些表之间的各种连接来回答您的问题。
关于SQL 和表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514744/