我正在为一个小博客创建一个mysql数据库。这个博客会有不同类型的文章,比如“公益”、“diy”等。
我的问题是关于如何组织数据库结构:我应该为文章创建一个表,为类型创建一个表,以及连接这两个项目的第三个表吗?或者我应该创建前两个表并在articles表中添加一个字段,指出types表的id号吗?
方案1:
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;
方案2:
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')
在第二种情况下,我只需要两张table。哪种方法更有效并保持数据完整性?
1条答案
按热度按时间c6ubokkw1#
首先,确定两个表之间关系的基数很重要-
Articles and Types
因为它会影响表结构的选择。大体上有三种可能的基数:一对一
一对多
多对多
方案1将满足
One to Many
以及Many to Many
基数,而选项2将满足One to One
基数。