我这样的东西有效吗?
这些是我的ACCOUNTS表中的列:
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 :(得分: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