下午好,
我正在处理SQL数据库的表布局,该数据库将存储个人信息和测试信息。这包括个人识别信息,如姓名、医学身份、出生日期等,以及测试特定信息--特别是来自各种心理测量工具的原始和标准分数。为了解决这个问题,我将提供以下示例表:
Indiv_Information;Test_Log;Test_1;Test_2;Test_3
关于将个人信息与这些考试成绩联系起来的最佳方法,我有一些疑问。备选方案1如下所示:

在本例中,记录的每个测试都链接到参加测试的个人的医学id。我对这个布局唯一关心的是,如果我想要创建一个显示--一个用户所做的所有测试的列表--我必须扫描所有这些表,并且当前有20+。
选项2:创建一个测试日志表,并将其链接到包含每个测试分数的多个测试表。看起来是这样的:

生成每个人在这个设置中所做的所有测试的列表要容易得多,但我不确定这是否是一个很好的报告设置。这里的主要问题是字段"assessment_id“链接到多个表,而指定要连接到测试日志表的得分数据的唯一方法是使用"test_name_id”直接通信量。我甚至不知道这是否可能。
我正在寻找关于这两种布局中哪一种选择的意见。我是接近最理想的,还是完全偏离了基础。我在数据库设计方面还不太有经验。
干杯,祝你周末愉快!
发布于 2019-06-22 03:36:38
根据您的信息,让您有如下所示的ERD草案:
TEST
+ ID (PK)
+ NAME (UK)
+ ...
TEST_QUESTION
+ TEST_ID (PK)
+ QUESTION_ORDER (PK)
+ QUESTION_CONTENT
+ ...
INDIVIDUAL
+ ID (PK)
+ MEDICAL_ID
+ ...
TEST_LOG
+ ID (PK)
+ INDIVIDUAL_ID (FK to INDIVIDUAL)
+ TEST_ID (FK to TEST)
+ ...如果我们要优化报告,就应该对数据库结构进行去denormalize,这意味着接受数据冗余。在这种情况下,我们可以将TEST和TEST_QUESTION合并到一个表中。
希望这能帮上忙。
https://dba.stackexchange.com/questions/241151
复制相似问题