2015-10-05 26 views
2

這是我正在爲基於投票的網站(overpowered.info)工作的數據庫設計。 http://i57.tinypic.com/2v9925s.png我對用戶和安全性之間的交互感興趣。我需要這個數據庫在3NF,這是我第一次通過規範化過程規範數據庫。起初,我有用戶內的安全問題和安全問題。但是,答案與問題和用戶相關。如果我在USER實體中有USER_ANSWER和QUESTION_ID,並且一起擺脫安全性,它是否還在3NF?我知道對用戶來說安全性是1比1,應該避免這種情況,但我現在最終還是不確定。數據庫設計這是3NF的必需嗎?

回答

0

是的,它仍然在3NF。事實上,它將解決設計缺陷與安全問題,其中您無法區分回答同一問題的不同用戶的答案。

0

它不能在3nf。首先,答案在功能上取決於question_id,它不是用戶密鑰的任何部分。這裏有一個建議:

User Security Question and Answer

我假設問題表包含用戶從選擇的股票的問題清單,然後提供答案的一個選擇。所以安全實現用戶和問題之間的一對多關係。 User_ID字段既是FK到用戶表和PK,所以沒有用戶可以被列出多次。對於每個用戶,還會列出相關問題以及該用戶對該問題的答案。

通知我也感動密碼場到一個單獨的表(用哈希種子一起 - 你僅存儲最終散列不是密碼的文字,對吧?)。將此視爲「安全範式」(SNF),其中敏感數據(可能包括賬號,SSN等)放置在單獨的表格中。那麼訪問這些表格就會受到嚴格的限制。如果用戶表本身遭到黑客攻擊,敏感數據(包括問題和答案)將不會受到影響。不,在任何有關正常化的教程中都不會找到SNF,但我已經使用了它多年,並且它提高了安全性。限制訪問整個表比表中的特定字段容易得多。