Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Нужно сохранять сообщения.
- -- Сообщения принадлежат сущности беседа. В одной беседе могут быть только два человека. Каждая беседа принадлежит task
- -- Как лучше сделать.
- -- 1) Хранить в сообщении номер беседы и номер пользователя, чтобы не дублировать номер беседы?
- -- 2) Или вынести номер беседы и номер пользователя в отдельную таблицу компаньон, а в сообщении хранить номер компаньона?
- -- Я сделал по 2. Как правильней?
- CREATE TABLE postgis.conversations
- (
- id integer NOT NULL DEFAULT nextval('conversations_id_seq'::regclass),
- task_id integer NOT NULL,
- CONSTRAINT conversations_pkey PRIMARY KEY (id),
- CONSTRAINT fk_conversations FOREIGN KEY (task_id)
- REFERENCES postgis.tasks (id) MATCH SIMPLE
- ON UPDATE NO ACTION
- ON DELETE NO ACTION
- )
- CREATE TABLE postgis.companions
- (
- id integer NOT NULL DEFAULT nextval('companions_id_seq'::regclass),
- user_id integer,
- conversation_id integer,
- CONSTRAINT companions_pkey PRIMARY KEY (id),
- CONSTRAINT companions_user_id_conversation_id_key UNIQUE (user_id, conversation_id),
- CONSTRAINT fk_conversation_id FOREIGN KEY (conversation_id)
- REFERENCES postgis.conversations (id) MATCH SIMPLE
- ON UPDATE NO ACTION
- ON DELETE NO ACTION
- )
- CREATE TABLE postgis.messages
- (
- id integer NOT NULL DEFAULT nextval('messages_id_seq'::regclass),
- companion_id integer NOT NULL,
- payload text COLLATE pg_catalog."default" NOT NULL,
- "time" timestamp without time zone NOT NULL DEFAULT now(),
- is_read boolean DEFAULT false,
- CONSTRAINT messages_pkey PRIMARY KEY (id),
- CONSTRAINT messages_fk FOREIGN KEY (companion_id)
- REFERENCES postgis.companions (id) MATCH SIMPLE
- ON UPDATE NO ACTION
- ON DELETE NO ACTION
- )
Advertisement
Add Comment
Please, Sign In to add comment