【发布时间】:2012-04-04 21:34:17
【问题描述】:
是否可以将数据类型 varbinary 用于外键? 为什么? 我有一个 EvalAnswer 表和一个分数表的 FK。 分数很敏感,应该加密。加密/解密发生在 asp.net (4.0) 项目中,而不是在 sql server (2008) 中,因此数据类型需要为 varbinary。
编辑:更多信息
当然。 我有这些列:Id、Score、ScoreText、Description、Index Id 是一个增量计数器。 (PK) 分数是分数(例如 1)。 ScoreText 是一个字母的分数(分数 1 等于字母 A)。 描述是对每个乐谱的评论。
之所以会这样,也是有特殊情况, 比如其中一题只有1-4分,其余1-5分。
所以每个问题都有一个分数 1,但描述与另一个问题不同,分数为 1。 所以如果我有 5 个问题,这会在分数表中给出 5*5 行。 (都有不同的描述)
当我加载页面时,我会为每个下拉列表获得正确的评分(带有描述)。一般1-5个。 但是当用户保存了评分时,我需要在页面加载时知道每个问题之前保存的分数。 因此,我在 EvalAnswer 和评分之间建立了关系。
有一些与分数表相关的问题不敏感。 但有些是。对于他们,我需要隐藏 EvalAnswer 和 Score 之间的关系。
可能是一个糟糕的设计是我使用相同的表(分数表)作为 一个显示每个问题的可用分数。 并且还作为一个保存用户选择的东西。 (这是从 EvalAnswer 到 Score 的 FK)
请指教.......
【问题讨论】:
-
这并不违法,但这是一个非常的坏主意。
-
好吧,为什么这是个坏主意?请推荐其他解决方案。如果您需要有关我的设计的更多信息,请询问。
-
好的。请解释为什么您需要加入乐谱?
-
您的问题没有传达为什么您需要 varbinary 作为外键。使用任何非固定长度值作为外键或主键是个坏主意。
-
好的,我已经编辑了问题。