MySQL表结构问题
当我允许用户在多个类别中输入帖子时,我的mysql表应该是什么样子。它应该像下面示例1或示例2中的mysql表,还是其他什么 例1MySQL表结构问题,mysql,Mysql,当我允许用户在多个类别中输入帖子时,我的mysql表应该是什么样子。它应该像下面示例1或示例2中的mysql表,还是其他什么 例1 CREATE TABLE ac ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, categoryID INT UNSIGNED NOT NULL, articleID INT UNSIGNED NOT NULL, dateCREAT DATETIME NOT NULL, PRIMARY KEY (i
CREATE TABLE ac (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
categoryID INT UNSIGNED NOT NULL,
articleID INT UNSIGNED NOT NULL,
dateCREAT DATETIME NOT NULL,
PRIMARY KEY (id)
);
例2
CREATE TABLE ac (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
categoryID INT UNSIGNED NOT NULL,
articleID INT UNSIGNED NOT NULL,
dateCREAT DATETIME NOT NULL,
PRIMARY KEY (id)
UNIQUE KEY (categoryID, articleID)
);
假设
ac
表是您的,您可能不需要id
然后,您可以使用复合主键强制执行约束,即同一文章不能两次发布到同一类别,而不是使用唯一约束:
CREATE TABLE ac (
categoryID INT UNSIGNED NOT NULL,
articleID INT UNSIGNED NOT NULL,
dateCREAT DATETIME NOT NULL,
PRIMARY KEY (categoryID, articleID)
);
如果您的应用程序需要代理键
id
,那么您的第二个示例就是解决方法。“唯一”约束不允许将同一文章发布到同一类别,但允许将任何特定文章发布到多个类别。我不太确定我是否理解您的表设置说明
假设您有一个article表和一个category表,并且您希望将一篇文章映射到多个类别,那么您通常会有一个只包含articleID和categoryID的中间表
e、 类似
CREATE TABLE postCategoryMappingc (
categoryID INT UNSIGNED NOT NULL,
articleID INT UNSIGNED NOT NULL,
PRIMARY KEY (categoryID,articleID)
);
不确定您需要dateCREAT字段做什么,但如果绝对需要,我也可以进入该字段。如果我想保留
id
,请更新我的答案,并说明我的想法。