【发布时间】:2010-03-21 08:25:20
【问题描述】:
我的物品如下:当然这只是一个总结。但是我正在使用为“详细信息”表显示的一种方法来表示一种“继承”,可以这么说 - 因为“项目”和“可下载”将是相同的,除了每个都有一些额外的相关字段只对他们。
我的问题在于这种设计模式。这种事情在我们的项目中出现了很多很多次——有没有更聪明的方法来处理它?我基本上需要尽可能地规范化表格。我对数据库非常陌生,所以这对我来说非常困惑。
有 5 个项目。奖励、物品、购买、代币和下载。它们都非常非常相似,除了每个都有一些仅与自身相关的数据。我尝试将声明字段(如枚举器“类型”字段)与可为空的列结合使用,但有人告诉我这是一种不好的方法。我所做的是将所有类似的东西放在一个表中,然后每种类型都有自己的表,该表引用“基本”表中的列。
问题出现在关系或联结上。将所有这些链接回客户。每种类型都需要大约 2 个额外的表来正确地将所有数据连接在一起——因此,我的数据库变得非常非常大。这种行为有更明智的做法吗?
Item
ID | GUID
Name | varchar(64)
Product
ID | GUID
Name | varchar(64)
Store | GUID [ FK ]
Details | GUID [FK]
Downloadable
ID | GUID
Name | varchar(64)
Url | nvarchar(2048)
Details | GUID [FK]
Details
ID | GUID
Price | decimal
Description | text
Peripherals [ JUNCTION ]
ID | GUID
Detail | GUID [FK]
Store
ID | GUID
Addresses | GUID
Addresses
ID | GUID
Name | nvarchar(64)
State | int [FK]
ZipCode | int
Address | nvarchar(64)
State
ID | int
Name | varchar(32)
【问题讨论】:
标签: database-design