需要建议:SQL数据库设计

时间:2013-11-26 05:43:56

标签: sql asp.net-mvc

我已经准备好开始为ASP.NET MVC应用程序设计数据库了,我有一个关于在表中存储信息的最佳方法的快速问题。

在旧版本的数据库中,我有一个名为Phones的表,它有大约40-50个不同的列。

您是否建议在Phones表中保留“基本”数据,然后使用其余数据创建一个名为PhoneDetails的附加表,而不是在表中包含这么多列? / p>

感谢您的投入!

更新

以下是我表格中的列:(共有59个)

       [PhoneID]
      ,[Make]
      ,[Model]
      ,[ProcessorSpeed]
      ,[Dimensions]
      ,[Weight]
      ,[RAM]
      ,[Storage]
      ,[BatterySize]
      ,[TalkTime]
      ,[StandbyTime]
      ,[DisplayType]
      ,[Resolution]
      ,[DisplaySize]
      ,[RearCamera]
      ,[FrontCamera]
      ,[MinOS]
      ,[MaxOS]
      ,[NFC]
      ,[Notes]
      ,[Publish]
      ,[FullName]
      ,[Date]
      ,[Colors]
      ,[Sensors]
      ,[SIMCardType]
      ,[ChargingConnectors]
      ,[AVConnectors]
      ,[SystemConnectors]
      ,[USBVersion]
      ,[BluetoothVersion]
      ,[BluetoothProfiles]
      ,[WiFiVersion]
      ,[WiFiSecurityModes]
      ,[WirelessConnectivity]
      ,[GSMTypes]
      ,[GSMUpload]
      ,[GSMDownload]
      ,[LTETypes]
      ,[LTEUpload]
      ,[LTEDownload]
      ,[WCDMATypes]
      ,[WCDMAUpload]
      ,[WCDMADownload]
      ,[BatteryVoltage]
      ,[RemoveableBattery]
      ,[MaxMusicPlayback]
      ,[MaxVideoPlayback]
      ,[MaxWiFiTime]
      ,[ProcessorName]
      ,[ProcessorType]
      ,[RearAperture]
      ,[RearFocalLength]
      ,[RearMinFocusRange]
      ,[FlashType]
      ,[FlashOperatingRange]
      ,[FrontResolution]
      ,[FrontAperture]
      ,[DeviceGeneration]

4 个答案:

答案 0 :(得分:1)

40-50列听起来像分配列,超出了我可以想象的“电话”表所需,但没有关于这些列是什么的进一步信息,真的很难给出真实的石头。

一般来说,如果你的表看起来像这样:

Id Motorola Nokia LG HTC ...many more...
----------------------------------------
1     1      0    0   0     .....
2     0      0    0   1     .....
3     0      1    0   0     .....
4     1      0    0   0     .....
5     0      0    1   0     .....

你绝对应该将你的数据库规范化为更像:

电话:

Id   PhoneTypeId
---------------
1     1    
2     4    
3     2    
4     1    
5     3    

PHONETYPE:

Id   TypeName
---------------
1     Motorola    
2     Nokia    
3     LG    
4     HTC    

当然,这只是一个例子,但如果没有关于列的性质的进一步信息是Phones表,这是我能提供的最好的。

答案 1 :(得分:0)

如果需要,你应该考虑规范化你的一个表,如果表真的有关系,否则只需将表拆分成两个单独的表就没有多少收获。想想任何一列中都有冗余数据吗?

在这种情况下,您可以拥有一个包含该信息的单独表格以及它们之间的FK关系。

答案 2 :(得分:0)

使用FK参考创建另一个用于保存手机详细信息的表是很好的,因为有很多字段。

答案 3 :(得分:0)

我会考虑分成2个表。如果它符合以下任何一个条件。

如果某些列中存在大量具有NULL值的行。

如果您的应用程序比其余列更频繁地访问基本列。