gpt4 book ai didi

mysql - 如何使连接表条目唯一?

转载 作者:行者123 更新时间:2023-11-29 00:01:26 25 4
gpt4 key购买 nike

我知道如何制作 individual column entry独特,但我想让两列一起变得独一无二。我有一张联合表。每个投票都有一个 userId 和一个 messageId。每次投票都是进入该表的一个条目。我不想让用户对一条消息进行多次投票。我可以向此连接表添加什么约束以使其每个用户只能对每条消息或评论进行一次投票?

CREATE TABLE messages (
id int(5) AUTO_INCREMENT,
messageString text NOT NULL,
image varchar(255) DEFAULT 'NULL',
score int(5) DEFAULT 0,
PRIMARY KEY (id)
);

CREATE TABLE comments (
id int(5) AUTO_INCREMENT,
commentString text NOT NULL,
messageId int(5) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (messageId) REFERENCES messages(id)
);

CREATE TABLE votes (
id int(5) AUTO_INCREMENT,
PRIMARY KEY(id),
userToken VARCHAR(255),
messageId int(5) DEFAULT 0,
commentId int(5) DEFAULT 0,
FOREIGN KEY (userToken) REFERENCES users(token),
FOREIGN KEY (messageId) REFERENCES messages(id),
FOREIGN KEY (commentId) REFERENCES comments(id)
);

CREATE TABLE users (
token VARCHAR(255),
PRIMARY KEY(token)
);

最佳答案

要么删除 votes.id 并使用 PRIMARY KEY (userToken, messageId),要么使用 PRIMARY KEY (id), UNIQUE KEY (userToken, messageId) 如果您认为您绝对需要一个 id

(不确定 commentId 是什么,无法从您的解释中弄清楚;也许您还需要将其添加到复合索引中。)

关于mysql - 如何使连接表条目唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29619965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com