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

Как да създадете модел на база данни от нулата

Значи искате да създадете първия си модел на база данни но не знаете как да започнете? Прочетете!

Предполагам, че вече знаете малко за таблиците, колоните и връзките. Ако не го направите, гледайте нашите видео уроци, преди да продължите.

Започнете със системно описание

Винаги трябва да започвате да създавате модел на база данни с описание на система. В ситуация в класната стая, описание на системата ви се дава от учител. В реалния живот изготвянето на описание е процес сам по себе си. Просто предполагам, че имате описанието. Няма значение дали ви е дадено от вашия клиент, шефа ви, учителя ви, или вие сте го написали сами.

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

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

Започването с описание има предимството да ви принуди да използвате същия речник като вашите потребители. Ако създавате система за основно училище, трябва да говорите за ученици. Ако създадете подобна система за университет, трябва да говорите за студенти.

Таблици, връзки, колони

  1. След като съществителните ви са откроени, идентифицирайте таблиците . Не е нужно да моделирате всичко наведнъж. Фокусирайте се първо върху основната функционалност на системата.
  2. Когато имате таблиците, разберете връзките между масите. Тази стъпка може да доведе до въвеждане на нови междинни (съединителни) маси.
  3. Накрая добавете колоните към масите.

В този момент трябва да прочетете описанието отново и да видите дали нещо липсва. Уверявам ви, че ще има какво да добавите. Добавете новите таблици, новите връзки и новите колони. Прочетете описанието отново...

Неща, които трябва да имате предвид

Създаването на модел на база данни е итеративно процес. Не се опитвайте да моделирате всичко наведнъж. Започнете с основните обекти на вашата система. Можете да добавите повече подробности по-късно.

Добре е да задавате въпроси . Колкото и точно да е описанието, винаги ще имате някакви съмнения. Нещо винаги ще бъде подказано. Задавайте въпроси за нещата, в които не сте сигурни. Ако не можете да задавате въпроси, направете разумно предположение и запишете предположението, което правите.

Винаги има повече от един начин за моделиране на всяка система. Някои модели са очевидно лоши, но за повечето други е трудно да се прецени дали са правилни или грешни. Моделът зависи от това каква е целта на системата, как данните постъпват в системата, дори от личния вкус на дизайнера. С натрупването на опит ще станете по-уверени във вашите дизайнерски решения.

Пример:Система за коли под наем

Като пример ще създадем модел на база данни за система за коли под наем. Първо, разгледайте описанието на системата:

Фирма за отдаване на автомобили под наем отдава коли под наем на клиенти. Фирмата притежава няколко кола. Всяка кола има марка, име на модела, година на производство, пробег, цвят и т.н. Автомобилите се разделят на различни категории:малки, средни, големи, лимузини.

Фирмата има много места, където можете да наемете кола. Местата за наемане се намират в различни градове в цялата страна. В един град може да има повече от едно фирмено местоположение.

Всеки над 21 години, който има валидна шофьорска книжка може да наеме кола. Клиентите под 25 или над 75 години плащат различни (по-високи) такси от другите клиенти.

Преди да наеме кола, клиентът обикновено прави резервация за кола. Клиентът посочва датите, когато автомобилът ще бъде нает, мястото за вземане, мястото за връщане и категорията кола, която иска да наеме. Клиент може да посочи, че иска допълнително оборудване в колата, например GPS, столче за дете и др.

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

Клиентът заплаща таксите, когато върне автомобила.

Започваме с подчертаване на всички съществителни: 

Следващият етап е да намерите таблици . Търсим основните обекти в системата. Като начало трябва да имате поне тези:кола, клиент, местоположение, град, оборудване, категория (кола), застраховка. Поставяме ги в диаграмата. Добавих id колона във всяка таблица, защото всяка таблица трябва да има някакъв идентификатор. Винаги можете да промените първичния ключ по-късно.




Основните системни обекти са в модела, но трябва да забележите, че ни липсва основната функционалност на системата:наемане на коли и резервации. Спомнете си какво казахме в началото:таблиците са не само физически обекти, но и събития и транзакции. Трябва да добавите reservation и rental както и таблици. Отиваме:




Сега добавяме препратките между таблиците в модела. Номерирах препратките, докато ги добавях. Бележката до всяка препратка ви казва кога е добавена:

  1. Всеки автомобил принадлежи към категория,
  2. Всяка резервация е за категория автомобили,
  3. Всяко местоположение е в град,
  4. Всяка резервация има място за вземане и връщане,
  5. Всяка резервация се прави от клиент,
  6. Всеки наем се прави от клиент,
  7. Всеки наем е за определена кола,
  8. Всеки наем има място за вземане и връщане.
  9. Всеки наем е свързан с някаква застраховка. Но има ли само една застраховка за всеки наем? Не. Може да има много части за застраховка, свързани с наемане (застраховка срещу щети на превозно средство, срещу телесни наранявания, срещу нараняване на чужда кола, ...). Добавих междинна таблица, наречена rental_insurance свързан с rental и insurance таблици.



Все още ни липсва препратката между автомобил и оборудване. Оборудването постоянно ли е прикрепено към автомобил или може да се премести от една кола в друга? В описанието няма отговор на този въпрос, така че ще направим разумно предположение:да, може да бъде преместен. Добавяме нова таблица car_equipment и препратки между car и equipment .

Изтриваме company маса. Компанията за отдаване под наем присъства имплицитно в системата. В крайна сметка друга компания ще има своя система и собствена база данни.




Накрая добавяме колоните и техните типове данни. Забелязваме също, че няма връзка между reservation и equipment . Но направена ли е резервацията за определена част от оборудването? Не, направен е за тип оборудване:добавяме таблицата equipment_category и свържете масите reservation и equipment към него.




свършихме ли? Прочетете отново описанието. Нашият модел на база данни все още пропуска таксите. Е...

Това е упражнение за читателя. (Но ако не искате да практикувате уменията си за моделиране на база данни, тук можете да намерите готова за използване структура на база данни за компания за коли под наем.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. FrankenQueries:когато SQL и NoSQL се сблъскат

  2. Как работят влизанията на свързани сървъри (примери за T-SQL)

  3. Моделът на данни за интелигентен дом

  4. Проучване на грешка ORA 02063 DG4ODBC

  5. Разширен SQL:КРЪСТО ПРИЛАГАНЕ и ВЪНШНО ПРИЛАГАНЕ