Към съдържанието
wannacode

Защо база данни

Проблем

Таблицата, която всички пипат

Малък онлайн магазин води поръчките си в една голяма таблица в Excel. На всеки ред са датата, името на клиента, имейлът му, градът, продуктът, количеството и цената. След година редовете са 3 000 и започват неприятностите:

  • Мария сменя имейла си. Той е на 40 реда. Поправяш 38.
  • Колегата пише „Софя“, ти пишеш „София“, и отчетът по градове вече лъже.
  • Двама отварят файла по едно и също време. Промените на единия изчезват.
  • „Колко е похарчил всеки клиент от Пловдив през март?“ отнема половин час филтри.

Excel е хубав инструмент, но не е направен да пази данните на работещ бизнес.

Идеята

База данни

Базата данни е подредено място за данни. Програмата, която я пази, се казва система за управление на бази данни (СУБД, на английски DBMS). Тя прави четири неща, които файлът не прави:

  • Пази правила. Имейлът е уникален, цената не е отрицателна, всяка поръчка е на съществуващ клиент. Ред, който нарушава правило, просто не влиза.
  • Пази всеки факт веднъж. Имейлът на Мария е на едно място. Поръчките ѝ само сочат към нея.
  • Пуска много хора едновременно, без някой да загуби промените си.
  • Отговаря на въпроси, и при милиони редове, обикновено за милисекунди.

Ще срещнеш имената PostgreSQL, MySQL, SQL Server, Oracle и SQLite. SQLite е в телефона ти, в браузъра ти и в много приложения, а в този курс работи направо в страницата.

По-точно, за любопитните

PostgreSQL, MySQL и SQL Server са сървъри: отделна програма, към която приложенията се свързват по мрежата, често от много компютри едновременно. SQLite е библиотека: базата е един файл, а програмата го отваря сама. Езикът, на който им задаваш въпроси, е почти един и същ. Разликите ще срещаш по пътя.

Идеята

Таблици, редове, колони

В най-разпространения вид бази, релационните, данните са в таблици. Една таблица е за един вид неща: клиенти, продукти, поръчки.

  • Всеки ред е едно нещо: един клиент.
  • Всяка колона е едно свойство: име, имейл, град. Всички стойности в колоната са от един вид.

Това са клиентите на магазина, с който ще работиш през целия курс. Натисни „Изпълни“:

SQLбаза: магазин

Написаното е заявка на езика SQL. SELECT * значи „всички колони“, FROM customers значи „от таблицата customers“. Точката и запетаята завършва заявката.

Полето е истинска база. Промени заявката, пусни я пак, сбъркай нарочно: нищо не може да се развали, а „Нова база“ я връща в началото.

По-точно, за любопитните

Виж клиент 12, Борис. Вместо град има NULL: „няма стойност“. Не е празен текст и не е нула. Ще му посветим цял урок, защото NULL е причина за много грешни отчети.

Пробвай

Продуктите

Покажи всички продукти на магазина. Таблицата им се казва products.

SQLбаза: магазин

Пробвай

Ред или колона?

1. В таблицата products какво е един ред?

Упражнение

Разходка из магазина

Освен клиентите и продуктите базата има още четири таблици. Разгледай две от тях.

1. Покажи всички поръчки (orders). Колко са? Виж колоната customer_id: тя казва чия е поръчката, със същото число, което клиентът има в customers.

Всички поръчки:

SQLбаза: магазин

2. Покажи категориите (categories). Някои имат parent_id, а две нямат. Какво мислиш, че значи това?

Всички категории:

SQLбаза: магазин

Тест

Провери се

1. Кое от тези НЕ е работа на системата за управление на бази данни?
2. Какво значи * в SELECT * FROM customers?
3. Защо имейлът на Мария е на едно място, а не на всяка нейна поръчка?
4. Къде се изпълняват заявките в този курс?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·