gpt4 book ai didi

mysql - 如果数据不保留在 sqlite 中特定外键的表中,如何在列中添加数据

转载 作者:行者123 更新时间:2023-11-29 06:46:24 26 4
gpt4 key购买 nike

假设我有一个名为 category 的表我有 2 列 cat_idcat_name

表格是这样的

cat_id   cat_name
1 Science
2 Arts

我有另一个名为 item 的表, 其中cat_idcategory表是外键,表看起来像

item_id       item_name    cat_id
1 math 1
2 literature 2
3 physics 1

现在,如果我在 Science 中再次插入数学运算,我想编写这样的查询然后它不会插入,但如果我想在 Arts 中插入数学然后它会成功插入。请记住,我只有 item_namecat_name在我手中,我想添加 item_namecat_id其中cat_name在项目表中。

到目前为止我是这样的

insert into item (item_name,cat_id) select 'abdul',category.cat_id from category where NOT EXISTS (select * from item WHERE category.cat_id = item.foreign_id)

但这给了我尴尬的结果,任何人都可以帮忙吗?

最佳答案

你基本上没有意识到这只是一个 normalization问题。当您尝试在同一张表中两次插入“math”时,这一点就变得很明显了。这是多对多的关系,而不是一对多的关系。经验法则:多对多关系总是生成一个表

适当的表结构如下所示(包括示例数据):

类别:(cat_id)

cat_id   cat_name
1 Science
2 Arts

项目:(item_id)

item_id       item_name
1 math
2 literature
3 physics

Categories_Items(cat_id、item_id)

cat_id       item_id
1 1
1 3
2 2

在圆括号中,您会看到主键。请记住,最后一张表有一个复合 PK。这样您就不会为同一类别重复数学运算。

关于mysql - 如果数据不保留在 sqlite 中特定外键的表中,如何在列中添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18474282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com