我正在构建类似WordPress的CMS。我希望能够为博客文章分配多个类别。
我的表如下所示:
Article:
-id
-title
-author
-user_id
-date
-resource link
-content
-status
-featured_image
Categories:
-id
-name
我知道如何设计它,以便博客帖子可以具有一个类别,但没有很多。
答案 0 :(得分:0)
您可以这样设计数据库。 通过该架构,您可以分配多个类别并添加可以单独跟踪的多个图像。
CREATE TABLE BlogPost
(
blogPostNr INT NOT NULL,
author CHAR(40) NOT NULL,
categoryNr INT NOT NULL,
`date` DATETIME NOT NULL,
status CHAR(5) NOT NULL,
text VARCHAR(2000) NOT NULL,
title CHAR(100) NOT NULL,
userId SMALLINT NOT NULL,
CONSTRAINT BlogPost_PK PRIMARY KEY(blogPostNr)
);
CREATE TABLE Image
(
imageNr INT NOT NULL,
description CHAR(200) NOT NULL,
picture LONGBLOB NOT NULL,
source CHAR(60) NOT NULL,
CONSTRAINT Image_PK PRIMARY KEY(imageNr)
);
CREATE TABLE BlogPostHasImage
(
blogPostNr INT NOT NULL,
imageNr INT NOT NULL,
CONSTRAINT BlogPostHasImage_PK PRIMARY KEY(blogPostNr, imageNr)
);
CREATE TABLE Category
(
categoryNr INT NOT NULL,
categoryName CHAR(20) NOT NULL,
CONSTRAINT Category_PK PRIMARY KEY(categoryNr)
);
ALTER TABLE BlogPost ADD CONSTRAINT BlogPost_FK FOREIGN KEY (categoryNr) REFERENCES Category (categoryNr) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE BlogPostHasImage ADD CONSTRAINT BlogPostHasImage_FK1 FOREIGN KEY (blogPostNr) REFERENCES BlogPost (blogPostNr) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE BlogPostHasImage ADD CONSTRAINT BlogPostHasImage_FK2 FOREIGN KEY (imageNr) REFERENCES Image (imageNr) ON DELETE RESTRICT ON UPDATE RESTRICT;
答案 1 :(得分:0)
不是1:1,而是many:many,因为类别也可以与许多Articles关联。
有一个包含两列article_id
和category_id
的“映射”表。请参见this,以获取有关将其编入索引的提示。