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

Ein Bibliotheksdatenmodell

Welches Datenmodell würde es Ihnen ermöglichen, bequem nach Büchern zu suchen und diese in Ihrer örtlichen Bibliothek auszuleihen?

Bist du schon einmal in eine Bibliothek gegangen und hast dir ein Buch ausgeliehen? Vielleicht erscheint das in der heutigen Welt des sofortigen Internetwissens und der E-Books altmodisch. Aber ich bin mir sicher, dass es immer noch diesen analogen Teil von dir gibt, der immer noch gerne Bücher riecht, berührt und liest. Oder vielleicht waren Sie gezwungen, eine Bibliothek zu benutzen, wenn Sie im Internet nichts finden konnten! Ja, nicht alles ist online.

Wie würde also ein Datenmodell Bibliotheksbücher und Ausleihen organisieren? Lassen Sie uns direkt in dieses Modell eintauchen und sehen, wie es funktioniert!

Das Datenmodell

Als ich dieses Datenmodell erstellte, hatte ich öffentliche Bibliotheken im Sinn. Es wird davon ausgegangen, dass jede Bibliothek im Netz öffentlicher Bibliotheken dasselbe Modell/System verwendet. Es ist zentralisiert und ermöglicht es den Mitgliedern, die Sammlung jeder Bibliothek im Netzwerk zu durchsuchen. Außerdem können Mitglieder Bücher aus jeder Bibliothek im Netzwerk ausleihen.

Das Bibliotheksdatenmodell besteht aus dreizehn Tabellen, die in zwei Themenbereiche unterteilt sind. Diese Bereiche sind:

  1. Books & Libraries
  2. Members & Loans



Wir gehen jeden Themenbereich separat durch und analysieren alle Details.

Bücher und Bibliotheken

In diesem Themenbereich werden Informationen zu Büchern und Bibliotheken gespeichert. Es besteht aus zehn Tabellen:

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

Die erste Tabelle ist der author Tisch. Es listet alle Autoren (einschließlich ihrer relevanten Details) der Bücher auf, die die Bibliothek in ihrer Sammlung hat. Für jeden Autor haben wir:

  • id – Eine eindeutige ID für diesen Autor.
  • author_name – Der Vorname des Autors.
  • author_surname – Der Nachname des Autors.
  • date_birth – Geburtsdatum des Autors.
  • date_death – Das Todesdatum des Autors.

Die authorship_role listet alle Rollen auf, die ein Autor haben kann, z. Autor, Co-Autor usw. Diese Tabelle hat die folgenden Attribute:

  • id – Eine eindeutige ID für jede Rolle.
  • role_name – Der Name dieser Rolle, z. "Mitverfasser". Dies ist der alternative Schlüssel der Tabelle.

Die Tabelle literature_category listet alle Buchkategorien auf, z.B. Thriller, französische Literatur, russischer Realismus, Philosophie usw. Die Tabelle enthält die folgenden Attribute:

  • id – Eine eindeutige ID für diese Kategorie.
  • category_name – Der Name der Kategorie, z. "Geheimnis". Dies ist der alternative Schlüssel der Tabelle.

Als nächstes haben wir das book Tisch. Diese Tabelle speichert alle relevanten Details zu jedem Titel, den die Bibliothek in ihrer Sammlung hat. Bitte beachten Sie, dass dies nicht die Tabelle ist, die für jedes Buch als Artikel verwendet wird. Dafür verwenden wir eine andere Tabelle, nämlich book_item Tisch. Das book Tabelle besteht aus den Attributen:

  • isbn – Eine eindeutige ID für jeden Buchtitel, die in der Verlagsbranche die International Standard Book Number (ISBN) ist.
  • book_title – Der Titel des Buches.
  • literature_category_id – Referenziert die literature_category Tabelle.
  • publishing_house_id – Verweist auf publishing_house Tabelle.
  • year_published – Das Jahr, in dem das Buch veröffentlicht wurde.

Die nächste Tabelle in unserem Modell ist book_authorship Tisch. Es ist eine Schnittpunkttabelle, die mit dem book , author und authorship_role Tische. Es enthält die folgenden Attribute:

  • book_id – Verweist auf das book Tabelle.
  • author_id – Verweist auf den author Tabelle.
  • authorship_role_id – Verweist auf authorship_role Tabelle.

Diese drei Attribute bilden zusammen den zusammengesetzten Primärschlüssel der Tabelle. Ein zusammengesetzter Primärschlüssel bedeutet, dass jede Kombination aller drei Attribute eindeutig sein muss; jede Kombination darf nur einmal vorkommen.

Sehen wir uns nun book_item Tabelle, die wir bereits erwähnt haben, um Informationen für jedes physische Buch in einer Bibliothek zu speichern. Es enthält die folgenden Informationen:

  • id – Eine eindeutige ID für jedes Buch als Artikel.
  • isbn – Verweist auf das book Tabelle.
  • library_id – Verweist auf die library Tabelle.

Die Tabelle 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: Tabelle ist die nächste in unserem Modell. Es listet die Verlage aller Bücher auf, die die Bibliothek in ihrer Sammlung hat. Die Attribute in der Tabelle lauten wie folgt:

  • id – Eine eindeutige ID für jeden Verlag.
  • publishing_house_name – Der Name des Verlags (z. B. Penguin Books, McGraw-Hill, Simon &Schuster usw.).
  • city_id – Verweist auf city Tisch. Diese Verbindung ermöglicht es uns auch, sowohl die Stadt als auch das Land des Verlagshauses zu bestimmen. Der publishing_house_namecity_id pair ist der alternative Schlüssel dieser Tabelle.

Okay, gehen wir weiter zur library Tisch. Auf diese Tabelle wird im book_item Tabelle, wo sie die Bibliothek definiert, in der sich jedes Exemplar eines Buches befindet. Dies ist erforderlich, da die gleichen Buchtitel in mehr als einer Bibliothek in einem Netzwerk zu finden sind (z. B. jede Bibliothek hat wahrscheinlich mindestens ein Exemplar von Der Herr der Ringe ). Daher müssen wir wissen, welches Buch sich in welcher Bibliothek befindet. Dazu benötigen wir die folgenden Attribute:

  • id – Eine eindeutige ID für die Bibliothek.
  • library_name – Der Name dieser Bibliothek.
  • address – Die Adresse dieser Bibliothek.
  • city_id – Verweist auf city Tisch. Der library_name - city_id pair ist der alternative Schlüssel dieser Tabelle.

Die nächste Tabelle in diesem Modell ist city Tisch. Es ist eine einfache Liste von Städten, die wir für Informationen über Verlage, Bibliotheken und Bibliotheksmitglieder verwenden werden. Die Attribute sind:

  • id – Eine eindeutige ID für die Stadt.
  • postal_code – Die Postleitzahl dieser Stadt.
  • city_name – Der Name dieser Stadt.
  • country_id – Verweist auf das country Tabelle.

Danach bleibt in diesem Themenbereich nur noch eine Tabelle übrig:das country Tisch. Dies ist eine Liste aller Länder, in denen sich unsere Bibliotheken und/oder Buchverlage befinden. Es besteht aus den folgenden Attributen:

  • id – Eine eindeutige ID für jedes Land.
  • country_name – Der Name des Landes. Dies ist der alternative Schlüssel für die Tabelle.

Lassen Sie uns als Nächstes den zweiten Themenbereich untersuchen.

Mitglieder und Darlehen

Der Zweck dieses Themenbereichs ist die Verwaltung von Informationen über Bibliotheksmitglieder und die von ihnen ausgeliehenen Bücher. Es besteht aus drei Tabellen:

  • member
  • loaned_book
  • loan_status

Lassen Sie uns nun über die Tabellen sprechen.

Die erste Tabelle in diesem Bereich ist member Tisch. Es enthält alle relevanten Informationen über Bibliotheksmitglieder. Seine Attribute lauten wie folgt:

  • id – Eine eindeutige ID für jedes Mitglied.
  • name – Der Vorname des Mitglieds.
  • surname – Der Nachname des Mitglieds.
  • address – Die Adresse des Mitglieds.
  • city_id – Verweist auf city Tabelle.
  • email_address – Die E-Mail-Adresse des Mitglieds.
  • phone_number – Die Telefonnummer des Mitglieds.

Die nächste Tabelle ist das loaned_book Tisch. Es speichert Informationen über alle jemals ausgeliehenen Bücher. Auf diese Weise können wir den Bibliotheksbestand und den Status eventuell ausgeliehener Bücher verfolgen. Diese Tabelle besteht aus den folgenden Attributen:

  • id – Eine eindeutige ID für jedes ausgeliehene Buch.
  • book_item_id – Verweist auf book_item Tabelle.
  • member_id – Verweist auf das member Tabelle.
  • date_loaned – Das Ausleihdatum dieses Buches.
  • date_due – Das Datum, an dem dieses Buch zurückgegeben werden sollte.
  • date_returned – Datum der tatsächlichen Rückgabe des Buches an die Bibliothek; Dies kann NULL sein, da wir das Datum erst kennen, wenn das Buch zurückgegeben wird.
  • overdue_fine – Die vom Mitglied gezahlte Verspätungsgebühr (falls zutreffend), die normalerweise auf der Grundlage der Differenz zwischen dem date_returned berechnet wird und das date_due . Dies kann NULL sein, weil ein rechtzeitig zurückgegebenes Buch keine Strafe hat.
  • loan_status_id – Referenziert den loan_status Tabelle.
  • ts – Der Zeitstempel, als dieser Ausleihstatus eingegeben wurde.

Der loan_status Tabelle ist die letzte in unserem Datenmodell. Es ist einfach eine Liste aller möglichen Ausleihstatus, z. aktiv, überfällig, zurückgegeben usw. Diese Tabelle besteht aus den folgenden Attributen:

  • id – Eine eindeutige ID für jeden Ausleihstatus.
  • status_name – Ein Name, der den Ausleihstatus beschreibt. Dies ist der alternative Schlüssel für die Tabelle.

Das war’s – wir sind alle Details unseres Datenmodells durchgegangen!

Was denken Sie über das Bibliotheksdatenmodell?

Wir haben allgemeine Prinzipien in diesem Modell behandelt, also sollte es (mit ein paar Optimierungen) für jede Bibliothek gelten. Kennen Sie Bibliotheksdetails, die wir übersehen haben? Oder fanden Sie das Modell nützlich und leicht anwendbar? Sagen Sie Ihre Meinung im Kommentarbereich.