Sql 添加新表的好处

Sql 添加新表的好处,sql,database-design,Sql,Database Design,我有一个理论问题。假设我有一个名为“Worker”的表,用于办公室工作人员,其中一列是“Role”。我可以添加一个约束(签入(“主管”、“人力资源”、“秘书”、“私人助理”等)。创建一个包含所有可能角色的单独新表(“角色”)以及一个与这两个表相关的id有什么好处 创建一个单独的新表(“角色”),其中包含所有可能的角色和一个与这两个表相关的id,有什么好处 以下是我脑海中的一些想法: 任何其他角色都是对表定义的更改,而不是对表的标准插入 您可以使用表中的数据来驱动列表框之类的UI项 如果重命名/

我有一个理论问题。假设我有一个名为“Worker”的表,用于办公室工作人员,其中一列是“Role”。我可以添加一个约束(签入(“主管”、“人力资源”、“秘书”、“私人助理”等)。创建一个包含所有可能角色的单独新表(“角色”)以及一个与这两个表相关的id有什么好处

创建一个单独的新表(“角色”),其中包含所有可能的角色和一个与这两个表相关的id,有什么好处

以下是我脑海中的一些想法:

  • 任何其他角色都是对表定义的更改,而不是对表的标准插入
  • 您可以使用表中的数据来驱动列表框之类的UI项
  • 如果重命名/添加/删除角色,则必须删除约束,更新
    Worker
    表中的所有记录,然后重新添加新约束
  • 您可以添加有关角色的辅助数据,而无需向
    Worker
  • 您必须在DB之外的层中复制约束
创建一个单独的新表(“角色”),其中包含所有可能的角色和一个与这两个表相关的id,有什么好处

以下是我脑海中的一些想法:

  • 任何其他角色都是对表定义的更改,而不是对表的标准插入
  • 您可以使用表中的数据来驱动列表框之类的UI项
  • 如果重命名/添加/删除角色,则必须删除约束,更新
    Worker
    表中的所有记录,然后重新添加新约束
  • 您可以添加有关角色的辅助数据,而无需向
    Worker
  • 您必须在DB之外的层中复制约束

检查约束将写为:

(CHECK IN role ('director', 'HR', 'Secretary', 'PA', ...)
将角色存储在单独表中的优点。以下是一些:

  • 您有一个其他任何人都可以访问的所有角色的列表
  • 您可以提供有关该角色的其他数据——翻译成另一种语言、缩写、薪资等级等
  • 添加或修改现有角色只需要更改数据,而不需要更改数据库的结构
  • 您可以提供元数据,例如创建日期和创建角色的人

检查约束将写为:

(CHECK IN role ('director', 'HR', 'Secretary', 'PA', ...)
将角色存储在单独表中的优点。以下是一些:

  • 您有一个其他任何人都可以访问的所有角色的列表
  • 您可以提供有关该角色的其他数据——翻译成另一种语言、缩写、薪资等级等
  • 添加或修改现有角色只需要更改数据,而不需要更改数据库的结构
  • 您可以提供元数据,例如创建日期和创建角色的人

一方面更易于维护。当角色被添加或删除(或其名称被更改)时,您不必更改检查约束-您可能也会忘记这样做。在需要按角色列出结果的地方编写查询也更容易。一方面更易于维护。当角色被添加或删除(或其名称被更改)时,您不必更改检查约束—您可能也会忘记这样做。在需要按角色显示结果的位置编写查询也更容易。我还将为其他数据添加版本控制我还将为其他数据添加版本控制