C, PHP, VB, .NET

Дневникът на Филип Петров


Категория ‘Бази от Данни’

* Първи вариант от контролна работа 27.05.2013

Публикувано на 27 май 2013 в раздел Бази от Данни.

Давам примерно решение на задачата от контролна работа 2. Показаното по-надолу решение на 80% е дадено от студент. Редактирал съм някои грешки, които е нормално да се появят по време на контролна работа на лист хартия, както и на някои места леко съм оптимизирал заявки (например съм променил начина за итериране на цикъла в задача 2). Поправил съм и двете имена на променливи, заради които условието беше определено от ваш колега като „сбъркано“, а задачата „дефектна“ в друга тема от сайта (а пък самият аз явно съм показал „дребнава и мизерна същност“ понеже условията на задачите са били неясни, а по време на контролната работа съм отказвал да помагам). Маркирал съм проблемните две места с коментари в SQL кода (както беше отбелязано и на самата контролна работа на дъската). Условието започва от следващия параграф. Оставям на читателите сами да преценят нивото на сложност и доколко задачите са дефинирани неясно. Утре ще публикувам и втория вариант, който беше даден на другите групи.

Застрахователна компания пази списък с клиенти и типове застраховки. В началото на всеки месец се извършва плащане по застраховките. Ако плащането не може да се извърши (например картата на човека няма достатъчно пари), се прави запис в таблица за длъжниците. Прочети още…

.

 


* Задача от 23.05.2013

Публикувано на 24 май 2013 в раздел Бази от Данни.

Задачата е дадена на контролната работа за заминаващите на студентска бригада. В отдел „човешки ресурси“ на фирма се пази информация за служителите и техните заплати по следния начин: Прочети още…

.

 


* innodb_file_per_table – необходимото зло

Публикувано на 24 март 2013 в раздел Бази от Данни.

По подразбиране MySQL използва един общ системен файл за запазване на цялата информация свързана с InnoDB таблиците. Файлът се казва ibdata1 и съдържа цялата информация записана във всички InnoDB таблици, всички индекси, както и различни буфери. Един основен недостатък при използването на общо запазване е… че ibdata1 никога не намалява размера си. Дори да изтривате информация от таблиците си, даже и да изтриете цели таблици, файлът няма да намали своята големина. В него остават „дупки“. Така в зависимост от системата, която работи, е съвсем възможно иначе малка база от данни да заема все повече и повече дисково пространство, докато в един момент не запълни целия хард диск. Прочети още…

.

 


* Свързване на Java с MySQL

Публикувано на 07 март 2013 в раздел Бази от Данни.

В тази статия ще бъде показан най-елементарен пример за свързване на програма на Java с база от данни на MySQL. За целта освен инсталирани MySQL сървър и наличие на JDK ще ни е нужен драйвера Connector/J. Него трябва да го изтеглите от сайта на MySQL.

Нека първо да създадем една елементарна база от данни и да създадем потребител за нея: Прочети още…

.

 


* MySQL и memcached

Публикувано на 09 февруари 2013 в раздел Бази от Данни.

Memcached е приложение, което се използва основно за кеширане на данни и работи принципа ключ-стойност (хеш таблица). Обикновено записва данните само в рам паметта. Правейки аналогия с релационните бази от данни, може да си го представите като една таблица, в която има две колони – в първата записвате уникални идентификатори на данни, а във втората записвате самите данни. Освен това тази таблица може да е разделена между множество физически сървъри (sharding). А работата с този софтуер реално е много лесна. Имате няколко команди: Прочети още…

.

 


* Учебник по Бази от Данни

Публикувано на 16 септември 2012 в раздел Бази от Данни.

След близо три години протакане, размотаване и мързел, това лято най-накрая дойде принудата и от „няма накъде“ довърших моята част от отдавна чакания за издаване учебник по предмета „Бази Данни“ в Технически Университет – София. От една страна е хубаво, че нещата отлежаха толкова дълго – имаше време да с преосмислят и редактират много неща. „Така става като старо вино“ каза мой приятел. От друга страна се получава нещо, което наричам „ефектът на многото редакции“ – при всеки нов прочит и редакция на стар свой материал, авторът се разочарова все повече и повече от него. Бях гледал интервюта с известни музиканти, които разказват как не харесват най-популярните си песни и всъщност са ги презаписвали множество пъти преди да бъдат издадени – дори някои хитове били на ръба на изхвърляне от албумите им. Сега и аз имам точно такова усещане – чета отпечатаното и намирам все повече и повече грешки, неточности, не ми харесва стила с който съм писал (не е като за учебник) и какво ли още не. Даже вчера с молив успях да си поставя забележки по близо една трета от страниците, които съм писал. Както и да е – всъщност читателите ще са тези, който ще съдят най-добре и ако не ме замерват с камъни, значи като за първи труд в живота си съм се справил добрe. Така, че станалото – станало и връщане назад няма: Прочети още…

.

 


* Някои задачи от контролна работа №2

Публикувано на 22 май 2012 в раздел Бази от Данни.

Прилагам трите най-сложни задачи, които се паднаха на контролната работа на 21.05.2012г., заедно с примерни (бързи) решения. Във вариант 4 „трудната задача“ беше от друго естество, затова по-нататък ще я разгледам отделно. Другите задачи от вариантите смятам за достатъчно лесни (решават се непосредствено чрез прилагане на заучени правила) и на тях няма да давам решения. Прочети още…

.

 


* Извеждане на няколко произволни реда

Публикувано на 17 май 2012 в раздел Бази от Данни.

Вече разгледахме методи за извеждане на един произволен ред от таблица. Понякога обаче ние се нуждаем от повече. Например „последни 10 статии“, „последни 100 влизания в системата“ и т.н. Затова в настоящата статия ще направя сравнение между методи за извеждане на множество от произволни редове. Ще се фокусираме върху сравнение между оптимизирания JOIN метод (който даде най-добри резултати при извеждането на един ред от таблица), метода с произволно id в WHERE и стандартния ORDER BY RAND(). Прочети още…

.

 


* Full-Text търсене с InnoDB в MySQL

Публикувано на 16 май 2012 в раздел Бази от Данни.

С наближаването на официалното излизане на стабилна версия 5.6 на MySQL идва време да поговорим и едно дългоочаквано нововъведение – full text search в InnoDB. Досега беше налично само за MyISAM таблици, но от предварителната версия за разработчици 5.6.4 вече може да се използва и от по-силния си събрат. Това беше и едно от малкото липсващи неща в InnoDB, което нерядко караше разработчиците да използват MyISAM. Прочети още…

.

 


* Произволен ред от таблица

Публикувано на 04 май 2012 в раздел Бази от Данни.

В тази статия ще разгледам няколко различни алгоритми за прочитане на псевдопроизволен ред от таблица в MySQL, които намерих в интернет. Фокусирах се само и единствено върху чисто SQL методи. Съществуват и други, които комбинират генериране на произволно число в приложението и изпращане на готови стойности към базата от данни. Прочети още…

.