我正在为一个小型博客创建一个mySQL数据库。该博客将包含不同类型的文章,例如“公共利益”,“ DIY”等。
我的问题是关于如何组织数据库结构的:我应该为文章创建一个表,为类型创建一个表,还是将两者连接的第三张表?还是我应该只创建前两个表并在articles表中添加一个字段,该字段指出类型表的ID号?
CREATE TABLE articles(
id int unsigned not null auto_increment primary key,
title varchar(300) NULL,
body TEXT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE articleType(
id int unsigned not null auto_increment primary key,
name char(200) NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `articleType` (`name`) VALUES
('public interest'),
('DIY')
CREATE TABLE articlesArticleType (
ID int unsigned not null auto_increment primary key,
typeID int not null,
articleID int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE articles(
id int unsigned not null auto_increment primary key,
title varchar(300) NULL,
body TEXT NULL,
articleType int NOT NULL DEFAULT 1
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE articleType(
id int unsigned not null auto_increment primary key,
name char(200) NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `articleType` (`nombre`) VALUES
('public interest'),
('DIY')
在第二种情况下,我只需要两个表。哪种方法更有效并保留数据完整性?
答案 0 :(得分:2)
首先,重要的是要确定2个表之间的关系基数-Articles and Types
,因为它将影响表结构的选择。大致上有3个基数:
选项1将满足One to Many
和Many to Many
基数,而选项2将满足One to One
基数。