简单SQL Server 2008数据库的数据库架构设计

时间:2010-01-18 19:42:51

标签: sql-server database-design schema

我在ServerFault上发布了这个,并被告知这将是一个更好的地方。

我有一些开发人员的经验,但在SQL管理和数据库设计方面我是一个完整的新手。

我正在使用带有SQL后端的ASP.NET应用程序将我公司的订购和报价流程从excel电子表格转换为更强大的功能。

目前我们的零件数据库只是一个excel电子表格。我们的很多产品都是OEM的路由器,服务器等现成的硬件。我们主要是一个软件商店,所以我们在设备上安装我们的应用程序,配置网络设备并发布我们安装的完整解决方案。科技股。

在我的架构中,我有5个表

  • CompanyProducts
  • OEMProducts
  • SupplierProducts
  • 原始设备制造商

OEMProdcuts包含来自Cisco等设备制造商,网络设备或服务器设备戴尔的信息。

SupplierProducts包含有关我们从OEM获得的供应商的信息(因为很多OEM使用经销商)

companyProducts包含特定于我们公司的产品ID。

以下是SQL Server Management Studio的快照:

alt text http://i102.photobucket.com/albums/m108/ArkhamFreak/schema2.jpg

我的问题是:

为这个简单的架构设置主键的最佳方法是什么?我应该使用自动增量字段作为GUID,如图所示,还是OEMProductID,以便在所有表中引用主键?

供应商产品供应商和原始设备制造商的OEM产品对我来说是显而易见的,但其他关系我不太确定。我有点担心,当我将数据添加到引用它的表时,我将不得不通过一个模糊的自动生成ID来引用OEMProducts。由于我们有许多相同设备的供应商,我不确定如何建立这种关系。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

嗯,一些想法:

  • 我肯定使用SupplierName作为您的Suppliers表的主键。使用其他东西 - 要么你有一些给定的项目(例如来自其他系统的“供应商编号”)你可以使用,或者如果没有,他们只需使用一个简单的INT(可能带有IDENTITY)来唯一地限定每个供应商

  • 同样适用于Product(使用ProductID,如果这是唯一且稳定的)和OEM(再次:使用某种给定的,唯一的信息项,但不是名称,或创建自己的“OEM ID”()

  • 为什么在SupplierProducts表上有一个SupplierProductID 一个OEMProductID?可能有一个很好的理由 - 乍一看对我来说并不明显。

我个人不喜欢过度使用GUID - 它们很麻烦,它们又大又胖(与INT相比),它们在SQL Server索引中有各种令人讨厌的后果(索引和表碎片) - 除非你有一个非常合理的GUID理由(比如几个物理位置之间的复制),我通常更喜欢使用INT - 我自己生成的ID,或者我留给数据库来处理(INT IDENTITY)。