2010-01-18 107 views
0

我在ServerFault上发布了这个数据库,并被告知这将是一个更好的选择。简单的SQL Server 2008数据库的数据库模式设计

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

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

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

在我的模式我有5个表

  • CompanyProducts
  • OEMProducts
  • SupplierProducts
  • 供应商
  • OEM厂商

OEMProdcuts包含了从设备manufcaturer像思科这样的信息,进行联网设备或戴尔服务器设备。

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

companyProducts包含产品ID的具体到我们公司。

下面是从SQL Server Management Studio中的快照:

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

我的问题是:

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

供应商对供应商的产品和原始设备制造商的原始设备制造商对我来说是显而易见的,但其他的关系我不确定。我有点担心,如果在将数据添加到引用该数据的表中时,我必须通过不明确的自动生成的ID来引用OEM产品。由于我们有许多相同设备的供应商,我不知道如何建立这种关系的模型。

谢谢你的时间。

回答

1

嗯,有几个想法:

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

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

  • 为什么你有一个SupplierProductID 您的SupplierProducts表上的OEMProductID?这可能是一个很好的理由 - 对我来说一见钟情并不明显。

我个人不喜欢过度使用GUID的 - (相比,INT时),他们是累赘,他们是大和脂肪,他们在你的SQL Server索引各种讨厌的后果(指数和表碎片) - 所以除非你有一个很好的GUID理由(比如在几个物理位置之间的复制),我通常更喜欢使用INT - 我自己生成的ID,或者我留给数据库来处理( INT IDENTITY)。

+0

我有一个supplierProductID和一个OEMProductID,因为供应商和OEM之间的产品ID并不总是匹配。例如,思科7200路由器可能是根据思科的7204VXR,根据供应商可能是ROUT0001。 感谢您的提示。 我想使用名称(供应商和OEM),因为它很容易记住CDW或IngramMicro,但不容易记住Supplier23。由于我们使用少量供应商,除了这样的事实之外,还有其他问题:在理论上,您可能拥有两个完全相同名称的供应商? – Ryan 2010-01-18 20:54:04