Database 哪种方法更好?每个DB表的唯一表ID或全局/应用程序范围中的唯一表ID?

Database 哪种方法更好?每个DB表的唯一表ID或全局/应用程序范围中的唯一表ID?,database,database-design,Database,Database Design,您更喜欢哪一种设计数据库?为什么 在每个表范围中维护生成的唯一ID 在全局/应用程序范围中维护生成的唯一ID 我在每表代理键值中看到的唯一优势可能是更小的表示形式节省了一点内存。但是,重叠的可能性使得在不重新设计现有表的情况下很难创建超类型 考虑一个分别记录公司和个人的数据库。稍后,我们可能希望将地址与这两个集合相关联。如果保证它们的键值是不同的(并且是相同的数据类型),那么合并这两个集合并将它们与它们的地址关联将是一件简单的事情。但是,如果它们的键重叠,我们将不得不选择以下不太方便的选项之一:

您更喜欢哪一种设计数据库?为什么

  • 在每个表范围中维护生成的唯一ID
  • 在全局/应用程序范围中维护生成的唯一ID

  • 我在每表代理键值中看到的唯一优势可能是更小的表示形式节省了一点内存。但是,重叠的可能性使得在不重新设计现有表的情况下很难创建超类型

    考虑一个分别记录公司和个人的数据库。稍后,我们可能希望将地址与这两个集合相关联。如果保证它们的键值是不同的(并且是相同的数据类型),那么合并这两个集合并将它们与它们的地址关联将是一件简单的事情。但是,如果它们的键重叠,我们将不得不选择以下不太方便的选项之一:为每个公司和个人分配另一个唯一标识符(除了或代替现有的冲突键),或使用现有键和类型或表指示器的组合,通过复合键对其进行寻址

    我当然不认为每个表都应该自动有一个代理键,但是如果代理键适用,使它们全局唯一可以防止以后出现一些困难