帐户名称及其密码存储在不同的表中,以提高安全性。哪个表应包含另一个外键?
我可以存储这样的密码:
CREATE TABLE account
(
id INT
, name TEXT
)
;
CREATE TABLE password
(
account_id INT
, password_hash TEXT
, CONSTRAINT fk_password_account_id
FOREING KEY (account_id) REFERENCES account (id)
)
;
通过这种方式,即使用户知道帐户的名称,黑客也不会知道用户的密码。
另一种方法是:
CREATE TABLE account
(
id INT
, name TEXT
, password_id INT
, CONSTRAINT fk_account_password_id
FOREIGN KEY (password_id) REFERENCES password (id)
)
;
CREATE TABLE password
(
id INT
, password_hash TEXT
)
;
这样即使黑客知道密码,她/他也不知道谁是所有者。
那么,假设密码存储在不同的数据库中,或者至少存储在不同的模式中,哪种方法更好?如果密码和帐户存储在同一个数据库中?