我刚开始在MySQL中建模我的数据库。
所以我有一张名为"规范的表#34;使用以下列:
id(int) - 主键
fk_category_id(int)---来自其他表的外键
raw_score_min(int)---范围所需的下限分数
raw_score_max(max)---范围所需的上限分数
sten(int)---标准十(值1-10)备注
百分位(int)---百分比评论(值1-100)
t-score(int)---另一个具有奇怪相关性的评论
fk_classification_id ---来自另一个表的外键
现在,并非此数据库中的每一行都使用sten,百分位和t分数。
大多数情况下只会使用其中一个。 然而,有一些特殊情况,其中将使用三分之二(即sten和百分位数)
因此,如果这些行堆积起来,那么该表将有很多行,其中包含0值的浪费列,用于sten,percentil和t-score
有什么方法可以避免使用标准化造成的浪费?谢谢!
更新:
我忘了告诉它,随着系统的流逝,可能还有其他类型的标准" (sten,t-score,百分位数),如CSQ或其他标准。按照上面的表格,这可能意味着我每次都应该添加一个新类型的"标准"。
答案 0 :(得分:0)
您可以创建一个新表格,例如a {background-color:transparent !important;}
,其中包含那些包含它们的记录的标准十,百分位和t分数值。
stats
请注意,此处获得的收益是因为您无法将任何数据库存储分配给那些没有任何统计信息的记录。将此与原始问题中的非规范化方法进行对比,在该问题中,您可能为该记录存储零值。
<强>更新强>
如果你真的需要添加统计数据/列,那么我希望无论是采用我的方法还是采用原始方法,这都是一件麻烦事。通过规范化数据库,您仍然可以获得潜在的收益。
但也许新的统计数据可以动态计算而不是持久存储到数据库中。这样可以避免不得不继续添加新列的问题。
答案 1 :(得分:0)
要回答你的问题,是的,你可以避免这种情况。例如,您可以使用norm_sten
引用单独的表norm_percentile
,norm_tscore
和norm."id"
。
但是,您应该仔细检查这是否会使您的应用程序逻辑过于复杂。由于整数字段仅使用4个字节,因此除非您拥有数百万条记录,否则通常只会遇到表空间问题。