MySql我可以使用外键作为主键的一部分吗?

MySql我可以使用外键作为主键的一部分吗?,mysql,sql,foreign-keys,primary-key,Mysql,Sql,Foreign Keys,Primary Key,我喜欢这样的东西有效吗 以下是“我的帐户”表中的列: user_id (Primary Key) user_name user_pass user_email user_date 允许帐户具有多个字符。下面是我要如何编写该表: 字符表: character_ID user_ID (foreign key) character_name ...(random columns) 我可以生成我的主键(字符号、用户号)吗? 还是有更好的方法来区分这一点 编辑:以下是我创建表格的方式: CREATE

我喜欢这样的东西有效吗

以下是“我的帐户”表中的列:

user_id (Primary Key)
user_name
user_pass
user_email
user_date
允许帐户具有多个字符。下面是我要如何编写该表: 字符表:

character_ID
user_ID (foreign key)
character_name
...(random columns)
我可以生成我的主键(字符号、用户号)吗? 还是有更好的方法来区分这一点

编辑:以下是我创建表格的方式:

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\u id,user\u id)作为characters表和中的主键 然后它就变成了一个复合键,但是
外键
允许有重复项,因此 它们可能不适合用作主键

因此,通常建议使用一个可以 确定记录中的所有其他字段,并将其指定为
主键

它可以是一个
synthetic
类(
auto_increment
在MySQL中,在SQL Server中,
IDENTITY
)。 也可以是普通/通用的,如“社会保险号”等

因此,在您的情况下,如果
char\u id
可以唯一地确定所有其他字段,那么我将
它作为PK
char\u id INT NOT NULL自动递增主键

显示为
字符创建表
。是的,您可以,然后它变成一个复合键。@Ravinder我还没有做过,但我编辑了我的OP,添加了我认为我应该如何做的。是的,这将按照您的方式工作。我通常喜欢把主键放在最前面以便于阅读。例如,将顺序设置为:char\u id、user\u id、char\u name,这样更容易区分主键。@Devon好的,谢谢:)我的下一个问题是,如何创建表以使每个user\u id的char\u id增量。即:user 1有三个字符。用户1的字符ID为1、2和3。用户2有2个字符。用户2的字符ID为1和2。主键仍然是不同的。对,我的示例的外键是另一个表中的主键。因此,不要被欺骗:P@user3521471,这些是一般指引。