Database
 sql >> база данни >  >> RDS >> Database

Модел на библиотечни данни

Какъв модел на данни би ви позволил удобно да търсите книги и да ги заемате в местната библиотека?

Случвало ли ви се е да отидете в библиотека и да вземете книга назаем? Може би това изглежда старомодно в днешния свят на незабавни интернет знания и електронни книги. Но съм сигурен, че все още има тази аналогова част от вас, която все още обича да мирише, докосва и чете книги. Или може би сте били принудени да използвате библиотека, когато не можете да намерите нещо в интернет! Да, не всичко е онлайн.

И така, как един модел на данни би организирал библиотечни книги и заеми? Нека се потопим направо в този модел и да видим как работи!

Моделът на данните

Имах предвид публичните библиотеки, когато създавах този модел на данни. Има предположение, че всяка библиотека в мрежата на обществените библиотеки използва един и същ модел/система. Той е централизиран и позволява на членовете да разглеждат колекцията на всяка библиотека в мрежата. Освен това членовете могат да заемат книги от всяка библиотека в мрежата.

Моделът на библиотечни данни се състои от тринадесет таблици, разделени в две предметни области. Тези области са:

  1. Books & Libraries
  2. Members & Loans



Ще преминем през всяка тематична област поотделно и ще анализираме всички подробности.

Книги и библиотеки

Тази тематична област съхранява информация за книги и библиотеки. Състои се от десет таблици:

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

Първата таблица е author маса. Той изброява всички автори (плюс съответните им подробности) на книгите, които библиотеката има в своята колекция. За всеки автор ще имаме:

  • id – Уникален идентификационен номер за този автор.
  • author_name – Първото име на автора.
  • author_surname – Фамилията на автора.
  • date_birth – Рождена дата на автора.
  • date_death – Датата на смъртта на автора.

authorship_role таблицата изброява всички роли, които един автор може да има, напр. автор, съавтор и др. Тази таблица има следните атрибути:

  • id – Уникален идентификатор за всяка роля.
  • role_name – Името на тази роля, напр. „съавтор“. Това е алтернативният ключ на таблицата.

Таблицата literature_category изброява всички категории книги, напр. трилър, френска литература, руски реализъм, философия и др. Таблицата съдържа следните атрибути:

  • id – Уникален идентификатор за тази категория.
  • category_name – Името на категорията, напр. „мистерия“. Това е алтернативният ключ на таблицата.

След това имаме book маса. Тази таблица съхранява всички подходящи подробности за всяко заглавие, което библиотеката има в своята колекция. Моля, имайте предвид, че това не е таблицата, използвана за всяка книга като артикул. За това ще използваме друга таблица, а именно book_item маса. book таблицата се състои от атрибутите:

  • isbn – Уникален идентификационен номер за всяко заглавие на книга, което в издателската индустрия е международният стандартен номер на книгата (ISBN).
  • book_title – Заглавието на книгата.
  • literature_category_id – Препраща literature_category маса.
  • publishing_house_id – Препраща към publishing_house маса.
  • year_published – Годината, в която е публикувана книгата.

Следващата таблица в нашия модел е book_authorship маса. Това е пресечна таблица, която ще бъде свързана с book , author и authorship_role маси. Той съдържа следните атрибути:

  • book_id – Препратки към book маса.
  • author_id – Препраща към author маса.
  • authorship_role_id – Препраща към authorship_role маса.

Тези три атрибута заедно образуват съставния първичен ключ на таблицата. Съставен първичен ключ означава, че всяка комбинация от трите атрибута трябва да бъде уникална; всяка комбинация може да се появи само веднъж.

Сега нека разгледаме book_item таблица, която споменахме по-рано като съхраняваща информация за всяка физическа книга в библиотека. Той ще съдържа следната информация:

  • id – Уникален идентификатор за всяка книга като артикул.
  • isbn – Препратки към book маса.
  • library_id – Препраща към library маса.

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: таблицата е следващата в нашия модел. В него са изброени издателите на всички книги, които библиотеката има в своята колекция. Атрибутите в таблицата са както следва:

  • id – Уникален идентификатор за всяко издателство.
  • publishing_house_name – Името на издателството (напр. Penguin Books, McGraw-Hill, Simon &Schuster и др.).
  • city_id – Препраща city маса. Тази връзка също ще ни позволи да определим както града, така и държавата на издателството. publishing_house_namecity_id pair е алтернативният ключ на тази таблица.

Добре, нека преминем към library маса. Тази таблица е посочена в book_item таблица, където се определя библиотеката, в която се съхранява всяко копие на книга. Това е необходимо, тъй като едни и същи заглавия на книги могат да бъдат намерени в повече от една библиотека в мрежа (например всяка библиотека вероятно има поне едно копие на Властелинът на пръстените ). Затова трябва да знаем коя книга в коя библиотека има. За да постигнем това, ще ни трябват следните атрибути:

  • id – Уникален идентификатор за библиотеката.
  • library_name – Името на тази библиотека.
  • address – Адресът на тази библиотека.
  • city_id – Препраща city маса. library_name - city_id pair е алтернативният ключ на тази таблица.

Следващата таблица в този модел е city маса. Това е прост списък с градове, които ще използваме за информация за издатели, библиотеки и членове на библиотеката. Атрибутите са:

  • id – Уникален идентификационен номер за града.
  • postal_code – Пощенският код за този град.
  • city_name – Името на този град.
  • country_id – Препраща country маса.

След това остава само една таблица в тази тематична област:country маса. Това е списък на всички държави, в които се намират нашите библиотеки и/или издателства на книги. Състои се от следните атрибути:

  • id – Уникален идентификационен номер за всяка държава.
  • country_name – Името на държавата. Това е алтернативният ключ за таблицата.

След това нека разгледаме втората тематична област.

Членове и заеми

Целта на тази предметна област е да управлява информация за членовете на библиотеката и книгите, които те заемат. Състои се от три таблици:

  • member
  • loaned_book
  • loan_status

Сега да поговорим за таблиците.

Първата таблица в тази област е member маса. Той съдържа цялата необходима информация за членовете на библиотеката. Неговите атрибути са както следва:

  • id – Уникален идентификатор за всеки член.
  • name – Име на члена.
  • surname – Фамилия на члена.
  • address – Адресът на члена.
  • city_id – Препраща city маса.
  • email_address – Имейл адрес на члена.
  • phone_number – Телефонният номер на члена.

Следващата таблица е loaned_book маса. Той съхранява информация за всички книги, които някога са били заемани. По този начин можем да следим инвентара на библиотеката и състоянието на всички заети книги. Тази таблица се състои от следните атрибути:

  • id – Уникален идентификационен номер за всяка заета книга.
  • book_item_id – Препраща към book_item маса.
  • member_id – Препраща към member маса.
  • date_loaned – Датата, на която тази книга е била заета.
  • date_due – Датата, на която тази книга трябва да бъде върната.
  • date_returned – Датата на действително връщане на книгата в библиотеката; това може да бъде NULL, защото няма да знаем датата, докато книгата не бъде върната.
  • overdue_fine – Таксата за закъснение (ако има такава), платена от члена, която обикновено се изчислява въз основа на разликата между date_returned и date_due . Това може да бъде NULL, защото книга, която е върната навреме, няма глоба.
  • loan_status_id – Препраща към loan_status маса.
  • ts – Печатът за време, когато е въведен този заем.

loan_status таблицата е последната в нашия модел на данни. Това е просто списък на всички възможни състояния на заема, напр. активен, просрочен, върнат и т.н. Тази таблица ще се състои от следните атрибути:

  • id – Уникален идентификационен номер за всеки статус на заема.
  • status_name – Име, описващо състоянието на заема. Това е алтернативният ключ за таблицата.

Това е всичко – преминахме през всички подробности за нашия модел на данни!

Какво мислите за модела на библиотечни данни?

Обхванахме общите принципи в този модел, така че трябва да бъде (с няколко корекции) за всяка библиотека. Знаете ли някакви специфики на библиотеката, които сме пропуснали? Или може би сте намерили модела за полезен и лесно приложим? Кажете своето мнение в секцията за коментари.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. В търсене на бързо локално съхранение

  2. Обяснение на псевдонима на SQL

  3. Форматиране на данни в Power BI Desktop Visualizations

  4. Премахване на проследяващи файлове с ADRCI

  5. Как да работим с наследяване в ядрото на Entity Framework