【发布时间】:2011-09-05 23:29:04
【问题描述】:
我了解盐、哈希和所有密码的好东西的重要性。我的问题与关系数据库理论有关。
我对第 3 范式的理解是,每个元素都必须提供关于键、整个键的事实,并且只提供键(所以请帮帮我,Codd。感谢维基百科)。所以我在查看我的一些表时,发现了这个。
-- Users
CREATE TABLE accounts(
player_id mediumint NOT NULL AUTO_INCREMENT, -- Surrogate Key
username VARCHAR(32) UNIQUE NOT NULL, -- True primary key
salt char(29), -- Passwords are stored in bcrypt hash
hash char(60), -- Salt + Hash stored
created DATETIME,
lastlogin DATETIME,
PRIMARY KEY (player_id)
) ENGINE = InnoDB;
问题:这个表是第三范式吗?我的理解是......“哈希”取决于 player_id 和盐。 IE:哈希->(用户名,盐)。
我看不出拆分这张桌子有什么真正的好处。但我担心可能存在更新异常或我看不到的东西。
【问题讨论】:
-
+1 表示“所以帮助我科德”
标签: sql database normalization database-theory