Правка реализации истории
This commit is contained in:
+12
-21
@@ -97,8 +97,6 @@ erDiagram
|
|||||||
SAT_CUSTOMER_INFO {
|
SAT_CUSTOMER_INFO {
|
||||||
varchar customer_bk FK
|
varchar customer_bk FK
|
||||||
varchar hashdiff
|
varchar hashdiff
|
||||||
timestamp valid_from
|
|
||||||
timestamp valid_to
|
|
||||||
varchar name
|
varchar name
|
||||||
varchar email
|
varchar email
|
||||||
varchar city
|
varchar city
|
||||||
@@ -109,8 +107,6 @@ erDiagram
|
|||||||
SAT_ORDER_STATUS {
|
SAT_ORDER_STATUS {
|
||||||
varchar link_key FK
|
varchar link_key FK
|
||||||
varchar hashdiff
|
varchar hashdiff
|
||||||
timestamp valid_from
|
|
||||||
timestamp valid_to
|
|
||||||
varchar status
|
varchar status
|
||||||
varchar record_source
|
varchar record_source
|
||||||
timestamp load_dttm
|
timestamp load_dttm
|
||||||
@@ -133,13 +129,11 @@ erDiagram
|
|||||||
|
|
||||||
* бизнес‑ключ (customer_bk, order_id, contract_number);
|
* бизнес‑ключ (customer_bk, order_id, contract_number);
|
||||||
* техническую информацию:
|
* техническую информацию:
|
||||||
|
|
||||||
* record_source — из какой системы пришла первая запись;
|
* record_source — из какой системы пришла первая запись;
|
||||||
* load_dttm — когда запись попала в DV;
|
* load_dttm — когда запись попала в DV;
|
||||||
* иногда — хэш бизнес‑ключа (hk_customer).
|
* иногда — хэш бизнес‑ключа (hk_customer).
|
||||||
|
|
||||||
Главные правила:
|
Главные правила:
|
||||||
|
|
||||||
* один бизнес‑ключ — один хаб (одна строка на сущность, без истории);
|
* один бизнес‑ключ — один хаб (одна строка на сущность, без истории);
|
||||||
* хаб не знает про атрибуты (имя, email) — только идентичность.
|
* хаб не знает про атрибуты (имя, email) — только идентичность.
|
||||||
|
|
||||||
@@ -196,16 +190,13 @@ CREATE TABLE link_order_customer (
|
|||||||
|
|
||||||
* ссылка на HUB или LINK (hk_customer, hk_order_customer);
|
* ссылка на HUB или LINK (hk_customer, hk_order_customer);
|
||||||
* атрибуты (email, city, status и т.п.);
|
* атрибуты (email, city, status и т.п.);
|
||||||
* valid_from / valid_to — период действия версии;
|
|
||||||
* hashdiff — хэш от всех атрибутов, чтобы понять, изменилась ли строка;
|
* hashdiff — хэш от всех атрибутов, чтобы понять, изменилась ли строка;
|
||||||
* record_source, load_dttm.
|
* record_source, load_dttm — источник и момент загрузки версии.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE TABLE sat_customer_info (
|
CREATE TABLE sat_customer_info (
|
||||||
hk_customer BYTEA NOT NULL,
|
hk_customer BYTEA NOT NULL,
|
||||||
hashdiff BYTEA NOT NULL,
|
hashdiff BYTEA NOT NULL,
|
||||||
valid_from TIMESTAMP NOT NULL,
|
|
||||||
valid_to TIMESTAMP NOT NULL,
|
|
||||||
name VARCHAR(100),
|
name VARCHAR(100),
|
||||||
email VARCHAR(100),
|
email VARCHAR(100),
|
||||||
city VARCHAR(50),
|
city VARCHAR(50),
|
||||||
@@ -216,6 +207,8 @@ CREATE TABLE sat_customer_info (
|
|||||||
|
|
||||||
Главная мысль: DV заставляет явно разделять идентичность, связи и атрибуты с историей. Это делает модель сложнее на вид, но гораздо устойчивее к изменениям источников.
|
Главная мысль: DV заставляет явно разделять идентичность, связи и атрибуты с историей. Это делает модель сложнее на вид, но гораздо устойчивее к изменениям источников.
|
||||||
|
|
||||||
|
Когда нужны именно бизнес-периоды действия («с/по»), их удобнее моделировать не в базовом сателлите, а отдельными effectivity-сателлитами или через PIT-таблицы в Business Vault.
|
||||||
|
|
||||||
## 4. Типы сателлитов в DV 2.0
|
## 4. Типы сателлитов в DV 2.0
|
||||||
|
|
||||||
В DV 2.0 появилось разделение по «ролям» сателлитов. Главное, что стоит знать:
|
В DV 2.0 появилось разделение по «ролям» сателлитов. Главное, что стоит знать:
|
||||||
@@ -501,11 +494,10 @@ customer_bk | record_source | load_dttm
|
|||||||
101 | CRM | 2023-01-10 10:00
|
101 | CRM | 2023-01-10 10:00
|
||||||
|
|
||||||
SAT_CUSTOMER_INFO
|
SAT_CUSTOMER_INFO
|
||||||
|
customer_bk | load_dttm | email | city
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
customer_bk | valid_from | valid_to | email | city
|
101 | 2023-01-10 10:00 | a@example.com | Moscow
|
||||||
---------------------------------------------------------------------
|
101 | 2023-06-01 09:00 | alice@newmail.com | Moscow
|
||||||
101 | 2023-01-10 | 2023-06-01 | a@example.com | Moscow
|
|
||||||
101 | 2023-06-01 | 9999-12-31 | alice@newmail.com | Moscow
|
|
||||||
|
|
||||||
HUB_ORDER
|
HUB_ORDER
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
@@ -515,13 +507,12 @@ order_id | record_source | load_dttm
|
|||||||
5002 | SHOP | 2023-06-11 09:30
|
5002 | SHOP | 2023-06-11 09:30
|
||||||
|
|
||||||
SAT_ORDER_STATUS
|
SAT_ORDER_STATUS
|
||||||
----------------------------------------------------------------
|
order_id | load_dttm | status
|
||||||
order_id | valid_from | valid_to | status
|
-------------------------------------------------------
|
||||||
----------------------------------------------------------------
|
5001 | 2023-06-10 12:00 | created
|
||||||
5001 | 2023-06-10 | 2023-06-10 | created
|
5001 | 2023-06-10 12:05 | paid
|
||||||
5001 | 2023-06-10 | 2023-06-11 | paid
|
5001 | 2023-06-11 09:00 | shipped
|
||||||
5001 | 2023-06-11 | 9999-12-31 | shipped
|
... | ... | ...
|
||||||
... | ... | ... | ...
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Ключевая идея: **любое изменение** (email, статус) — это **новая строка** в соответствующем Satellite.
|
Ключевая идея: **любое изменение** (email, статус) — это **новая строка** в соответствующем Satellite.
|
||||||
|
|||||||
Reference in New Issue
Block a user