Database
 sql >> Database >  >> RDS >> Database

Un modello di dati di libreria

Quale modello di dati ti permetterebbe di cercare comodamente libri e prenderli in prestito nella tua biblioteca locale?

Sei mai andato in una biblioteca e hai preso in prestito un libro? Forse questo sembra vecchio stile nel mondo odierno della conoscenza istantanea di Internet e degli e-book. Ma sono sicuro che c'è ancora questa parte analogica di te a cui piace ancora annusare, toccare e leggere libri. O forse sei stato costretto a usare una libreria quando non riuscivi a trovare qualcosa su Internet! Sì, non tutto è online.

Quindi, in che modo un modello di dati organizzerebbe i libri e i prestiti delle biblioteche? Entriamo subito in questo modello e vediamo come funziona!

Il modello dei dati

Avevo in mente le biblioteche pubbliche quando ho creato questo modello di dati. Si presume che ogni biblioteca nella rete delle biblioteche pubbliche utilizzi lo stesso modello/sistema. È centralizzato e consente ai membri di sfogliare la collezione di ogni biblioteca della rete. Inoltre, i membri possono prendere in prestito libri da qualsiasi biblioteca della rete.

Il modello dei dati della biblioteca è composto da tredici tabelle suddivise in due aree tematiche. Queste aree sono:

  1. Books & Libraries
  2. Members & Loans



Analizzeremo ogni area tematica separatamente e analizzeremo tutti i dettagli.

Libri e biblioteche

Questa area tematica memorizza informazioni su libri e biblioteche. Si compone di dieci tabelle:

  • author
  • authorship_role
  • literature_category
  • book
  • book_authorship
  • book_item
  • publishing_house
  • library
  • city
  • country

La prima tabella è l'author tavolo. Elenca tutti gli autori (più i relativi dettagli) dei libri che la biblioteca ha nella sua collezione. Per ogni autore avremo:

  • id – Un ID univoco per quell'autore.
  • author_name – Il nome dell'autore.
  • author_surname – Il cognome dell'autore.
  • date_birth – La data di nascita dell'autore.
  • date_death – La data di morte dell'autore.

Il authorship_role la tabella elenca tutti i ruoli che un autore può avere, ad es. autore, coautore, ecc. Questa tabella ha i seguenti attributi:

  • id – Un ID univoco per ogni ruolo.
  • role_name – Il nome di quel ruolo, ad es. "coautore". Questa è la chiave alternativa della tabella.

La tabella literature_category elenca tutte le categorie di libri, ad es. thriller, letteratura francese, realismo russo, filosofia, ecc. La tabella contiene i seguenti attributi:

  • id – Un ID univoco per quella categoria.
  • category_name – Il nome della categoria, ad es. "mistero". Questa è la chiave alternativa della tabella.

Successivamente, abbiamo il book tavolo. Questa tabella memorizza tutti i dettagli rilevanti di ogni titolo che la biblioteca ha nella sua collezione. Si prega di notare che questa non è la tabella utilizzata per ogni libro come articolo. Per questo, useremo un'altra tabella, ovvero il book_item tavolo. Il book tabella è composta dagli attributi:

  • isbn – Un ID univoco per ogni titolo di libro, che nel settore dell'editoria è l'International Standard Book Number (ISBN).
  • book_title – Il titolo del libro.
  • literature_category_id – Fa riferimento a literature_category tabella.
  • publishing_house_id – Fa riferimento alla publishing_house tabella.
  • year_published – L'anno di pubblicazione del libro.

La tabella successiva nel nostro modello è book_authorship tavolo. È una tabella di intersezione che sarà collegata al book , author e authorship_role tavoli. Contiene i seguenti attributi:

  • book_id – Fa riferimento al book tabella.
  • author_id – Fa riferimento all'author tabella.
  • authorship_role_id – Fa riferimento al authorship_role tabella.

Questi tre attributi insieme formano la chiave primaria composita della tabella. Una chiave primaria composita significa che qualsiasi combinazione di tutti e tre gli attributi deve essere univoca; ogni combinazione può verificarsi una sola volta.

Ora diamo un'occhiata al book_item tabella, che abbiamo menzionato in precedenza come memorizzazione delle informazioni per ogni libro fisico in una libreria. Conterrà le seguenti informazioni:

  • id – Un ID univoco per ogni libro come articolo.
  • isbn – Fa riferimento al book tabella.
  • library_id – Fa riferimento alla library tabella.

La tabella The publishing_house table is the next one in our model. It lists the publishers of all the books that the library has in its collection. The attributes in the table are as follows: table è il prossimo nel nostro modello. Elenca gli editori di tutti i libri che la biblioteca ha nella sua collezione. Gli attributi nella tabella sono i seguenti:

  • id – Un ID univoco per ogni casa editrice.
  • publishing_house_name – Il nome della casa editrice (es. Penguin Books, McGraw-Hill, Simon &Schuster, ecc.).
  • city_id – Fa riferimento alla city tavolo. Questo collegamento ci permetterà anche di determinare sia la città che il paese della casa editrice. Il publishing_house_namecity_id pair è la chiave alternativa di questa tabella.

Ok, passiamo alla library tavolo. Questa tabella è referenziata nel book_item tabella, dove definisce la libreria in cui è conservata ogni copia di un libro. Ciò è necessario perché gli stessi titoli di libri possono essere trovati in più di una biblioteca in una rete (ad es. ogni biblioteca probabilmente ha almeno una copia di Il Signore degli Anelli ). Pertanto, dobbiamo sapere quale libro è in quale biblioteca. Per farlo, avremo bisogno dei seguenti attributi:

  • id – Un ID univoco per la libreria.
  • library_name – Il nome di quella libreria.
  • address – L'indirizzo di quella libreria.
  • city_id – Fa riferimento alla city tavolo. Il library_name - city_id pair è la chiave alternativa di questa tabella.

La tabella successiva in questo modello è la city tavolo. È un semplice elenco di città che utilizzeremo per informazioni su editori, biblioteche e membri delle biblioteche. Gli attributi sono:

  • id – Un ID univoco per la città.
  • postal_code – Il codice postale di quella città.
  • city_name – Il nome di quella città.
  • country_id – Fa riferimento al country tabella.

Dopodiché, è rimasta una sola tabella in questa area tematica:il country tavolo. Questo è un elenco di tutti i paesi in cui si trovano le nostre biblioteche e/o editori di libri. È costituito dai seguenti attributi:

  • id – Un ID univoco per ogni Paese.
  • country_name – Il nome del paese. Questa è la chiave alternativa per la tabella.

Successivamente, esaminiamo la seconda area tematica.

Membri e prestiti

Lo scopo di questa area tematica è gestire le informazioni sui membri della biblioteca e sui libri che prendono in prestito. Si compone di tre tabelle:

  • member
  • loaned_book
  • loan_status

Ora parliamo dei tavoli.

La prima tabella in quest'area è il member tavolo. Contiene tutte le informazioni rilevanti sui membri della biblioteca. I suoi attributi sono i seguenti:

  • id – Un ID univoco per ogni membro.
  • name – Il nome del membro.
  • surname – Il cognome del membro.
  • address – L'indirizzo del membro.
  • city_id – Fa riferimento alla city tabella.
  • email_address – L'indirizzo email del membro.
  • phone_number – Il numero di telefono del membro.

La tabella successiva è il loaned_book tavolo. Memorizza informazioni su tutti i libri che sono mai stati prestati. In questo modo, possiamo tenere traccia dell'inventario della biblioteca e dello stato di eventuali libri in prestito. Questa tabella è composta dai seguenti attributi:

  • id – Un ID univoco per ogni libro prestato.
  • book_item_id – Fa riferimento al book_item tabella.
  • member_id – Fa riferimento al member tabella.
  • date_loaned – La data in cui questo libro è stato prestato.
  • date_due – La data in cui questo libro deve essere restituito.
  • date_returned – La data in cui il libro è stato effettivamente restituito alla biblioteca; questo può essere NULL perché non conosceremo la data fino alla restituzione del libro.
  • overdue_fine – La quota di ritardo (se presente) pagata dal membro, che di solito viene calcolata in base alla differenza tra il date_returned e il date_due . Questo può essere NULL perché un libro che viene restituito in tempo non va bene.
  • loan_status_id – Fa riferimento al loan_status tabella.
  • ts – Il timestamp in cui è stato inserito lo stato del prestito.

Il loan_status table è l'ultima nel nostro modello di dati. È semplicemente un elenco di tutti i possibili stati di prestito, ad es. attivo, scaduto, restituito, ecc. Questa tabella sarà composta dai seguenti attributi:

  • id – Un ID univoco per ogni stato di prestito.
  • status_name – Un nome che descrive lo stato del prestito. Questa è la chiave alternativa per la tabella.

Ecco fatto:abbiamo esaminato tutti i dettagli del nostro modello di dati!

Cosa ne pensi del modello di dati della libreria?

Abbiamo trattato i principi generali in questo modello, quindi dovrebbe esserlo (con alcune modifiche) per ogni libreria. Conosci qualche dettaglio della libreria che ci siamo persi? O forse hai trovato il modello utile e facilmente applicabile? Dì la tua nella sezione commenti.