gpt4 book ai didi

mysql - 定义空值意味着全局?

转载 作者:行者123 更新时间:2023-11-29 06:54:08 25 4
gpt4 key购买 nike

我创建了一个website_settings 表。将 website_id 设置为 null 这意味着此 key 应用于其他 Global 中的任何网站,这是一种不好的做法吗?

例如:

+----+-----------+------------+------------------------------+---------------+---------+
| id | client_id | website_id | key | value | is_json |
+----+-----------+------------+------------------------------+---------------+---------+
| 7 | 1 | NULL | display_featured_products | 1 | 0 |
| 9 | 1 | NULL | display_popular_products | 1 | 0 |
| 10 | 1 | 1 | categories_display_mode | across | 0 |
| 11 | 1 | 2 | categories_display_mode | across | 0 |
| 12 | 1 | 3 | categories_display_mode | single | 0 |
| 13 | 1 | NULL | categories_id | ["3","5","6"] | 1 |
+----+-----------+------------+------------------------------+---------------+---------+

您还可以看到我有重复的 categories_display_mode 键,并且 website_id 不为空。

编辑:将 id 列固定为唯一

最佳答案

使 website_id 允许空值意味着该列不能成为该表的键的一部分(键列必须不可为空)。

如果我们查看表中的其他列:

id, client_id, key, value, is_json

我们可以看到这些列中的一些值是重复的:

| 10 |         1 | categories_display_mode      | across        |       0 |
| 10 | 1 | categories_display_mode | across | 0 |

根本不存在候选键。所以你提出的设计似乎有问题。

根据您的说法,我预计 website_idkey 之间存在一些非键依赖关系。如果您应用第五范式的原则,我认为其中一个或两个列应该位于另一个表中并且可以为空。结论:根据此处的信息,我认为将 website_id 设为可为空是错误的。

关于mysql - 定义空值意味着全局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353811/

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