Два примера структуры базы данных MySQL, которая является более эффективной и сохраняет целостность данных? - PullRequest
0 голосов
/ 10 декабря 2018

Я создаю базу данных 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')

Во втором случае мне просто нужны две таблицы.Какой способ более эффективен и сохраняет целостность данных?

1 Ответ

0 голосов
/ 10 декабря 2018

Прежде всего, важно определиться с количеством элементов связи между двумя таблицами - Articles and Types, так как это повлияет на выбор структуры таблиц.В широком смысле возможны три кардинальности:

  1. Один к одному
  2. Один ко многим
  3. Многиедля многих

Вариант 1 удовлетворяет One to Many и Many to Many кардинальности, а Вариант 2 удовлетворяет One to One кардинальности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...