Это отношения OneToMany или ManyToMany? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть две таблицы ARTICLE и FAQ (часто задаваемые вопросы).Я пытаюсь установить связь между этими двумя таблицами, но я в замешательстве!

Я хочу добиться того, чтобы в этой статье было много часто задаваемых вопросов.Так что для этого я должен создать сводную таблицу или просто ссылаться на FK в таблице часто задаваемых вопросов?

Что я пробовал, но я не уверен, что приведенный ниже поток является правильным или нет?

Таблица артикулов:

CREATE TABLE IF NOT EXISTS `article` (
  `id` int(11) UNSIGNED NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `description` longtext NOT NULL,
  PRIMARY KEY (`id`)
);

Часто задаваемые вопросы Схема таблицы:

CREATE TABLE IF NOT EXISTS `eb_faq` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `faq_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `question` text NOT NULL,
  `answer` text NOT NULL,
  PRIMARY KEY (`id`)
);

Сводка:

CREATE TABLE IF NOT EXISTS `article_linked_faq` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `article_id` int(11) DEFAULT NULL,
  `faq_id` int(11) DEFAULT NULL,
  `order_by` int(11) DEFAULT NULL,
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
);

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Нет, вам просто нужно добавить внешний ключ в таблицу часто задаваемых вопросов, это создаст связь между обеими таблицами.Нет необходимости создавать третью таблицу

CREATE TABLE IF NOT EXISTS `eb_faq` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
   `articleId`  int(11),
  `faq_category_id` bigint(20) UNSIGNED DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `question` text NOT NULL,
  `answer` text NOT NULL,
  PRIMARY KEY (`id`),
   FOREIGN KEY (articleId) REFERENCES article(id)
);
0 голосов
/ 01 марта 2019

Эта схема действительно позволяет статье иметь несколько часто задаваемых вопросов, но также позволяет связать один FAQ с несколькими статьями.Если это то, что вы хотите, отлично!Если нет, то я бы предложил удалить сводную таблицу и добавить article_id в eb_faq.

...