Skip to content

Scriptorium is a Database Systems project dedicated to managing a library. Just as ancient scriptoria preserved and organized knowledge, this information system archives, manages, and optimizes access to books and bibliographic data in a modern and efficient way.

Notifications You must be signed in to change notification settings

SimoneRemoli/Scriptorium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scriptorium

Scriptorium is a Database Systems project dedicated to managing a library.

Just as ancient scriptoria preserved and organized knowledge, this information system archives, manages, and optimizes access to books and bibliographic data in a modern and efficient way.

Scriptorium is inspired by the ancient scriptoria where knowledge was meticulously preserved, catalogued, and made accessible.

Simone Remoli

License: GPL v3


📚 Scriptorium was developed as an academic project for the Database Systems course at the Faculty of Engineering, University of Rome Tor Vergata.


Logo

Organize Your Library

Bridging medieval wisdom and digital knowledge.
Explore the docs »


Size Limit logo by Anton Lovchikov

📘 Project Overview

A library provides a book reservation service for its registered users.
This project aims to develop an Information Management System for such a library, which is characterized by:

  • its address
  • a telephone number
  • the name of the manager
  • and its weekly opening hours

📚 Book Management

The system manages a collection of books, each of which may have multiple available copies.
Every copy is associated with a status that can either be:

  • Available
  • On loan

Books are physically organized by shelf and position, which the system provides to staff when a copy is available.


👥 User Registration

Users can register by providing their personal details along with any number of contact methods
(e.g., phone, mobile, email). Each user must specify their preferred communication method
for being contacted by the library staff.


📖 Book Loans

When issuing a loan, librarians can check the availability of book copies:

  • If a copy is available, the system shows the shelf and position for retrieval.
  • If no copies are available in the local library, the system allows librarians to search the availability in other libraries within the partnered network and request an interlibrary transfer.

Likewise, the library can receive transfer requests from other institutions in the network.
In such cases, the copy is marked as:

Loaned to another library

The system also stores information about the destination library.

📞 Interlibrary transfers are handled by direct phone communication between librarians.


⏳ Loan Duration

Upon receiving a copy, users may choose to retain it for consultation for a period of:

  • 1 month
  • 2 months
  • or 3 months

📄 Reporting Tools

Librarians can generate reports to track:

  • All books currently on loan
  • The users who currently have those books
  • The contact details for each user, which can be used to send return reminders

❌ Book Deactivation

If a book has not been borrowed for the last 10 years, it is deactivated by the circuit administrators.
This means:

  • The book can no longer be borrowed
  • Its record remains in the system for historical purposes
  • Any ongoing loans remain valid until the copy is returned

(back to top)

Built With

The technologies listed below constitute the foundational stack employed in the design and implementation of this system:

Java    JDBC    DBeaver    IntelliJ IDEA

(back to top)

Logical Schema

This section illustrates the logical schema of the system by presenting representative subsets of the database tables used in its implementation.

Title ISBN Category Code Available
Enciclopedia Universale 978-0000000001 000 Yes
Dizionario della Lingua Italiana 978-0000000002 000 Yes
Atlante del Mondo 978-0000000003 000 Yes
Manuale di Biblioteconomia 978-0000000004 010 Yes
Guida ai Libri Rari 978-0000000005 020 Yes
Storia della Scrittura 978-0000000006 030 Yes
Grandi Enciclopedie 978-0000000007 030 Yes
Introduzione alla Bibliografia 978-0000000008 010 Yes
Catalogazione e Archiviazione 978-0000000009 020 Yes
Giornalismo e Media 978-0000000010 050 Yes
Enciclopedia della Conoscenza 978-0000000011 000 Yes
Dizionario Enciclopedico 978-0000000012 000 Yes
Guida ai Testi Antichi 978-0000000013 000 Yes
Manuale di Ricerca Bibliografica 978-0000000014 010 Yes
Enciclopedia Storica 978-0000000015 030 Yes
Enciclopedia del Sapere 978-0000000101 000 Yes
Manuale di Archivistica 978-0000000102 000 Yes
La Biblioteca del Mondo 978-0000000103 000 Yes
Bibliografia Universale 978-0000000104 010 Yes
Dizionario Filosofico 978-0000000105 030 Yes
Copy Number Status ISBN
1Disponibile978-0000000001
1Disponibile978-0000000002
1In prestito altra biblioteca978-0000000003
1Disponibile978-0000000004
1Disponibile978-0000000005
1Disponibile978-0000000006
1Disponibile978-0000000007
1In prestito altra biblioteca978-0000000008
1Disponibile978-0000000009
1Disponibile978-0000000010
1Disponibile978-0000000011
1Disponibile978-0000000012
1Disponibile978-0000000013
1In prestito altra biblioteca978-0000000014
1Disponibile978-0000000015
1Disponibile978-0000000101
1In prestito altra biblioteca978-0000000102
1Disponibile978-0000000103
1Disponibile978-0000000104
1Disponibile978-0000000105

Category Code Name
000Opere generali
010Bibliografia
020Scienze dell’informazione e biblioteconomia
030Enciclopedie e libri di riferimento
050Periodici e giornalismo
060Organizzazioni e museologia
070Giornalismo, editoria e media
080Citazioni e antologie
090Manoscritti e libri rari
100Filosofia
110Metafisica
120Epistemologia, causalità e cambiamento
130Parapsicologia e occultismo
140Scuole filosofiche specifiche
150Psicologia
160Logica
170Etica
180Filosofia antica, medievale e orientale
190Filosofia moderna e occidentale
200Religione

Shelf Code Shelf Name Category Code
1Scaffale Generale 1000
2Scaffale Bibliografie010
3Scaffale Biblioteconomia020
4Scaffale Enciclopedie030
5Scaffale Giornalismo050
6Scaffale Organizzazioni060
7Scaffale Media e Editoria070
8Scaffale Citazioni080
9Scaffale Manoscritti090
10Scaffale Filosofia 1100
11Scaffale Metafisica110
12Scaffale Epistemologia120
13Scaffale Parapsicologia130
14Scaffale Filosofie Specifiche140
15Scaffale Psicologia150
16Scaffale Logica160
17Scaffale Etica170
18Scaffale Filosofia Antica180
19Scaffale Filosofia Moderna190
20Scaffale Religione200

Shelf Number Shelf Code ISBN
11978-0000000001
21978-0000000002
31978-0000000003
41978-0000000011
51978-0000000012
61978-0000000013
71978-0000000101
81978-0000000102
91978-0000000103
101978-0000000107
111978-0000000108
121978-0000000201
131978-0000000202
141978-0000000203
151978-0000000205
12978-0000000004
22978-0000000008
32978-0000000014
42978-0000000104
52978-0000000110

ISBN Library City Copies
978-0000000002Biblioteca StoricaVenezia5
978-0000000008Biblioteca StoricaVenezia3
978-0000000011Biblioteca AccademicaPisa9
978-0000000012Biblioteca PopolarePalermo1
978-0000000102Biblioteca ComunaleFirenze1
978-0000000108Biblioteca CentraleRoma2
978-0000000109Biblioteca CivicaTorino2
978-0000000201Biblioteca CivicaTorino2
978-1000000002Biblioteca CentraleRoma4
978-1000000005Biblioteca UniversitariaBologna4
978-1000000009Biblioteca NazionaleMilano5
978-1000000015Biblioteca AccademicaPisa4
978-1000000104Biblioteca ComunaleFirenze4
978-1000000106Biblioteca PopolarePalermo2
978-1000000204Biblioteca CentraleRoma4
978-1000000206Biblioteca ComunaleFirenze2
978-1000000208Biblioteca CivicaTorino1
978-2000000008Biblioteca CivicaTorino1
978-2000000011Biblioteca PopolarePalermo5
978-2000000013Biblioteca ComunaleFirenze1

Let us now assume a scenario in which a user requests to borrow a book that is available in the library. A loan is initiated for a copy of the book titled "Manuale di Biblioteconomia".

The user, Simone Remoli, specifies his mobile number (+39 3881211212) as his preferred contact method (note: this is not the author's actual phone number).

Consequently, the selected copy is registered in the system with the status "On loan to user", which is duly reflected in the database records.

Furthermore, the user's name is recorded in the loan tracking table, establishing a link between the borrowed copy and the requesting individual.


Copy Number Status ISBN
1 Disponibile 978-0000000001
1 Disponibile 978-0000000002
1 In prestito altra biblioteca 978-0000000003
1 In prestito utente 978-0000000004
1 Disponibile 978-0000000005
1 Disponibile 978-0000000006
1 Disponibile 978-0000000007
1 In prestito altra biblioteca 978-0000000008
1 Disponibile 978-0000000009
1 Disponibile 978-0000000010

First Name Last Name Date of Birth
Simone Remoli 2000-10-02

First Name Last Name Date of Birth Phone
Simone Remoli 2000-10-02 3881211212

This table indicates that the user Simone Remoli has requested a copy of the book identified by ISBN 978-0000000004, initiating a loan on March 22, 2025, with a scheduled return date of June 22, 2025.

ISBN Copy Number First Name Last Name Date of Birth Loan Start Date Loan End Date
978-0000000004 1 Simone Remoli 2000-10-02 2025-03-22 2025-06-22

Scriptorium is designed to simulate the reception of external events through a scheduled database trigger.

This mechanism selects a random ISBN from the pool of available copies and issues a request on behalf of a randomly chosen library.

Since the system also includes external libraries that may request books held internally, this simulation reproduces the interlibrary loan process triggered by such external institutions.

Let us now assume that the Municipal Library of Florence requests a copy of the book entitled "La Biblioteca del Mondo", identified by ISBN 978-0000000103.

As a result, the corresponding record in the Copy table must be updated. The change in the copy's status is duly reflected in the system's database.

Copy Number Status ISBN
1Disponibile978-0000000001
1Disponibile978-0000000002
1Disponibile978-0000000003
1In prestito utente978-0000000004
1Disponibile978-0000000005
1Disponibile978-0000000006
1Disponibile978-0000000007
1Disponibile978-0000000008
1Disponibile978-0000000009
1Disponibile978-0000000010
1In prestito utente978-0000000011
1Disponibile978-0000000012
1Disponibile978-0000000013
1Disponibile978-0000000014
1Disponibile978-0000000015
1Disponibile978-0000000101
1Disponibile978-0000000102
1In prestito altra biblioteca978-0000000103
1Disponibile978-0000000104
1Disponibile978-0000000105

It is now possible to clearly observe the external loan that has been recorded.

ISBN Copy Number Library Name City
978-0000000103 1 Biblioteca Comunale Firenze

If a user requests a copy of a book that is not available within the local library, the system allows a request to be issued to an external library that holds a copy of the desired book.

Let us assume that the user Emilio intends to request a loan of the book titled "Enciclopedia della Conoscenza".

However, the book is currently unavailable within the library, as all copies have been exhausted.

Consequently, the system must identify external libraries where the book is available for loan.

The book requested by Emilio, identified by ISBN 978-0000000011, is currently available at the Academic Library of Pisa, which holds a total of 9 copies.

Screenshot 2025-03-22 alle 13 58 53

After the book has been explicitly requested, the corresponding table is updated: the number of available copies is reduced from 9 to 8, and the loan transaction is duly recorded in the system.

Screenshot 2025-03-22 alle 14 00 51

The table below records an interlibrary loan successfully initiated by the user Emilio Rossi. The book, identified by ISBN 978-0000000011, was borrowed from the Academic Library of Pisa.

The transaction includes the user's full identification details and the scheduled loan period, which spans from March 22, 2025 to May 22, 2025.

This operation exemplifies the system's ability to process and document external loan requests across library institutions.

ISBN First Name Last Name Date of Birth Library Name City Loan Start Date Loan End Date
978-0000000011 Emilio Rossi 2004-05-06 Biblioteca Accademica Pisa 2025-03-22 2025-05-22

(back to top)

About

Scriptorium is a Database Systems project dedicated to managing a library. Just as ancient scriptoria preserved and organized knowledge, this information system archives, manages, and optimizes access to books and bibliographic data in a modern and efficient way.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages