Лучшая модель для системы тегов - PullRequest
2 голосов
/ 11 декабря 2011

какая модель лучше подходит для системы тегов? Например, тема может иметь N теги, теги и N может быть связана с N потоков , если я создаю таблицу, теги и публикации таблицы и теги этой таблицы, у меня было ID of the posts и тег будут дублировать многие записи в качестве другой темы для добавления этого тега, что является лучшим способом избежать этого?

enter image description here


@ Квентин, проблема продолжается, он будет повторять записи в таблице post_tags

CREATE TABLE IF NOT EXISTS `posts` (
  `pid` bigint(22) NOT NULL AUTO_INCREMENT,
  `author` varchar(25) NOT NULL,
  `content` mediumtext NOT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

INSERT INTO `posts` (`pid`, `author`, `content`) VALUES
(1, 'Andrey Knupp Vital', 'Hello World !');

CREATE TABLE IF NOT EXISTS `tagged` (
  `pid` bigint(22) NOT NULL,
  `tid` bigint(22) NOT NULL,
  PRIMARY KEY (`pid`,`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `tagged` (`pid`, `tid`) VALUES
(1, 1),
(1, 2);

CREATE TABLE IF NOT EXISTS `tags` (
  `tid` bigint(22) NOT NULL AUTO_INCREMENT,
  `tag` varchar(15) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

INSERT INTO `tags` (`tid`, `tag`) VALUES
(1, 'main'),
(2, 'hello');

1 Ответ

7 голосов
/ 11 декабря 2011

Используйте таблицу соединений

. В ней будет как минимум два столбца.«Посты» и «Теги» с первичным ключом, определяемым через пару из них (если база данных позволяет это, в противном случае третий столбец для первичного ключа).

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