数据库建模:表中的键/值对

时间:2018-08-29 14:52:43

标签: sql relational-database

如果存在带有属性列表(名字,姓氏,中间名,部门等)的对象(例如雇员)的集合,则需要在rdms表中将其建模为一个键/值对每行,每位员工多行。例如:该表为3列:EmployeeID,FieldName,FieldValue。

对于那些可选字段(例如,中间名),是否最好跳过该行,或者将NULL填充为FieldValue列?

我觉得跳过它可以节省空间,但是将其设置为NULL会更干净,因为它可以保证每个员工的行数相同。

哪种是最常见的模式?

1 个答案:

答案 0 :(得分:0)

如果要填写值,则最好使用定义明确的表。因此,不要仅仅因为您没有NULL值而输入它们。

实体-键-值模型的优点在于,您可以轻松添加新的键-而不必影响没有这些键的其他实体。

在这样的模型中,我会说“中间名”的NULL值与缺少的“中间名”不同:

  • NULL值表示已请求但未提供中间名-本质上,“我有一个中间名,但不会告诉您。”
  • 缺少“中间名”的行实际上意味着我们不在乎该实体的中间名(这是一个公司而不是一个人)。