引用特定结果的用户的数据库表设计

时间:2016-02-27 04:19:53

标签: sql database postgresql database-design database-schema

enter image description here 场景: 用户输入名称,目标和大小。目标是"长","平均","短"。尺寸是"大","中","小"。有3个表。 User存储每个用户的名称,目标和大小。 Final根据目标/尺寸组合存储结果。 UserFinal用作关联表,用于存储具有相应结果的相应用户。目标和大小的特定组合会产生分配给该用户的特定结果(请参阅下表)。

GOAL        SIZE    OUTCOME
Long        Big     12
Long        Medium  14
Long        Small   18
Average     Big     13
Average     Medium  16
Average     Small   19
Short       Big     15
Short       Medium  17
Short       Small   20

目标:表Final不应该增长,而只是用作查找'用户提交目标和大小时的表格(不确定预计会增长的表格是不是很好的设计?)。 outcome值将用于每个特定用户的进一步计算。

问题:图示表格设计是否反映了这种情况的正确方法?如果不是,那么实现这个目标的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

似乎目标和大小标识结果,每个用户设置一个结果。 请参阅以下数据模型:

DM

示例数据:

Goal
--------
L  Long
A  Average
S  Short
Size
--------
B  Big
M  Medium
S  Small
Outcome
--------
L  B  12
L  M  14
L  S  18
A  B  13
A  M  16
A  S  19
S  B  15
S  M  17
S  S  20

答案 1 :(得分:0)

我删除了我的答案并提交了另一个答案,因为这些修改大大改变了问题的清晰度。

将决赛桌纯粹作为查找表似乎不是很好的数据库设计。

我会做一个简单的一对多关系。

每个user都有很多outcomes,如此:

用户

user_id [pk]
name

outcome_id [pk]
user_id [fk]
goal
size
outcome