此表模式的正确名称是什么?

时间:2009-10-15 15:31:24

标签: sql database-design schema entity-attribute-value

我们有一个通用的数据库模式,我们用它们用于系统中的一些表。主要原因是我们运行的是多租户数据库,因此并非所有用户都需要相同的字段。但是,我不知道这种模式的“正确”名称是什么。

以下是我们的某个表格的示例:

ClientID | SurveyID | AnswerKey | AnswerVal
-------------------------------------------
1        | 1        | Fname     | Fred
1        | 1        | Lname     | Flintsone
1        | 1        | Email     | Fred@flintstone.com
1        | 2        | Fname     | Mickey
1        | 2        | Lname     | Mouse
1        | 2        | Phone     | 555-3343

我们一直称他们为'垂直表',但我不知道这是否正确。

6 个答案:

答案 0 :(得分:7)

我可能会将其称为键值对表

答案 1 :(得分:5)

“此表架构的正确名称是什么?”

垃圾。

考虑一下如何对电子邮件字段的AnswerValue施加某种类型约束。

考虑执行可能需要的“完整性”约束所需的努力,这些约束要求在某些调查中存在一些指定的字段集。

考虑生成单行所涉及的工作(我假设可以预先知道哪些列需要包含在内,因为您知道您正在使用哪个用户,因此您知道他感兴趣的是哪些字段)。

考虑确保任何用户无法检索或操纵他不感兴趣的任何字段所需的努力。

我相信还有更多......

答案 2 :(得分:4)

答案 3 :(得分:2)

我称之为Soft-Coding数据库设计。 很抱歉有点磨损,但这种设计闻起来像反模式。

答案 4 :(得分:1)

巧合的是,在看了这个问题后,我在本文中找到了答案

实体 - 属性 - 值表

http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/

答案 5 :(得分:0)

很抱歉,您可能需要考虑规范化您的表格...它可以带来可维护的代码(并且更容易理解)。使用关系表的力量!