Как хранить категории блогов в sql - PullRequest
1 голос
/ 07 февраля 2012

Я хочу найти:

  • Какие категории блога
  • Какие категории сообщений

Определение таблицы, которое я написал в данный момент:

CREATE TABLE blog_category_post (
   BlogID INT NOT NULL,
   CategoryID INT NOT NULL,
   PostID INT NOT NULL
)

Я слышал об уникальных индексах, которые должны быть добавлены в таблицы «многие ко многим», но я не уверен, как добавить их в этом случае и является ли это даже правильным подходом.

1 Ответ

1 голос
/ 07 февраля 2012

Для нормализованной схемы вам понадобятся две таблицы.

Предполагая, что у вас есть общая таксономия для блогов и постов (т.е. один и тот же набор категорий для обоих), это будет:

CREATE TABLE blog_category
        (
        blogId INT NOT NULL REFERENCES blog (id),
        categoryId INT NOT NULL REFERENCES category (id),
        PRIMARY KEY (blogId, categoryId)
        )


CREATE TABLE post_category
        (
        postId INT NOT NULL REFERENCES post (id),
        categoryId INT NOT NULL REFERENCES category (id),
        PRIMARY KEY (postId, categoryId)
        )

Ограничение PRIMARY KEY неявно создает кластеризованный UNIQUE индекс.

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