I understand the importance of salts, hashes and all the good stuff for passwords. My question is related to the theory of relational databases.
My understanding of the third normal form is that each element should provide information about the key, keyword and nothing but the key (so help me Codd. Thanks, Wikipedia). So I was looking through some of my tables, and I came across this.
CREATE TABLE accounts(
player_id mediumint NOT NULL AUTO_INCREMENT,
username VARCHAR(32) UNIQUE NOT NULL,
salt char(29),
hash char(60),
created DATETIME,
lastlogin DATETIME,
PRIMARY KEY (player_id)
) ENGINE = InnoDB;
Question: Is this table in 3rd normal form? My understanding ... "Hash" depends on player_id and salt. IE: hash → (username, salt).
I just don't see the real benefits of splitting this table. But I am concerned that there is a possible update anomaly or something that I do not see.