Категория ‘DB’

* CHECK constraint

Публикувано на 25 февруари 2010 от Филип Петров. Записано в DB.


В статията за вложен SELECT представихме едно допълнение към ER диаграмата за база данни на университет. Да припомним – проблемът беше, че в оригиналния ER модел връзката между студенти и факултети минаваше през записани учебни предмети. Така ние нямаше възможност да разберем от кой факултет е даден студент, ако той не е записал нито един учебен предмет. Предложеното решение беше да пазим допълнителен външен ключ от таблицата „студенти“ към таблицата „факултети“: Прочети още…

.



* Още за ограниченията UNIQUE

Публикувано на 25 февруари 2010 от Филип Петров. Записано в DB.


В досега разглежданите примери при CREATE TABLE на няколко пъти показвахме параметър „UNIQUE“, който се добавяше след дадена променлива. Например:

CREATE TABLE university(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `name` VARCHAR(255) NOT NULL UNIQUE,
   PRIMARY KEY(id)
)ENGINE=INNODB;

Казахме, че PRIMARY KEY винаги е едновременно NOT NULL и UNIQUE по подразбиране, както и че е възможно да направим комбинация от две или дори повече колони заедно PRIMARY KEY. Прочети още…

.



* Нормализация на бази данни

Публикувано на 20 май 2009 от Филип Петров. Записано в DB.


Нормализацията на бази данни е една изключително важна тема, която обаче е по-теоретично насочена и поради тази причина не наблягахме досега на нея. Текстът по-долу е реферат на студента Никола Костадинов Симеонов, който смятам, че много добре описва темата „нормализация на бази данни“…

тема:

До къде може да стигнем с номализацията?

Никола Костадинов Симеонов, ТУ-София, ФКСУ, гр. 57

Прочети още…

.



* Разделяне на части (partitioning)

Публикувано на 20 май 2009 от Филип Петров. Записано в DB.


Представената по-долу статия е написана във вид на реферат от студентката Павлина Темелакиева от Технически Университет – София.

Тема:

„Постигане на висока производителсност
на базата данни чрез разделяне на части“

Павлина Евгениева Темелакиева, ТУ – София , ФКСУ, гр. 63А

Прочети още…

.



* FULL JOIN в MySQL

Публикувано на 20 май 2009 от Филип Петров. Записано в DB.


След като научихме заявките, използващи UNION, вече сме готови да посочим как се прави и липсващия в MySQL FULL JOIN. Ще използваме таблиците с плодове и зеленчуци от предишната статия.

Нека припомним как работеха LEFT и RIGHT JOIN. За целта ще направим многотаблична заявка по колоната „цена“: Прочети още…

.



* UNION

Публикувано на 20 май 2009 от Филип Петров. Записано в DB.


Не споменахме една пренебрегната досега възможност на SQL, а именно – обединението. То се използва, за да може две или повече SELECT заявки да бъдат комбинирани в една резултатна таблица. Нека преди да демонстрираме да създадем една примерна база данни: Прочети още…

.



* Логически оператори и цикли

Публикувано на 19 април 2009 от Филип Петров. Записано в DB.


Чрез процедурите MySQL много наподобява завършен език за програмиране. За това силно спомагат възможностите за логически оператори и цикли. Ще ги разгледаме поотделно:

1. IF-ELSE:

Операторите IF-ELSE имат следната структура:

IF <условие>
   THEN <заявки>;
   ELSE <заявки>;
END IF;

Нека демонстрираме с един пример – процедура, на която подаваме параметри сума и номер на акаунт. Процедурата връща резултат „1″ ако в акаунта има повече пари от посочените или „0″ в противен случай: Прочети още…

.



* Процедури и входни параметри

Публикувано на 18 април 2009 от Филип Петров. Записано в DB.


Процедурите ни дават възможност да създаваме скриптове за извършване на типизирани заявки с различни входни данни. Нека демонстрираме една елементарна процедура, която извиква обикновена заявка SELECT: Прочети още…

.



* Заключване на данните при транзакция

Публикувано на 18 април 2009 от Филип Петров. Записано в DB.


Синхронизацията на данните е изключително важна. За да демонстрираме това нека покажем първо един пример. Нека проверим първо колко пари има в акаунт с id = 1:

mysql> USE banks;
Database changed

mysql> SELECT amount FROM accounts
WHERE id = 1;
+--------+
| amount |
+--------+
| 306.38 |
+--------+
1 row in set (0.00 sec)

Сега нека напишем заявка UPDATE, с която искаме да изтеглим 500 лева, но така, че ако искаме да няма такава наличност, то заявката да не се изпълни: Прочети още…

.



* Транзакции

Публикувано на 18 април 2009 от Филип Петров. Записано в DB.


Транзакция наричаме последователност от SQL заявки, която трябва да изпълняват условието или всичките да бъдат изпълнени или нито една от тях да не бъде изпълнена. Може да дадем класически пример с банковите транзакции. Например ако искаме да прехвърлим 50 лева от акаунт 1 в акаунт 2, то трябва да изпълним следните две заявки: Прочети още…

.