mysql数据库结构的两个例子,哪一个更有效并保持数据完整性?

daolsyd0  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(269)

我正在为一个小博客创建一个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。哪种方法更有效并保持数据完整性?

yshpjwxd

yshpjwxd1#

首先,确定两个表之间关系的基数很重要- Articles and Types 因为它会影响表结构的选择。大体上有三种可能的基数:
一对一
一对多
多对多
方案1将满足 One to Many 以及 Many to Many 基数,而选项2将满足 One to One 基数。

相关问题