Database design 如何在数据库中存储调查年份

Database design 如何在数据库中存储调查年份,database-design,Database Design,我正在为一个调查web应用程序设计数据库。调查应该每年进行一次,人们可以通过从下拉列表中选择年份来进行过去几年的调查 数据库结构是这样的 大学表->学院(子表)->课程(子表) 我需要发出类似“查找特定调查年度的课程数量”这样的查询 我是否需要在所有数据库表(50多个表)中存储调查年份,尽管这看起来很简单,但我觉得这不是一个正确的设计(因为数据重复)。请分享你的想法 谢谢去阅读这篇文章: . 您应该瞄准的范式是第三范式(3NF)。这将消除数据重复。您应该能够从所有“子”表中删除调查年份。但是,

我正在为一个调查web应用程序设计数据库。调查应该每年进行一次,人们可以通过从下拉列表中选择年份来进行过去几年的调查

数据库结构是这样的

大学表->学院(子表)->课程(子表)

我需要发出类似“查找特定调查年度的课程数量”这样的查询

我是否需要在所有数据库表(50多个表)中存储调查年份,尽管这看起来很简单,但我觉得这不是一个正确的设计(因为数据重复)。请分享你的想法

谢谢

去阅读这篇文章:
. 您应该瞄准的范式是第三范式(3NF)。这将消除数据重复。您应该能够从所有“子”表中删除调查年份。但是,如果调查年份是父表主键的一部分,则无法从子表中删除该字段。而是使用单个整型字段作为主键,而不是包含调查年份的复合主键。

是否可以包括表结构?调查数据存储在哪里?表格包含有关大学、学院(拥有大学外键)、课程(拥有大学外键)的信息。数据存储在Postgres数据库中。对不起,你的问题真的不清楚。。这些桌子看起来像什么?有调查表吗?调查与大学/学院/课程等之间的关系是什么?对不起,我无法正确解释问题,没有调查表,大学、学院和课程等表存储了有关调查的信息。就像每所大学填写一份调查表,以了解其学院和课程。虽然这可以作为数据输入而不是调查,但数据是每年输入的(如调查)。您也可以尝试将此发布在上,或者感谢您的回复,我理解标准化和年份不是主键的一部分。理论上,我可以将年份存储在父表中,并使用联接查询根据年份从子表中获取结果。但我有使用联接表的多级子层次结构,使用多个联接发出查询实际上非常困难。我正试图找到一些解决方案,将调查年度和子表联系起来。也许每年只需要一个单独的数据库?是的,但用户可以填写过去几年的表格。我不知道如何根据应用程序逻辑维护单独的数据库。谢谢你的帮助。