Маркировка системного дизайна - PullRequest
1 голос
/ 04 августа 2011

Я работаю над новостным сайтом и думаю о внедрении системы тегов (аналогичной этому сайту), где вы сможете классифицировать новости по разным типам категорий, таким как: новая категория (экономика, политика и т. Д.) .) но также такие вещи, как язык, на котором оно было написано, и тип новостной статьи (редакционная статья, тематическая статья и т. д.).

Как мне различать эти разные типы категорий? Должен ли я иметь одну таблицу тегов для каждого типа категории, или я должен хранить все в одной таблице и иметь префикс тега, такой как «language: en», «category: economy»? Второе решение кажется более гибким, потому что я могу добавить больше типов, просто добавив префикс. Однако первое решение кажется более структурированным и с ним легче работать.

Кроме того, мне интересно, как вы определяете, когда что-то должно быть представлено в виде тега или когда это должно быть значение / запись столбца в базе данных (например, должен ли язык быть тегом или у меня есть колонка языка в моих «Новостях» Таблица?). Я не уверен, где провести черту.

Спасибо

1 Ответ

1 голос
/ 04 августа 2011

Было бы достаточно сказать, что сами теги можно упорядочить в иерархии? Если это так, просто добавьте parent_tag_id в таблицу tags.

id  name          parent_tag_id
-------------------------------
1   language      null
2   english       1
3   french        1
4   newscategory  null
5   economy       4
6   politics      4

Вы можете рассматривать столбцы как статические поля, а строки как динамические. Держите количество столбцов низким. Язык может быть столбцом всех полей в таблице, должен быть связан с языком.

...