规范化所需的建议

时间:2014-05-16 05:31:00

标签: sql sql-server database database-design database-normalization

我想将virustotal.com结果存储在我的数据库中。但我在规范化方面遇到了一些问题。假设我有以下通用表

AntivirusName    FileID    DetectedID    DetectedDate
AVG               1         abc            --/--/--
Kaspersky         1         xyz            --/--/--
Norton            1         xxx            --/--/--

现在,如果40防病毒软件检测到文件,则数据库中有40个条目。那么如何才能删除这些重复,请指导我

1 个答案:

答案 0 :(得分:2)

我假设每天可以进行多次扫描(DetectedDate),这会在一个或多个文件中找到一个或多个病毒签名(DetectedID)(由{{1}指定})由多个产品(FileID)检测到。因此,在当前结构中,您可以在所有列中具有重复值,从而重复行。这意味着您需要添加AntivirusName列以提供唯一键。然后,您可以将id替换为AntivirusName,这是一个FK到另一个包含AntivirusNameIdAntivirusNameId列的表格。从你的问题中不清楚你是否必须对AntivirusNameFileID做同样的事情,但我认为不是。

所以,你的表将是:

DetectedID