繁体   English   中英

MySQL表结构问题

[英]MySQL table structure question

当我允许用户输入多个类别的帖子时,我的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 (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 ,那么您的第二个示例就是该方法。 唯一性约束不允许将同一文章发布到同一类别,但是将任何特定文章发布到多个类别。

我不确定我是否从说明中了解您的表格设置。

假设您有一个文章表和一个类别表,并且想要将一个文章映射到多个类别,那么通常会有一个仅包含articleID和categoryID的中间表。

例如

CREATE TABLE postCategoryMappingc (
    categoryID INT UNSIGNED NOT NULL,
    articleID INT UNSIGNED NOT NULL,
    PRIMARY KEY (categoryID,articleID)
); 

不确定您需要dateCREAT字段用于什么,但是如果绝对需要,我也可以在那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM