0

我的项目有一个类软件和另一个类操作系统。一个软件可能支持多个操作系统(我的实际问题要复杂得多)。

我不确定如何以最有效的方式将其保存在我的数据库中。我的表结构如下:

表:操作系统

id        name          platform
=================================
winxp     Windows XP    windows
win7      Windows 7     windows
...

表:软件

id        name             publisher     os
====================================================
chrome    Google Chrome    google        winxp,win7,...
ccleaner  Ccleaner         piriform      winxp,win7,...
...

这是最好的方法吗?这会在使用 OOP 编程时引起任何问题(我使用 DAO 方法)还是应该像下面这样更改它:

表:操作系统

id        name          platform
=================================
winxp     Windows XP    windows
win7      Windows 7     windows
...

表:软件

id        name             publisher  
=====================================
chrome    Google Chrome    google      
ccleaner  Ccleaner         piriform   
...

表:os_support

softwareid        os
======================
chrome            winxp
chrome            win7
ccleaner          winxp
ccleaner          win7
ccleaner          win8
...
4

1 回答 1

1

您当前的方法是错误的 - 您的软件表中会有冗余。我不确定你的意思winxp,win7...- 在一个单元格中存储多个值?这也是错误的方式 - 值应该是原子的(第一范式) - 但如果你的意思是在每个操作系统的软件表中复制行 - 将会有冗余 - 就像我在开始时所说的那样。

第二种方法看起来好多了(当然,如果你去掉软件表中的os列)。

为确保字段/表组织正确,您应该阅读规范化。参考这个。第三种范式就是你需要的:)

于 2013-05-02T09:15:20.880 回答