table 中的两个主非复合键
Two primary non composite keys in a table
我正在做一个项目,我意识到我不确定如何使用多个主键。我有一个名为 "User_Details" 的 table,其中包含客户 ID、电子邮件地址和密码的详细信息。据我了解,我可以同时使用客户 ID 和电子邮件地址作为主键。在这种情况下,我是只使用一个作为主键还是两者都使用?如果我同时使用两者,它们会成为复合主键吗?
(PS。我还有其他 tables,外键是客户 ID)
你只能有一个主键,但你的主键可以有多个列,或者你也可以在你的 table 上有唯一索引,这有点像主键他们将强制执行唯一值,并将加快查询这些值的速度。
最简单的方法是复合主键,它是由两列或多列组成的主键。例如:
CREATE TABLE userdata (
userid INT,
userdataid INT,
info char(200),
primary key (userid, userdataid),
);
这里有更多信息:Link
您可以拥有一个复合主键,它是由两列或多列组成的主键。例如:
CREATE TABLE userdata (
userid INT,
userdataid INT,
info char(200),
primary key (userid, userdataid),
);
一个table可以有多个候选键。每个候选键是一列或一组列,它们是唯一的,放在一起,并且也是 NOT NULL。因此,为任何候选键的所有列指定值就足以确定有一行符合条件,或者根本没有行。
候选键是关系数据模型中的一个基本概念。
通常的做法是,如果一个 table 中存在多个键,则将候选键之一指定为主键。使 table 的任何外键引用主键而不是任何其他候选键也是常见的做法。
我推荐这些做法,但关系模型中没有任何内容需要在候选键中选择一个主键。
您只能有一个主键,但您绝对可以有其他唯一字段。
通常使用整数/id 作为主键优于字符串键,并且 id 可能是自动分配的,因为电子邮件可能会更改 - 这对于外键关系来说是个问题。
由于您已经在其他表中使用客户 ID 作为外键,我建议您继续这样做。
我正在做一个项目,我意识到我不确定如何使用多个主键。我有一个名为 "User_Details" 的 table,其中包含客户 ID、电子邮件地址和密码的详细信息。据我了解,我可以同时使用客户 ID 和电子邮件地址作为主键。在这种情况下,我是只使用一个作为主键还是两者都使用?如果我同时使用两者,它们会成为复合主键吗?
(PS。我还有其他 tables,外键是客户 ID)
你只能有一个主键,但你的主键可以有多个列,或者你也可以在你的 table 上有唯一索引,这有点像主键他们将强制执行唯一值,并将加快查询这些值的速度。
最简单的方法是复合主键,它是由两列或多列组成的主键。例如:
CREATE TABLE userdata (
userid INT,
userdataid INT,
info char(200),
primary key (userid, userdataid),
);
这里有更多信息:Link
您可以拥有一个复合主键,它是由两列或多列组成的主键。例如:
CREATE TABLE userdata (
userid INT,
userdataid INT,
info char(200),
primary key (userid, userdataid),
);
一个table可以有多个候选键。每个候选键是一列或一组列,它们是唯一的,放在一起,并且也是 NOT NULL。因此,为任何候选键的所有列指定值就足以确定有一行符合条件,或者根本没有行。
候选键是关系数据模型中的一个基本概念。
通常的做法是,如果一个 table 中存在多个键,则将候选键之一指定为主键。使 table 的任何外键引用主键而不是任何其他候选键也是常见的做法。
我推荐这些做法,但关系模型中没有任何内容需要在候选键中选择一个主键。
您只能有一个主键,但您绝对可以有其他唯一字段。
通常使用整数/id 作为主键优于字符串键,并且 id 可能是自动分配的,因为电子邮件可能会更改 - 这对于外键关系来说是个问题。
由于您已经在其他表中使用客户 ID 作为外键,我建议您继续这样做。