powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Tags (ярлыки) для новостей, реализация, часть два
3 сообщений из 3, страница 1 из 1
Tags (ярлыки) для новостей, реализация, часть два
    #35616338
Фотография chernomyrdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый,

Вот тут пытаюсь сделать реализацию ярлыков для новостей и тому подобного:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CREATE TABLE wobj ( -- Универсальный объект, для хранения ID
   id bigserial NOT NULL,
   CONSTRAINT pk_wobj PRIMARY KEY (id)
);

CREATE TABLE posts ( -- Комментарии
-- Inherited:   id bigint NOT NULL DEFAULT nextval('wobj_id_seq'::regclass),
   post_id bigint,
   dpost timestamp without time zone DEFAULT now(),
   body xml,
   CONSTRAINT posts_pk_id PRIMARY KEY (id)
) INHERITS (wobj);

CREATE TABLE news ( -- Собственно новости
-- Inherited:   id bigint NOT NULL DEFAULT nextval('wobj_id_seq'::regclass),
-- Inherited:   post_id bigint,
-- Inherited:   dpost timestamp without time zone DEFAULT now(),
-- Inherited:   body xml,
   title character varying( 132 ),
   brief character varying( 255 ),
   CONSTRAINT news_pk_id PRIMARY KEY (id)
) INHERITS (posts);

CREATE TABLE tags ( -- Ярлыки
  id bigserial NOT NULL,
  tag character varying( 64 ),
  CONSTRAINT tags_pk_id PRIMARY KEY (id)
);

CREATE TABLE tag_post ( -- Связка ярлыки  m-to-m новости
   tag_id bigint NOT NULL,
   post_id bigint NOT NULL,
   CONSTRAINT pk_tag_post PRIMARY KEY (tag_id, post_id),
   CONSTRAINT tag_post_fk_news_id FOREIGN KEY (post_id)
      REFERENCES news (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION, -- Ссылка на ID ноаости
   CONSTRAINT tag_post_fk_tags_id FOREIGN KEY (tag_id)
      REFERENCES tags (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION -- Ссылка на ID ярлыка
);

При работе со всей этой конструкцией я делаю следующие действия:
Заношу в таблицу tags ярлыки котроых там нету

Заношу в таблицу news новость

При попытке занести связку новость-ярлык в таблицу tag_post , сталкиваюсь с тем что в таблице posts нет такой записи, хотя по select-у видно, что она там есть.

Есть подозрение что что-то здесь не совсем то с тем, news наследует posts ...
...
Рейтинг: 0 / 0
Tags (ярлыки) для новостей, реализация, часть два
    #35616633
CYCC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что записи в таблице posts действительно нет, хотя SELECT ... FROM posts её покажет - операция выборки идет одновременно и из posts , и из наследующей её таблицы news .
Если хотите увидеть реальную картину вещей в posts, делайте запрос вида SELECT ... FROM ONLY posts
...
Рейтинг: 0 / 0
Tags (ярлыки) для новостей, реализация, часть два
    #35616693
Фотография chernomyrdin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CYCC,

Уже в принципе разобрался с проблемой. см.:
http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html
Конкретно:
5.8.1. Caveats

То есть это такая фича, просто разбирался, думал мало-ли я накосячил, ан нет - в консерватории однако в будущем обещали подправить :-)

Большое спасибо, вопрос закрыт
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Tags (ярлыки) для новостей, реализация, часть два
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]