Я создаю базу данных MySQL для небольшого блога.В этом блоге будут статьи разных «типов», таких как «общественный интерес», «сделай сам» и т. Д.
Мой вопрос о том, как организовать структуру базы данных: нужно ли создать таблицу для статей,таблица для типов и третья таблица, соединяющая их обоих?Или я должен просто создать первые две таблицы и добавить в таблицу статей поле, указывающее на номер идентификатора таблицы типов?
Опция 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')
Во втором случае мне просто нужны две таблицы.Какой способ более эффективен и сохраняет целостность данных?