mysql表,其中包含“计算值”和同时为主键和外键

dhxwm5r4  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(719)

我已经阅读了其他问题,例如:
外键作为主键可以吗?
同时使用主键和外键
然而,在我看来,答案是完全不同的,答案是否可以让键同时是主的和外来的取决于特定的数据库和包含键的表的用途。
这是作为一个考试项目的一部分完成的,我必须要么能够解释我的数据库设计,要么为我的演示提出一些其他的东西。
我的问题是:
您如何最好地证明我的数据库中的“选定的\u答案”表是正确的?i、 这有意义吗?
是否仍处于第三范式?
我是否可以在实现当前表的相同目的和功能的同时使其变得不同和简单?
这是我当前的关系模型:
关系模型
这是我当前的sql表脚本:
sql表
这个想法是建立一个数据库,可以存储一个公司的“审计”数据,该公司希望审计他们遵守gdpr的情况。这是一项考试作业。
我之所以有“选择的答案”,是因为我可以比较从用户选择的答案与被问的问题。
键同时是主键和外键,因此数字是“唯一的”,同时仍然引用审计和问题表。
数据库还应该能够存储每个审计及其答案。
对于更多的上下文,我用“测试数据”填充我的表,这样我就可以使用存储的触发器、过程和函数。
试验数据1
测试数据2
所有问题预设为问题1-12,所有答案为答案1-5。因此,这些数字肯定会重复出现,但目的是为了存储审计和得到的答复。
这是数据库计算的最终结果:公司名称和注册号(cvr-丹麦语)、审核时间(通过存储的触发器更新)、答案的平均分数和基于平均分数的“合规级别”。
最终结果
我希望我已经提供了足够的信息给您来帮助我:-)如果您还需要查看存储过程、函数和触发器,请告诉我,我会上传它们。

ars1skjm

ars1skjm1#

你的table有道理。您可以将其视为审计和问题之间的多对多关系(每个审计可以回答许多问题;每个问题都可以在多个审计中得到回答,并带有一个属性,该属性指示审计对问题的回答是什么,该属性(由答案表的外键)约束为多个预定义答案中的一个。我还建议你写下relvar predicate ,看看它们是否有意义。
它是在3nf中,除非有一些奇怪的函数依赖(fd)您没有告诉我们。似乎只有一个非平凡的fd, {Audit_ID, Answer_ID} -> {Answer_ID} ,左侧是一个超键(实际上是一个键),所以表是boyce codd范式,这意味着3nf(我真的不知道为什么人们在有bcnf的时候还要麻烦3nf。)
我想不出任何更简单的解决方案来满足同样的要求。您的设计可能会有问题,因为使用了代理密钥,再加上缺少自然密钥,但这是另一个问题。

相关问题