masquitos

Untitled

Oct 1st, 2020
1,088
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --  Нужно сохранять сообщения.
  2. -- Сообщения принадлежат сущности беседа. В одной беседе могут быть только два человека. Каждая беседа принадлежит task
  3.  
  4. -- Как лучше сделать.
  5. -- 1)   Хранить в сообщении номер беседы и номер пользователя, чтобы не дублировать номер беседы?
  6. -- 2)   Или вынести номер беседы и номер пользователя в отдельную таблицу компаньон, а в сообщении хранить номер компаньона?
  7. -- Я сделал по 2. Как правильней?
  8.  
  9.  
  10. CREATE TABLE postgis.conversations
  11. (
  12.     id integer NOT NULL DEFAULT nextval('conversations_id_seq'::regclass),
  13.     task_id integer NOT NULL,
  14.     CONSTRAINT conversations_pkey PRIMARY KEY (id),
  15.     CONSTRAINT fk_conversations FOREIGN KEY (task_id)
  16.         REFERENCES postgis.tasks (id) MATCH SIMPLE
  17.         ON UPDATE NO ACTION
  18.         ON DELETE NO ACTION
  19. )
  20.  
  21. CREATE TABLE postgis.companions
  22. (
  23.     id integer NOT NULL DEFAULT nextval('companions_id_seq'::regclass),
  24.     user_id integer,
  25.     conversation_id integer,
  26.     CONSTRAINT companions_pkey PRIMARY KEY (id),
  27.     CONSTRAINT companions_user_id_conversation_id_key UNIQUE (user_id, conversation_id),
  28.     CONSTRAINT fk_conversation_id FOREIGN KEY (conversation_id)
  29.         REFERENCES postgis.conversations (id) MATCH SIMPLE
  30.         ON UPDATE NO ACTION
  31.         ON DELETE NO ACTION
  32. )
  33.  
  34. CREATE TABLE postgis.messages
  35. (
  36.     id integer NOT NULL DEFAULT nextval('messages_id_seq'::regclass),
  37.     companion_id integer NOT NULL,
  38.     payload text COLLATE pg_catalog."default" NOT NULL,
  39.     "time" timestamp without time zone NOT NULL DEFAULT now(),
  40.     is_read boolean DEFAULT false,
  41.     CONSTRAINT messages_pkey PRIMARY KEY (id),
  42.     CONSTRAINT messages_fk FOREIGN KEY (companion_id)
  43.        REFERENCES postgis.companions (id) MATCH SIMPLE
  44.         ON UPDATE NO ACTION
  45.         ON DELETE NO ACTION
  46. )
  47.  
RAW Paste Data