我有一個表登錄有登錄名和密碼字段。兩者都是主要關鍵。如何將外鍵指向組合的主鍵?
而我有一個表格字符。哪個登錄可以有很多字符。那麼外鍵是如何工作的呢?
如何在字符表中創建外鍵來登錄?
我應該在字符表中創建2個字段作爲外鍵指向登錄嗎?
謝謝!
我有一個表登錄有登錄名和密碼字段。兩者都是主要關鍵。如何將外鍵指向組合的主鍵?
而我有一個表格字符。哪個登錄可以有很多字符。那麼外鍵是如何工作的呢?
如何在字符表中創建外鍵來登錄?
我應該在字符表中創建2個字段作爲外鍵指向登錄嗎?
謝謝!
使用以下在創建表或改變腳本:
create table character (
field1 varchar(30),
...,
login varchar(12),
password varchar(128),
foreign key (login, password) references login (login, password)
)
現在,這一說,這似乎很奇怪,包括密碼登錄表的主鍵。我建議只在登錄表上使用主鍵,或者甚至可以使用代理鍵(整數標識)。使用包括登錄名和密碼的方法,您將允許在同一登錄下進行多次註冊。這可能沒問題,但似乎可以創建一個用戶不小心創建多個登錄的情況。此外,它會使管理丟失的密碼恢復變得更加困難。最後,每次密碼更改(並且用戶可以隨時更改密碼),它必須在每個引用字段中更新,並且會使密碼更改變得極其複雜。
爲什麼'login,password'是一個複合主鍵而不是'login'?一個'login'可以有多個密碼嗎? '密碼'似乎不夠穩定,無法成爲PK(IMO)的一部分 – 2011-04-17 21:47:29
密碼是否爲主鍵有什麼用?!如果登錄更改會發生什麼情況,而另一個登錄所使用的另一個帳戶的密碼是?該數據庫實現看起來很奇怪... – 2011-04-17 21:47:46
密碼字段不應該是主鍵的一部分。如果登錄ID和密碼都是主鍵的一部分,那麼密碼就會成爲該帳戶身份的一部分,而這很糟糕,原因很多。另外,這意味着登錄id在系統中不會是唯一的。 – 2011-04-17 21:48:32