SQL表结构 - 如何设计?

时间:2013-02-17 10:13:47

标签: sql database-design

我们目前在我们的系统中有一个设置层次结构,允许为单个用户,一个设置组保存设置(每个用户可以绑定到一个设置组,但设置组是嵌套的,所以我们查询在树上检查来自父设置组的继承值)或客户级别设置(每个用户可以绑定到一个客户)。

目前我们有三个表存储每个级别的设置值:

  • user_setting_values
  • setting_group_setting_values
  • customer_setting_values

我被管理层(也是最初编写系统的家伙)要求将这些表合并到一个包含所有设置的表中。除了“将它们全部放在一张桌子中是有意义的”之外,他没有提出一个特别好的论据。

这是一个好主意吗?什么是专业人士和骗子?

1 个答案:

答案 0 :(得分:0)

Pro:减少表格 Con:总是一个避免空值的好主意,使不同级别合并通常会导致空值

如果合并到一个表中,通常有两个实现解决方案

  1. 如果每个级别的设置类型相同,则使用类型列,值反映了与哪个级别数据相关,例如,用户,团体或客户。

  2. 如果每个级别的设置类型不同,则展开列数

  3. Null用于表示给定列的N / A值

    如果设置类型为yes / no存储值,则布尔值可能很方便。