ソルト、ハッシュ、およびパスワードに関するすべての優れた機能の重要性を理解しています。私の質問は、リレーショナル データベース理論に関するものです。
第 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;
質問: この表は第 3 正規形ですか? 私の理解では...「ハッシュ」はplayer_idとソルトに依存しています。IE: ハッシュ -> (ユーザー名、ソルト)。
このテーブルを分割することの本当の利点はわかりません。でも、更新異常とか見えないのでは?と心配です。