58 lines
4.0 KiB
Markdown
58 lines
4.0 KiB
Markdown
# Блок заданий "Задание, 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 | Адрес
|
||
========================================================================================
|
||
``` |