我这样的东西有效吗?
这些是我的 ACCOUNTS 表中的列:
user_id (Primary Key)
user_name
user_pass
user_email
user_date
帐户允许拥有多个字符。这是我想如何编写该表: 字符表:
character_ID
user_ID (foreign key)
character_name
...(random columns)
我可以设置我的主键(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)
-> )
-> ;
最佳答案
是的,您可以将(char_id,user_id)作为字符表中的主键,
那么它就成为一个复合键,但外键
允许有重复项,因此
它们可能不适合用作主键。
因此,通常建议和最佳实践是使用可以唯一地
确定记录中的所有其他字段并将其指定为主键
。
它可以是一个合成
,例如(MySQL 中的auto_increment
,SQL Server 中的IDENTITY
)。
或者它可以是正常/一般的,如“社会安全号码”等。
因此,在您的情况下,如果 char_id
可以单独唯一地确定所有其他字段,那么我会做
它作为 PK char_id INT NOT NULL AUTO_INCRMENT 主键
关于MySql 我可以使用外键作为主键的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100124/