2014-06-07 58 views
0

我這樣的東西有效嗎?MySql我可以使用外鍵作爲我的主鍵的一部分嗎?

這些都是列在我的帳號表:

user_id (Primary Key) 
user_name 
user_pass 
user_email 
user_date 

帳戶允許有多個字符。繼承人我要怎麼寫表: 字符的表:

character_ID 
user_ID (foreign key) 
character_name 
...(random columns) 

我可以讓我的PRIMARY KEY(character_ID,USER_ID)? 還是有更好的方法來區分這?

編輯:這是我怎麼會創建該表:

CREATE TABLE characters(
    -> char_id INT(8) NOT NULL AUTO_INCREMENT, 
    -> char_name VARCHAR(50) NOT NULL, 
    -> user_id INT(8) 
    -> PRIMARY KEY(char_id, user_id), 
    -> FOREIGN KEY (user_id) REFERENCES users(user_id) 
    ->) 
    -> ; 
+0

顯示創建表'characters'。 –

+0

是的,你可以,然後它成爲一個複合鍵。 – Rahul

+0

@Ravinder我曾經做過,但我編輯我的OP,以添加我認爲我會做到這一點。 – user3521471

回答

1

是的,你可以使雙方(char_id,USER_ID),如字符表的主鍵和 然後將其變成允許複合鍵,但foreign key有重複,因爲它們可能不是最適合用作主鍵的 。

所以一般建議和最佳做法是使用唯一的字段 確定記錄中的所有其他字段並指定爲primary key

它可以是synthetic之一(MySQL中的auto_increment,SQL Server中的IDENTITY)。 也可以是正常/一般類似「社會安全號碼」等

所以,你的情況,如果char_id可以單獨唯一確定的所有其他領域的話,我會讓 它作爲PK char_id INT NOT NULL AUTO_INCREMENT primary key

+0

對,我的例子的外鍵是一個主鍵在不同的表中。所以沒有模糊:P – user3521471

+0

@ user3521471,這些是一般指導原則。 – Rahul

相關問題