sql - 复合键中的一个字段可以依赖于另一个字段吗?
问题描述
我正在考虑为我的表(由两个字段,字段 A 和 B)组成一个复合键。但是,字段 B 依赖于字段 A。这个复合键会违反任何数据库设计原则吗?
解决方案
嗯,是。它确实违反了数据库设计原则。为什么不直接使用A
?也就是说,您始终可以查找B
使用 a的值JOIN
,因此不需要复合外键引用。将 的值存储B
在引用表中是多余且低效的(占用数据页和索引页的空间)。
在某些情况下,这样的外键很有用。您没有提供足够的信息来了解您是否有这种情况。因此,作为一般设计原则,这听起来不正确。可能有例外,所以这并不总是一个坏主意。
推荐阅读
- html - 如何在不干扰主页等链接的情况下从 URL 路径中删除文件夹名称?
- android - 收到错误未知主机“dl.google.com”。您可能需要在 Gradle.in android 4.02 中调整代理设置
- ffmpeg - ffmpeg concat图像与视频,但输出超长
- react-native - 无法通过运行 react-native run-android 命令启动模拟器
- c# - 启动基地失败!/app/.local-chromium/Linux-706915/chrome-linux/chrome: ... libX11.so.6
- python - 如何查找列表中前两个元素的索引,它们是另一个列表中的任何元素?
- reactjs - Reactjs 输出未显示
- gdb - 是否可以指示 GDB 从目标异步获取变量值?
- sql-server - 将日期时间转换为生肖名称
- r - 从 R 列中删除特殊字符和数字