Как создать таблицу тегов из других таблиц? - PullRequest
0 голосов
/ 27 сентября 2011

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

Теги должны загружаться динамически (как здесь), но приходят из разных таблиц, потому что этобудет использоваться для идентификации.

Пример: тег Brazil обозначает страну в country table, тег Monday обозначает день в week day table.

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

1 Ответ

1 голос
/ 27 сентября 2011

Это может сделать то, что вы хотите:

CREATE TABLE countries (
  name VARCHAR PRIMARY KEY,
  ...
);

CREATE TABLE weekdays (
  name VARCHAR PRIMARY KEY,
  ...
);

CREATE VIEW tags AS 
(SELECT name AS tag, 'countries' AS source
 FROM countries) 
UNION ALL
(SELECT name AS weekdays, 'weekdays' AS source
 FROM weekdays) 
UNION ALL ...;

Затем вы можете создать дополнительные таблицы и добавить их в представление.Когда вы помечаете какую-либо другую таблицу, вы будете рассматривать имя и источник тега как первичный ключ и обращаться к этому представлению, например, так:

CREATE TABLE foo (
  id SERIAL PRIMARY KEY,
  ...
);

CREATE TABLE foo_tags (
  foo_id INTEGER REFERENCES foo,
  tag_name VARCHAR,
  tag_source VARCHAR
);

К сожалению, невозможно определитьвнешний ключ из таблицы foo_tags для вида tags, определенного выше.

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