database - 我有一张桌子,其中整件事是关键(三个要素)我不确定它是最佳的吗?
问题描述
可以说我有以下表格:
任务表:
Task ID, Task Name, Capability ID
能力表:
Capability ID, Capability Name
应用表:
App ID, App Name, App File
组件表:
Component ID, Model, Manufacturer, Revision
在哪里:
- 我希望一项任务具有一个相关的能力。
- 每个功能都由一组特定组件和一组运行在其上的特定应用程序组成。
例如,我们有 task1,它使用了能力 1。能力 1 要求:
- Component1 运行 {App1 和 App2}
- Component2 运行 {App2}
所以为了解决这个问题,我制作了一个链接表,如下所示:
能力部分:
Capability ID, Component ID, App ID
所有三列都作为主键。感觉这需要进一步拆分,但我不知道该怎么做(或者根本不需要这样做)。我想我已经满足了数据库范式 1-3。
这是正确的(就数据库规范化而言)还是我可以做一些进一步的优化?
解决方案
根据您的描述,您在 Capability、App 和 Component 之间建立了多对多的关系。鉴于此,据我所知,您描述的三列链接表是完全合理的。
推荐阅读
- reactjs - React-query:如果查询为空,如何避免触发函数调用?
- swift - 用于自动完成的 SwiftUI 示例
- react-native - 使用 expo、native-base 和 react-navigate 时如何构建组件和屏幕?
- plsql - 如何使用表函数
- windows-installer - 我们应该在安装 Chocolatey 后重置执行策略吗?
- javascript - 是否有一种内置方法可以在 Javascript 中的两个数字之间创建一个数字数组?
- java - org.hibernate.TransientObjectException 使用 CascadeType.ALL 持久化嵌套子级
- javascript - parseInt 替代方案,当字符串实际上不包含实整数时返回 NaN
- python - 容器内的可调整框架
- batch-file - 创建一个 bat 文件以将数据库从网络服务器复制到本地 PC C:\Users\"username" 文件夹