0

我想將virustotal.com結果存儲在我的數據庫中。但我在正常化中遇到了一些問題。假設,如果一個文件被殺毒軟件40檢測到我有以下一般表規範化所需的建議

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

現在,則有在數據庫反對40個條目。我怎樣才能刪除這些重複,請引導我

+0

他們不重複 - 它們是有效的信息。你可以從這個信息中知道AV沒有拿起文件。您可能希望查看「DISTINCT」關鍵字。 –

回答

2

我假設每天可以有多個掃描(DetectedDate),它會在一個或多個文件中找到一個或多個病毒簽名(DetectedID)(由如由多個產品(AntivirusName)檢測到的那樣(FileID))。因此,在當前結構中,您可以在所有列中具有重複的值,從而重複行。這意味着您需要添加一個id列來提供唯一的密鑰。然後,您可以用AntivirusNameId替換AntivirusName,該AntivirusNameId是FK到AntivirusNameIdAntivirusName列的另一個表。你的問題還不清楚,你是否必須這樣做FileIDDetectedID,但我認爲不是。

所以,你的表是:

create table av_name as (
    AntivirusNameId int, -- PK 
    AntivirusName VARCHAR(50) 
); 
create table av_scan as (
    id int,     -- PK 
    AntivirusNameId int, -- FK 
    FileId int, 
    DetectedID CHAR(3), 
    DetectedDate DATE 
); 
+0

here DetectedID基本上是防病毒識別惡意文件的名稱,例如trojan.123 – user3069453

+0

但是'FileID'與'DetectedID'無關,對吧? – Turophile

+0

是的你是對的,它與防病毒有關 – user3069453