Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как "лучше" хранить пользовательские данные внутри БД? / 2 сообщений из 2, страница 1 из 1
09.06.2019, 09:41
    #39824549
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как "лучше" хранить пользовательские данные внутри БД?
Всем привет! Подскажите пожалуйста какую модель данных лучше выбрать? Сейчас поясню что я имею в виду.
Есть система ЭДО, ничего не обычного, документы... документы... документы... Приведу пример двух таблиц чтобы было понятно что из себя представляет документ. Документ содержится в двух таблицах. Заголовки и строки.

Код: plsql
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
CREATE TABLE public.order_title
(
    order_title_id bigint DEFAULT nextval('seq_order_title_id'::regclass),
    distr_id integer,
    histor_id integer,
    date timestamp with time zone,
    customer_user_id integer,
    customer_id integer,
    send_branch_id integer,
    receive_branch_id integer,
    comment character varying(150) COLLATE pg_catalog."default",
    is_export boolean
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.order_title
    OWNER to postgres;
COMMENT ON TABLE public.order_title
    IS 'Документ "Заказ поставщику" - Заголовки документа';

COMMENT ON COLUMN public.order_title.order_title_id
    IS 'Идентификатор документа';

COMMENT ON COLUMN public.order_title.distr_id
    IS 'Идентификатор поставщика. Ссылка на таблицу customer.';

COMMENT ON COLUMN public.order_title.histor_id
    IS 'Идентификатор прайс-листа. Ссылка на таблицу history.';

COMMENT ON COLUMN public.order_title.date
    IS 'Дата документа';

COMMENT ON COLUMN public.order_title.customer_user_id
    IS 'Идентификатор пользователя. Ссылка на таблицу customer_user';

COMMENT ON COLUMN public.order_title.customer_id
    IS 'Идентификатор контрагента. Ссылка на таблицу сustomer';

COMMENT ON COLUMN public.order_title.send_branch_id
    IS 'Идентификатор филиала отправителя. Ссылка на таблицу branch.';

COMMENT ON COLUMN public.order_title.receive_branch_id
    IS 'Идентификатор филиала получателя. Ссылка на таблицу branch.';

COMMENT ON COLUMN public.order_title.comment
    IS 'Комментарий пользователя.';

COMMENT ON COLUMN public.order_title.is_export
    IS 'Признак экспорта заявки.';



Код: plsql
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 public.order_data
(
    order_data_id bigint DEFAULT nextval('seq_order_data_id'::regclass),
    order_title_id bigint,
    reg_id integer,
    quantity smallint,
    price numeric(15,2),
    art character varying(20) COLLATE pg_catalog."default",
    price_id bigint
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE public.order_data
    OWNER to postgres;
COMMENT ON TABLE public.order_data
    IS 'Документ "Заказ поставщику" - Строки документа';

COMMENT ON COLUMN public.order_data.order_data_id
    IS 'Идентификатор строки документа';

COMMENT ON COLUMN public.order_data.order_title_id
    IS 'Идентификатор документа. Ссылка на таблицу order_title';

COMMENT ON COLUMN public.order_data.reg_id
    IS 'Идентификатор товара. Ссылка на таблицу registry';

COMMENT ON COLUMN public.order_data.quantity
    IS 'Количество';

COMMENT ON COLUMN public.order_data.price
    IS 'Цена';

COMMENT ON COLUMN public.order_data.art
    IS 'Код товара поставщика';

COMMENT ON COLUMN public.order_data.price_id
    IS 'Идентификатор строки прайс-листа. Ссылка на таблицу price';



Система в первую очередь OLTP во вторую OLAP. Есть ли смысл заморачиваться с созданием таблиц с множеством полей, или можно хранить все данные в JSONB, как вы думаете? Система будет создаваться с самого начала, по этому переделывать ничего не нужно будет, нужно правильно выбрать путь :)
...
Рейтинг: 0 / 0
14.06.2019, 08:36
    #39826401
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как "лучше" хранить пользовательские данные внутри БД?
Если все строго формализовано, т.е. структура данных меняться не будет, то лучше создать таблицы.
Если все слабо формализовано, т.е. структура данных постоянно меняется по независимым от вас причинам, то лучше JSONB.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как "лучше" хранить пользовательские данные внутри БД? / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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