Browse Source

erd-starts

master
esoe 8 months ago
parent
commit
b628b153fd
  1. 9
      docker-compose.yaml
  2. 160
      resource-service-api/src/main/docs/erd/erd-sample.puml
  3. 23
      resource-service-api/src/main/docs/erd/erd.puml
  4. 8
      resource-service-api/src/main/resources/static/content/md/hello.md

9
docker-compose.yaml

@ -5,6 +5,15 @@ services:
command: ["java","-jar","/app/resource-service-api-0.1.jar"] command: ["java","-jar","/app/resource-service-api-0.1.jar"]
ports: ports:
- 80:8181 - 80:8181
# перед сборкой контенера необходимо пересобрать каждый сервис:
# mvn clean package
# Сборка образа:
# docker-compose build # docker-compose build
# Запуск контейнеров платформы:
# docker-compose up -d # docker-compose up -d
# Остановка всех контейнеров платформы:
# docker-compose down # docker-compose down

160
resource-service-api/src/main/docs/erd/erd-sample.puml

@ -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

23
resource-service-api/src/main/docs/erd/erd.puml

@ -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

8
resource-service-api/src/main/resources/static/content/md/hello.md

@ -1,5 +1,9 @@
# HELLO.MD # RESOURCE-SERVICE-API : HELLO.MD
# Структура базы данных сервиса : SCHEME
## TABLE N1:
# Описание api
## /hello ## /hello
Возвращает страницу описания сервиса Возвращает текущую страницу описания сервиса
## /api/content ## /api/content
Возвращает данные таблиц в *.xml формате Возвращает данные таблиц в *.xml формате
Loading…
Cancel
Save