在我的数据库中,我有一个包含用户信息的用户列表,还有一个允许用户将其他用户添加到候选列表中的功能。我的用户信息存储在一个表中,其中一个表的主键是用户id,我还有另一个表用于短名单。短名单表的设计使它有两列,基本上只是一对名字的列表。因此,要查找特定用户的短名单,您可以从第二列检索所有名称,其中第一列中的id是一个特定值。
问题是,根据许多来源,比如thisShould each and every table have a primary key?您应该在数据库的每个表中都有一个主键。
根据这个源http://www.w3schools.com/sql/sql_primarykey.asp-其中一个主键唯一地标识数据库中的一个条目。所以我的问题是:
我数据库中的表有什么问题?为什么它需要主键?
我应该如何给它一个主键?只需创建一个新的自动递增列,使每个条目都有一个唯一的id?这似乎没什么意义。或者我将以某种方式将表示短名单的多个条目封装到另一个表中的另一个实体中并将其链接到中?我真的很困惑。

最佳答案

如果行是唯一的,则可以有两列主键,尽管这可能依赖于数据库。下面是一个例子:

CREATE TABLE my_table
(
col_1 int NOT NULL,
col_2 varchar(255) NOT NULL,
CONSTRAINT pk_cols12 PRIMARY KEY (col_1,col_2)
)

如果已经有了表,则示例如下:
ALTER TABLE my_table
ADD CONSTRAINT pk_cols12 PRIMARY KEY (col_1,col_2)

关于database - 为什么我的数据库表需要主键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12223978/

10-16 13:31