praca-test-tasks/2.nodejs_js/readme.md
2023-03-12 02:42:45 +03:00

58 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Блок заданий "Задание, Java Script, Node JS:" (2)
2. Есть объекты вида
```typescript
// Я изменил название для наглядности и для корректного форматирования в .md
{ id : integer,
time_stamp : timestamp,
parent: : parentObject,
contact: : {server: ..., email: ..., users: [name, ...]},
addresses : [adress1, ...],
}
```
Какую структуру таблиц в реляционной БД нужно создать для хранения этой информации?
Поскольку нам дано мало информации кроме абстрактного списка объектов, то вероятнее всего перед нами имеется главный объект со следующими полями *(Для наглядности, этот объект у нас будет неким контактом)*:
```
id | Идентификатор контакта
time_stamp | Дата создания контакта
parent | "Родительский" контакт
contact | Контактные данные
|
+-> server | Адрес сервера
+-> email | Адрес эл. почты
+-> users | Список имён пользователя
addresses | Список адресов контакта
```
Итак, мы сразу можем в основную таблицу с контактами записать : (id, time_stamp, parent(ссылка на id текущей таблицы)).
Далее, для **contact** будет создана таблица с полями (row, obj_id, server, email).
Для **users** будет создана таблица (row, contact_id, username).
Для **addresses** будет создана таблица (row, obj_id, address).
**Итого у нас получается следующая структура:**
```
========================================================================================
table Objects:
========================================================================================
id (int) = NULL | AI, UQ, PK, NN | Идентификатор объекта
time_stamp (timestamp) = NULL | NN | Дата создания контакта
parent (int) = NULL | FK(Objects.id) | Идентификатор родительского объекта
========================================================================================
table Contacts:
========================================================================================
row (int) = NULL | AI, UQ, PK, NN | Идентификатор записи
obj_id (int) = NULL | FK(Objects.id), NN | Ссылка на основной объект
server (string) = NULL | NN | Адрес сервера
email (string) = NULL | NN | Адрес эл. почты
========================================================================================
table Users:
========================================================================================
row (int) = NULL | AI, UQ, PK, NN | Идентификатор записи
contact_id (int) = NULL | FK(Contacts.id), NN | Ссылка на запись контакта
username (string) = NULL | NN | Имя пользователя
========================================================================================
table Addresses:
========================================================================================
row (int) = NULL | AI, UQ, PK, NN | Идентификатор записи
obj_id (int) = NULL | FK(Objects.id), NN | Ссылка на основной объект
address (string) = NULL | NN | Адрес
========================================================================================
```