esoe
8 months ago
4 changed files with 198 additions and 2 deletions
@ -0,0 +1,160 @@
@@ -0,0 +1,160 @@
|
||||
@startuml ERD |
||||
!define primary_key(x) <b><color:#b8861b><&key></color> x</b> |
||||
!define foreign_key(x) <b><color:#aaaaaa><&key></color> x</b> |
||||
!define column(x) <b><color:#efefef><&media-record></color> x</b> |
||||
!define table(x) entity x << (T, white) >> |
||||
|
||||
title "Entity Relationship Diagram (ERD): LIBRARY (Библиотека)" |
||||
' left to right direction |
||||
entity "Библиотечный фонд" as repository |
||||
entity "Вид переплета" as bindings |
||||
entity "Авторы" as authors |
||||
entity "Штрихкоды" as barcodes |
||||
entity "Библиография" as bibliography |
||||
entity "Жанры" as genres |
||||
entity "Издательства" as publishers |
||||
entity "Карточка читателя" as accounts |
||||
entity "Паспорт" as pasports |
||||
entity "Свидетельство о рождении" as certificates |
||||
entity "Выдача книг" as allocation |
||||
entity "Бронирование" as booking |
||||
|
||||
' Сведения о приобретенных библиотекой книгах |
||||
' одна строчка - одно издание |
||||
' - которая может быть приобретена в нескольких экземплярах |
||||
table(repository) { |
||||
primary_key(id): SERIAL >>"Идентификатор" |
||||
column(title): VARCHAR[300] >>"Наименование" |
||||
column(instances): INTEGER >>"Количество экземпляров" |
||||
column(isbn): INTEGER >>"isbn" |
||||
column(year): DATE >>"Год издания" |
||||
foreign_key(bindings_id): INTEGER >>"Вид переплета" |
||||
foreign_key(publishers_id): INTEGER >>"Издательство" |
||||
foreign_key(genres_id): INTEGER >>"Жанр" |
||||
} |
||||
|
||||
' Типы переплетов |
||||
' Для автоподстановки при заполнении поля переплеты |
||||
' -также возможно типы переплетов поменяются в будущем (жесткий, мягкий, глянцевый, матовый, электронная книга) |
||||
table(bindings){ |
||||
primary_key(id): SERIAL >>"Идентификатор" |
||||
column(type): VARCHAR[10] >>"Тип переплета" |
||||
} |
||||
|
||||
' сведения об авторах |
||||
table(authors){ |
||||
primary_key(id): SERIAL >>"Идентификатор" |
||||
column(fio): VARCHAR[50] >>"ФИО" |
||||
column(country): VARCHAR[30] >>"Страна рождения" |
||||
} |
||||
|
||||
' Таблица экземпляров книг |
||||
' Одна строка - один физический экземпляр |
||||
table(barcodes){ |
||||
primary_key(id): SERIAL >>"Идентификатор" |
||||
column(value): INTEGER >>"Штрихкод" |
||||
foreign_key(repository_id) >>"Публикация" |
||||
} |
||||
|
||||
' сведения о соавторах |
||||
' таблица для определения: |
||||
' - перечня авторов книги |
||||
' - перечня книг в написании которых участвовал автор |
||||
table(bibliography){ |
||||
foreign_key(repository_id): INTEGER >>"Идентификатор издания" |
||||
foreign_key(authors_id): INTEGER >>"Идентификатор автора" |
||||
} |
||||
|
||||
' Жанры |
||||
table(genres){ |
||||
primary_key(id): SERIAL >>"Идентификатор" |
||||
column(value): VARCHAR[30] >>"Жанр" |
||||
} |
||||
|
||||
table(publishers) { |
||||
primary_key( id ): SERIAL >>"Идентификатор" |
||||
column(name): VARCHAR[50] >>"Наименование" |
||||
column(address): VARCHAR[300] >>"Адрес" |
||||
column(phone): INTEGER >>"Телефон" |
||||
column(contactname): VARCHAR[150] >>"Контакты-имя" |
||||
} |
||||
|
||||
' Карточки читателей |
||||
table(accounts) { |
||||
primary_key( id ): SERIAL >>"Идентификатор" |
||||
column(fname): VARCHAR[50] >>"Имя" |
||||
column(sname): VARCHAR[50] >>"Отчество" |
||||
column(lname): VARCHAR[50] >>"Фамилия" |
||||
column(address): VARCHAR[300] >>"Адрес" |
||||
column(phone): INTEGER >>"Телефон" |
||||
foreign_key(pasport_id): INTEGER >>"Паспорт" |
||||
foreign_key(sertificate_id): INTEGER >>"Свидетельство о рождении" |
||||
foreign_key(account_id) >>"Карточка родителя" |
||||
} |
||||
|
||||
' Паспорта |
||||
table(pasports){ |
||||
primary_key( id ): SERIAL >>"Идентификатор" |
||||
column(serial): INTEGER >>"Серия" |
||||
column(number): INTEGER >>"Номер" |
||||
} |
||||
|
||||
' Свидетельства о рождении |
||||
table(certificates){ |
||||
primary_key( id ): SERIAL >>"Идентификатор" |
||||
column(serial): VARCHAR[10] >>"Серия" |
||||
column(number): INTEGER >>"Номер" |
||||
} |
||||
|
||||
' Выдача книг |
||||
table(allocation) { |
||||
primary_key( id ): SERIAL >>"Идентификатор" |
||||
foreign_key(account_id): INTEGER >>"Карточка читателя" |
||||
column(book_out): DATE >>"Дата выдачи" |
||||
column(book_in): DATE >>"Планируемая дата возврата" |
||||
column(book_in_fact): DATE >>"Фактическая дата возврата" |
||||
column(penalty): MONEY >>"Штраф" |
||||
column(late):INTEGER >>"Период задержки возврата книги" |
||||
foreign_key(barcode_id): INTEGER >>"Идентификатор штрихкода" |
||||
} |
||||
|
||||
' Бронирование книг |
||||
' происходит по изданиям, чаще всего читателю не важно, какой переплет ему дадут |
||||
table(booking){ |
||||
primary_key(id) : SERIAL >>"Идентификатор" |
||||
foreign_key(accounts_id): INTEGER >>"Карточка читателя" |
||||
foreign_key(repository_id) : INTEGER >>"Издание" |
||||
column(date) : DATE >>"Дата бронирования" |
||||
} |
||||
|
||||
repository }|--|| publishers : "publisher_id" |
||||
repository }|--|| genres : "genre_id" |
||||
repository }|--|| bindings : "binding_id" |
||||
|
||||
barcodes }|--|| repository : "repository_id" |
||||
|
||||
bibliography }|--|| repository : "repository_id" |
||||
bibliography }|--|| authors : "author_id" |
||||
|
||||
accounts ||--|| certificates : "sertificate_id" |
||||
accounts ||--|| pasports : "pasport_id" |
||||
accounts ||--|{ accounts : "account_id" |
||||
|
||||
booking }|--|| repository : "repository_id" |
||||
booking }|--|| accounts : "account_id" |
||||
|
||||
allocation }|--|| barcodes : "barcode_id" |
||||
allocation }|--|| accounts : "account_id" |
||||
|
||||
' - в таблице бронирования забыто поле для читателя, который забронировал книгу; |
||||
' 1. Добавил в отношение "Бронирование" поле account_id |
||||
' 2. Добавил связь "Бронирование" --> "Карточка читателя" |
||||
|
||||
' - не понятно, как реализуется связь читателя младше 14 лет с одним из взрослых родственников; |
||||
' 3. Добавил в "Карточку читателя" поле account_id |
||||
' 4. Добавил связь "Карточка читателя" --> "Карточка читателя" |
||||
|
||||
' - в таблице "Выдача книг" потерялась колонка account_id, хотя ею подписана связь с таблицей "Карточка читателя". |
||||
' 5. Добавил поле account_id в отношение "Выдача книг" |
||||
|
||||
@enduml |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
@startuml ERD |
||||
!define primary_key(x) <b><color:#b8861b><&key></color> x</b> |
||||
!define foreign_key(x) <b><color:#aaaaaa><&key></color> x</b> |
||||
!define column(x) <b><color:#efefef><&media-record></color> x</b> |
||||
!define table(x) entity x << (T, white) >> |
||||
|
||||
title "Entity Relationship Diagram (ERD): education-records (учет обучений)" |
||||
' left to right direction |
||||
|
||||
entity "Реестр обученных" as repository |
||||
entity "Заявка на обучение" as task |
||||
entity "Списочный состав" as list |
||||
|
||||
' Списочный состав обученных |
||||
table(list){} |
||||
|
||||
' Заявка на обучение |
||||
table(task){} |
||||
|
||||
' Реестр обученных |
||||
table(repository){} |
||||
|
||||
@enduml |
@ -1,5 +1,9 @@
@@ -1,5 +1,9 @@
|
||||
# HELLO.MD |
||||
# RESOURCE-SERVICE-API : HELLO.MD |
||||
# Структура базы данных сервиса : SCHEME |
||||
## TABLE N1: |
||||
|
||||
# Описание api |
||||
## /hello |
||||
Возвращает страницу описания сервиса |
||||
Возвращает текущую страницу описания сервиса |
||||
## /api/content |
||||
Возвращает данные таблиц в *.xml формате |
Loading…
Reference in new issue