Какво е база данни? Ръководство за хора, които строят приложения
Базата данни е организирано хранилище на информация, в което приложението записва и от което чете — потребителите му, поръчките, резервациите, съобщенията. За разлика от информация, пазена само в раздел на браузъра, данните в базата данни остават след презареждане или рестартиране, а всеки, който ползва приложението, вижда едни и същи записи. Повечето бази данни организират данните в таблици, подобно на листовете в електронна таблица, но със строги правила, които пазят данните последователни.
Защо е важно, когато строите с AI
Най-честата изненада за хората, които строят с AI, е приложение, което изглежда завършено, но забравя всичко. Добавяте клиент, презареждате страницата и той е изчезнал. Обикновено това значи, че приложението е пазело данните в паметта на браузъра, а не в база данни.
Базата данни е и мястото, където живеят много от най-важните ви решения, независимо дали го осъзнавате:
- Какво записвате. Ако не пазите статуса на резервация, не можете да покажете кои резервации са отказани.
- Как са свързани нещата. Дали един клиент може да има много резервации или една резервация — много услуги, определя цялото приложение.
- Кой какво може да вижда. Повечето грешки за поверителност са свързани с това кои записи може да чете даден потребител.
Не е нужно сами да проектирате базата данни. Но познаването на основите ви позволява ясно да опишете данните си и да откривате проблемите рано.
Ежедневна аналогия
Представете си добре поддържана картотека в малък офис.
Всяко чекмедже съдържа един вид нещо: едно за клиенти, едно за срещи, едно за фактури. Във всяко чекмедже всяка папка следва един и същ формат, с едни и същи попълнени полета. Всяка папка има уникален референтен номер, а когато фактура принадлежи на клиент, папката на фактурата посочва номера на клиента, вместо да копира цялото му досие.
Това е релационна база данни. Чекмеджетата са таблиците, папките са редовете, полетата са колоните, референтните номера са първичните ключове, а бележките, които сочат към друга папка, са външните ключове. Добрият офис мениджър налага и правила — без среща без дата, без двама клиенти с един и същи номер — точно както го прави базата данни.
Практически пример: приложение за резервации в салон
Да кажем, че поискате от AI да изгради сайт за резервации на фризьорски салон. Разумна база данни би имала четири таблици.
services
| id | name | duration_minutes | price |
|---|---|---|---|
| 1 | Подстригване | 45 | 40.00 |
| 2 | Боядисване | 90 | 95.00 |
staff
| id | name | |
|---|---|---|
| 1 | Сара | sara@example.com |
| 2 | Омар | omar@example.com |
customers
| id | name | phone | |
|---|---|---|---|
| 101 | Лена Парк | lena@example.com | 555-0100 |
bookings
| id | customer_id | service_id | staff_id | starts_at | status |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | confirmed |
Погледнете таблицата bookings. Тя не копира името и телефона на Лена във всяка резервация; пази customer_id = 101. Ако Лена смени телефона си, той се променя на едно място и всяка резервация показва новия. Това е основната идея на релационната база данни: пазите всеки факт веднъж и се свързвате към него.
Същата структура отговаря на полезни въпроси:
- „Кои часове са свободни за Омар в петък?“ — гледате резервациите на Омар за този ден.
- „Колко са донесли часовете за боядисване този месец?“ — свързвате резервациите с услугите и събирате цените.
- „Кои клиенти не са резервирали от 90 дни?“ — сравнявате клиентите с последната им резервация.
Термини, обяснени накратко
| Термин | Какво означава |
|---|---|
| Таблица | Колекция от един вид записи, като клиенти или резервации. |
| Ред (record) | Един елемент в таблица — един клиент, една резервация. |
| Колона (field) | Едно парче информация, което има всеки ред, например имейл или цена. |
| Първичен ключ (primary key) | Уникален идентификатор на всеки ред, обикновено число или случаен низ. |
| Външен ключ (foreign key) | Колона, която сочи към ред в друга таблица, например customer_id в резервациите. |
| Схема (schema) | Общият дизайн: кои таблици съществуват, техните колони и как са свързани. |
| Заявка (query) | Искане за четене или промяна на данни, например „всички резервации за утре“. |
| SQL | Structured Query Language — стандартният език за заявки към релационни бази данни. |
| Миграция | Запазена, повторяема промяна на схемата, например добавяне на колона. |
| Индекс | Структура за търсене, която ускорява търсенията по дадена колона, като показалеца в книга. |
| CRUD | Create, Read, Update, Delete — четирите основни действия, които приложенията извършват с данни. |
| Резервно копие (backup) | Копие на данните, което можете да възстановите, ако нещо се обърка. |
Видове бази данни
| Вид | Как пази данните | Примери | Подходяща за |
|---|---|---|---|
| Релационна (SQL) | Таблици с фиксирани колони и връзки между тях | Postgres, MySQL, SQLite | Повечето бизнес приложения: резервации, магазини, CRM системи, SaaS |
| Документна (NoSQL) | Гъвкави документи, подобни на JSON | MongoDB, Firestore | Данни, чиято форма силно варира от запис към запис |
| Ключ-стойност | Стойност, пазена под ключ | Redis | Кеширане, краткотрайни данни като сесии |
За почти всичко, което основател или малък бизнес строи първо, релационната база данни е безопасният избор по подразбиране.
Къде е базата данни във вашето приложение
Посетителите никога не говорят директно с базата данни. Страницата в браузъра им (фронтендът) пита вашия сървър (бекенда) за данни, обикновено през API. Сървърът проверява кой пита и дали му е позволено, после заявява базата данни и връща само това, което този човек трябва да види.
Тази междинна стъпка е важна. Ако браузърът можеше да заявява базата данни директно с пълен достъп, всеки можеше да отвори инструментите за разработчици и да прочете всичко.
Чести заблуди и грешки
- Пазене на данните само в браузъра. Браузърното хранилище (като localStorage) живее на едно устройство и в един браузър. Добре е за запомнен филтър, но не и за поръчки.
- Натъпкване на всичко в една таблица. Една таблица „резервации“, в която във всеки ред е копирано името, телефонът и цената на услугата на клиента, бързо се разминава.
- Пазене на пароли като обикновен текст. Паролите трябва да се хешират, никога да не се пазят четими. Вижте какво е удостоверяване.
- Без правила за данните. Без задължителни полета и правила за уникалност ще получите резервации без дата и дублирани клиенти.
- Забравено изтриване. Решете дали изтриването на клиент трябва да изтрива и резервациите му, да ги запазва или да е блокирано.
- Използване на реални данни за експерименти. Тествайте рисковите промени първо на безопасно място и пазете резервни копия.
- Вечно третиране на електронната таблица като база данни. Електронните таблици са отлични за начало, но се затрудняват от много едновременни потребители и права за достъп. Вижте как да превърнете електронна таблица в приложение.
Какво да поискате от AI платформата
- „Запази това в база данни, не в браузъра. Кажи ми кои таблици ще създадеш.“
- „Покажи ми схемата като проста таблица: всяка таблица, нейните колони и как са свързани.“
- „Един клиент може да има много резервации; всяка резервация има точно една услуга и един служител.“
- „Направи имейла задължителен и уникален за клиентите.“
- „Спри две резервации за един и същи служител да се припокриват.“
- „Само влезлият собственик може да чете всички резервации; клиентите виждат само своите. Наложи това на сървъра.“
- „Когато изтрия услуга, не изтривай минали резервации — маркирай услугата като неактивна.“
Бази данни в Mythex
Когато приложението ви има нужда от запазване на данни, Mythex добавя към проекта собствена Postgres база данни — можете да поискате в чата („запази записванията за списъка за чакане в база данни“) или да използвате командата /database. Данните за връзка се подават автоматично на приложението, а агентът създава таблиците. Базата данни се приспива след пет минути без активност и се събужда при следващата заявка; публикуваната употреба се таксува за времето, през което е била будна, от същия кредитен баланс като строенето. Налична е в Free и Pro. Документацията за базата данни описва подробностите, а шаблоните за приложения включват отправни точки, управлявани от данни.
Въпроси
Какво е база данни с прости думи?
Базата данни е организирано хранилище на информация, в което приложението може да записва и от което да чете — например потребители, поръчки или резервации. За разлика от данните, пазени само в раздел на браузъра, те остават след презареждане, рестартиране или когато някой отвори приложението от друго устройство.
Електронната таблица база данни ли е?
Електронната таблица може да пази същия вид данни, но не е създадена за приложения. Истинската база данни налага правила за това какво съдържа всяка колона, надеждно свързва таблиците, обработва много хора, които пишат едновременно, и контролира кой какво може да чете.
В какво се различават SQL и NoSQL базите данни?
SQL (релационните) бази данни, като Postgres и MySQL, пазят данните в таблици с определени колони и връзки между тях. NoSQL базите, като MongoDB, пазят по-гъвкави документи. Повечето бизнес приложения — резервации, CRM системи, магазини — се вписват добре в релационния модел.
Нужна ли е база данни на приложението ми?
Ако трябва да запомня нещо, което хората въвеждат — регистрации, поръчки, съобщения, настройки — и да го показва по-късно или на друг човек, да. Чисто информационен уебсайт без формуляри, които записват данни, обикновено не се нуждае от нея.