Jaký datový model by vám umožnil pohodlně vyhledávat knihy a půjčovat si je ve vaší místní knihovně?
Šli jste někdy do knihovny a půjčili si knihu? Možná se vám to v dnešním světě okamžitých internetových znalostí a elektronických knih zdá staromódní. Ale jsem si jistý, že stále existuje analogová část vás, která stále ráda voní, dotýká se a čte knihy. Nebo jste možná byli nuceni použít knihovnu, když jste nemohli něco najít na internetu! Ano, ne vše je online.
Jak by tedy datový model organizoval knihy a výpůjčky v knihovně? Pojďme se ponořit přímo do tohoto modelu a podívat se, jak funguje!
Datový model
Při vytváření tohoto datového modelu jsem měl na mysli veřejné knihovny. Existuje předpoklad, že každá knihovna v síti veřejných knihoven používá stejný model/systém. Je centralizovaná a umožňuje členům procházet sbírku každé knihovny v síti. Členové si také mohou půjčovat knihy z jakékoli knihovny v síti.
Datový model knihovny se skládá ze třinácti tabulek rozdělených do dvou tematických oblastí. Tyto oblasti jsou:
Books & Libraries
Members & Loans
Projdeme si každou oblast zvlášť a analyzujeme všechny podrobnosti.
Knihy a knihovny
Tato oblast uchovává informace o knihách a knihovnách. Skládá se z deseti tabulek:
author
authorship_role
literature_category
book
book_authorship
book_item
publishing_house
library
city
country
První tabulka je author
stůl. Jsou zde uvedeni všichni autoři (a jejich příslušné údaje) knih, které má knihovna ve svém fondu. Pro každého autora budeme mít:
id
– Jedinečné ID tohoto autora.author_name
– Křestní jméno autora.author_surname
– Příjmení autora.date_birth
– Datum narození autora.date_death
– Datum autorovy smrti.
authorship_role
tabulka uvádí všechny role, které může autor mít, např. autor, spoluautor atd. Tato tabulka má následující atributy:
id
– Jedinečné ID pro každou roli.role_name
– Název té role, např. "spoluautor". Toto je alternativní klíč tabulky.
Tabulka literature_category
uvádí všechny kategorie knih, např. thriller, francouzská literatura, ruský realismus, filozofie atd. Tabulka obsahuje následující atributy:
id
– Jedinečné ID pro danou kategorii.category_name
– Název kategorie, např. "tajemství". Toto je alternativní klíč tabulky.
Dále tu máme book
stůl. Tato tabulka ukládá všechny relevantní podrobnosti o každém titulu, který má knihovna ve své sbírce. Upozorňujeme, že toto není tabulka používaná pro každou knihu jako položku. K tomu nám poslouží další tabulka, a to book_item
stůl. book
tabulka se skládá z atributů:
isbn
– Jedinečné ID pro každý knižní titul, kterým je ve vydavatelském průmyslu mezinárodní standardní číslo knihy (ISBN).book_title
– Název knihy.literature_category_id
– Odkazuje naliterature_category
stůl.publishing_house_id
– Odkazuje napublishing_house
stůl.year_published
– Rok vydání knihy.
Další tabulkou v našem modelu je book_authorship
stůl. Jde o průsečíkovou tabulku, která bude napojena na book
, author
a authorship_role
tabulky. Obsahuje následující atributy:
book_id
– Odkazuje nabook
stůl.author_id
– Odkazuje naauthor
stůl.authorship_role_id
– Odkazuje naauthorship_role
stůl.
Tyto tři atributy dohromady tvoří složený primární klíč tabulky. Složený primární klíč znamená, že jakákoli kombinace všech tří atributů musí být jedinečná; každá kombinace může nastat pouze jednou.
Nyní se podívejme na book_item
tabulku, o které jsme se zmínili dříve jako o ukládání informací pro každou fyzickou knihu v knihovně. Bude obsahovat následující informace:
id
– Jedinečné ID pro každou knihu jako položku.isbn
– Odkazuje nabook
stůl.library_id
– Odkazuje nalibrary
stůl.
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:
tabulka je další v našem modelu. Uvádí vydavatele všech knih, které má knihovna ve svém fondu. Atributy v tabulce jsou následující:
id
– Jedinečné ID pro každé vydavatelství.publishing_house_name
– Název nakladatelství (např. Penguin Books, McGraw-Hill, Simon &Schuster atd.).city_id
– Odkazuje nacity
stůl. Toto spojení nám také umožní určit jak město, tak zemi vydavatelství.publishing_house_name
–city_id
pár je alternativním klíčem této tabulky.
Dobře, pojďme do library
stůl. Na tuto tabulku se odkazuje v book_item
tabulka, kde definuje knihovnu, kde je uchovávána každá kopie knihy. To je potřeba, protože stejné názvy knih lze nalézt ve více než jedné knihovně v síti (např. každá knihovna má pravděpodobně alespoň jednu kopii Pána prstenů ). Proto musíme vědět, která kniha je v které knihovně. Abychom toho dosáhli, budeme potřebovat následující atributy:
id
– Jedinečné ID knihovny.library_name
– Název této knihovny.address
– Adresa této knihovny.city_id
– Odkazuje nacity
stůl.library_name
-city_id
pár je alternativním klíčem této tabulky.
Další tabulkou v tomto modelu je city
stůl. Je to jednoduchý seznam měst, který použijeme pro informace o vydavatelích, knihovnách a členech knihoven. Atributy jsou:
id
– Jedinečné ID pro město.postal_code
– PSČ daného města.city_name
– Název toho města.country_id
– Odkazuje nacountry
stůl.
Poté zbývá v této oblasti pouze jedna tabulka:country
stůl. Toto je seznam všech zemí, kde sídlí naše knihovny a/nebo vydavatelé knih. Skládá se z následujících atributů:
id
– Jedinečné ID pro každou zemi.country_name
– Název země. Toto je alternativní klíč pro tabulku.
Dále se podívejme na druhou předmětnou oblast.
Členové a půjčky
Účelem této oblasti je spravovat informace o členech knihovny a knihách, které si půjčují. Skládá se ze tří tabulek:
member
loaned_book
loan_status
Nyní si promluvme o tabulkách.
První tabulka v této oblasti je member
stůl. Obsahuje všechny důležité informace o členech knihovny. Jeho atributy jsou následující:
id
– Jedinečné ID pro každého člena.name
– Křestní jméno člena.surname
– Příjmení člena.address
– Adresa člena.city_id
– Odkazuje nacity
stůl.email_address
– E-mailová adresa člena.phone_number
– Telefonní číslo člena.
Další tabulka je loaned_book
stůl. Uchovává informace o všech knihách, které byly kdy vypůjčeny. Můžeme tak sledovat inventář knihovny a stav případných vypůjčených knih. Tato tabulka se skládá z následujících atributů:
id
– Jedinečné ID pro každou vypůjčenou knihu.book_item_id
– Odkazuje nabook_item
stůl.member_id
– Odkazuje namember
stůl.date_loaned
– Datum, kdy byla tato kniha zapůjčena.date_due
– Datum, kdy má být tato kniha vrácena.date_returned
– Datum, kdy byla kniha skutečně vrácena do knihovny; toto může být NULL, protože nebudeme znát datum, dokud nebude kniha vrácena.overdue_fine
– Poplatek z prodlení (pokud existuje) zaplacený členem, který se obvykle vypočítává na základě rozdílu mezidate_returned
adate_due
. To může být NULL, protože kniha, která je vrácena včas, nemá žádnou pokutu.loan_status_id
– Odkazuje naloan_status
stůl.ts
– Časové razítko, kdy byl zadán stav půjčky.
loan_status
tabulka je poslední v našem datovém modelu. Je to jednoduše seznam všech možných stavů půjčky, např. aktivní, po splatnosti, vráceno atd. Tato tabulka se bude skládat z následujících atributů:
id
– Jedinečné ID pro každý stav půjčky.status_name
– Název popisující stav půjčky. Toto je alternativní klíč pro tabulku.
To je vše – prošli jsme všechny podrobnosti našeho datového modelu!
Co si myslíte o datovém modelu knihovny?
V tomto modelu jsme pokryli obecné principy, takže by měl být (s několika úpravami) pro každou knihovnu. Znáte nějaká specifika knihovny, která nám unikla? Nebo vám model přišel užitečný a snadno použitelný? Vyjádřete svůj názor v sekci komentářů.