esoe
8 months ago
4 changed files with 198 additions and 2 deletions
@ -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 @@ |
|||||||
|
@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 @@ |
|||||||
# HELLO.MD |
# RESOURCE-SERVICE-API : HELLO.MD |
||||||
|
# Структура базы данных сервиса : SCHEME |
||||||
|
## TABLE N1: |
||||||
|
|
||||||
|
# Описание api |
||||||
## /hello |
## /hello |
||||||
Возвращает страницу описания сервиса |
Возвращает текущую страницу описания сервиса |
||||||
## /api/content |
## /api/content |
||||||
Возвращает данные таблиц в *.xml формате |
Возвращает данные таблиц в *.xml формате |
Loading…
Reference in new issue