我们有一个SQL Server数据库设计时间场景..我们要在我们的数据库中存储有关不同组织的数据(例如客户,供应商,分销商......)。所有差异组织共享相同类型的信息(几乎)..如地址详细信息等...并且它们将在其他表中引用(即通过OrgId链接,我们必须在许多差异点查找OrgName)
我看到两个选项:
我们为每个组织创建一个表,如OrgCustomer,OrgDistributor,OrgVendor等...所有表都具有类似的结构,一些表将有额外的特殊字段,如客户有一个字段HomeAddress(其他组织表没有)..反之亦然。
我们创建一个通用的OrgMaster表并将所有diff Orgs存储在一个地方。该表将具有OrgType字段以区分Orgs的diff类型。并且特殊字段将附加到OrgMaster表中(只有相关的组织记录在这些字段中具有值,在其他情况下它将为NULL)
优点:
CONS:
优点:
CONS:
我还想到了选项#3 - 将Org表保持独立,但创建了一个公共的OrgAddress表来存储公共字段。但这让我处于#1& #2,它正在制造更多的混乱!
老实说,我是一名经验丰富的程序员,但不是同等经验的DBA,因为这不是我的主流工作,所以请帮助我在设计复杂性和性能等参数之间进行正确的权衡。
提前致谢。随意询问任何技术问题&欢迎提出建议。
与Hemant
答案 0 :(得分:1)
我已经开发了各种已经实现了所有选项的应用程序。说实话,您可能需要考虑用户使用数据的方式,您期望的记录数,通用性(具有多个功能的同一组织)以及您期望的记录的更新级别。 / p>
选项1在一个几乎没有共性的应用程序中运行良好。我已经在应用程序中使用了有效的选项3,其中存在更多的共性,并且不太喜欢它(在所有时间从不同层获取数据涉及更多工作)。重写此应用程序正在实施您的选项2。
HTH
答案 1 :(得分:1)