Как правильно проектировать базу данных SQL - PullRequest
0 голосов
/ 31 октября 2018

У меня есть две таблицы

Первая таблица:

Table "public.things"

Column | Type                   | Collation | Nullable |  Default
----------------------+-----------------------------+-------------
id      | bigint                 |           | not null |
name    | character varying(255) |           | not null |     
slug    | character varying(255) |           |          |   
lang_id | integer                |           |          |                                     

Indexes:
 "things_pkey" PRIMARY KEY, btree (id)
 "things_slug_unique" UNIQUE CONSTRAINT, btree (slug)

Вторая таблица для магазина многие ко многим для регионов и вещей:

Table "public.values"

Column     |  Type  | Collation | Nullable | Default | Storage  
------------+--------+-----------+----------+---------+----- 
thing_id   | bigint |           | not null |         | plain   |              
region_id  | bigint |           | not null |         | plain   |              
values     | jsonb  |           | not null |         | extended|              

Indexes:
"values_pkey" PRIMARY KEY, btree (thing_id, region_id)

А у меня третья таблица, которая должна хранить варианты пользователей из таблицы значения

Полиморфная таблица user_variants выглядит так:

    Table "public.user_variants"

Column       |  Type  | Collation | Nullable | Default |  
-------------+--------+-----------+----------+---------+
user_id      | int    |           | not null |         |  
entity_id    | bigint |           | not null |         |              
entity_type  | bigint |           | not null |         |              
content      | jsonb  |           | not null |         |            

Например, я могу хранить в user_variants таблицу что-то вроде этого:

 user_id |  entity_id  | entity_type    | content              |
---------+-------------+----------------+----------------------+
 41      | 23          |  combination_1 | '{ values: [ ...] }' |                    
 42      | 24          |  combination_2 | '{ values: [ ...] }' |                    

У меня проблема, у моей таблицы значения нет уникального id для хранения в entity_id поле, но у значений таблицы есть ключ primiry «values_pkey» состоит из thing_id, region_id . Как можно без добавления «id» в мою таблицу values ​​, использовать первичный ключ «values_pkey» ?

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