我们目前有一个系统,每个客户在注册时都会获得自己的数据库。毫不奇怪,这种情况已经失控。
我们正在准备将所有这些数据库合并到一个数据库中。为了做到这一点,我们需要记下该行属于哪个组织。如何在数据库上最好地处理这个问题以及以下方法有什么优点/缺点(速度、可维护性等)?
选项 1:将组织 ID 设置为所有表并使其成为主键的一部分(使所有键复合)。
选项 2:将组织 ID 添加到所有表中,作为具有组织表外键的列。
选项 3:其他内容。
我们正在考虑通过这一举措迁移到 NHibernate,如果这对所做的事情有影响的话。
最佳答案
选项 1 和 2 并不相互排斥,您应该同时执行这两个操作。 对组织的外键约束有助于确保您的组织键有效。 复合主键是实现唯一性的唯一方法,除非您想重新设置所有记录的键,并且它对于查找性能也很有值(value)。或者,您必须在组合数据上创建一个新的主键列,例如标识列。这样的更改可能需要在其他地方进行更多更改。
关于sql - 组织 ID 字段作为复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569643/