4.0 KiB
4.0 KiB
Блок заданий "Задание, Java Script, Node JS:" (2)
- Есть объекты вида
// Я изменил название для наглядности и для корректного форматирования в .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 | Адрес
========================================================================================