Mysql транзакциясы триггерлер


Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 14 бет
Таңдаулыға:
Мазмұны
Кіріспе . . . 41. Деректер қорын жобалау, жалпы түсінік . . . 5
2. Платформалар және бағдарламашының қолдану интерфейстері (API) . . . 83. Mysql транзакциясы . . . 9
4. Mysql триггерлері . . . 13
Қорытынды . . . 18
Пайдаланылған әдебиеттер . . . 19
КІРІСПЕ
MySQL - дүние жүзінде ең көп қолданылатын, қайнары тегін және ашық, реляцияланған мәліметтер қоры жүйесі (RDBMS) . Серверлік бағдарлама ретінде, бірнеше қолданушыларға бірнеше мәліметтер қорын қолдануды қамтамасыз етеді. MySQL сөзіндегі "My" сөзі, бағдарлама жасаушысы Майкл Видньюс-тың (Michael Widenius) қызының аты - "My" сөзінен алынған. Ал SQL фразасы - Құрылымдасқан Тапсырыс Тілі (Structured Query Language) дегенді білдіреді.
MySQL, проект қайнарын GNU General Public License (GPL) және әр түрлі жеке меншік лицензияларында шығарды. MySQL-ды кезінде MySQL AP атты Шведттық фирма демеу еткен, ал қазір оны толығымен Oracle корпорациясы сатып алды.
Толық функционалды мәліметтер қорын қажет ететін, қайнары тегін проекттер жиі MySQL-ды қолданады. Серверді коммерциялық проекттерде қолдану үшін, қосымша функциялармен ұсынылатын бірнеше нұсқалары бар. MySQL-ді қолданатын бағдарламаларға TYPO3, Joomla, WordPress, phpBB, MyBB, Drupal және де басқа LAMP бағдарламаларын жатқызуға болады. MySQL сонымен қатар Google, Wikipedia, Facebook және Twitter сияқты дүниежүзілік және кең ауқымды web-бағдарламаларында қолданылады.
Веб-бағдарламаларында MySQL кең қолданылады және кең тараған LAMP бағдарламаларының ішінде басты компонент рөлін атқарады. LAMP сөзі - "Linux, Apache, MySQL, Perl/PHP/Python" сөйлемінің акронимі.
MySQL - қайнары тегін бағдарламалар мен Интернеттегі танымал Flickr, Nokia. com, YouTube, Wikipedia, Google, Facebook және Twitter сайттарында қолданылады.
1 ДЕРЕКТЕР ҚОРЫН ЖОБАЛАУ, ЖАЛПЫ ТҮСІНІК.
Деректер қоры-ақпараттық жүйелердің маңызды құрамдас бөлігі болып табылады. Ақпараттық жүйе өз алдына басқару функциясын орындау үшін әр алуан денгейдегі жұмыстарды ақпаратпен жабдықтаған объект туралы ақпаратты жинау, тасымалдау, қайта өңдеу бойынша қатынас жүйесін білдіреді.
Деректер қоры деп- компьютер жадында сақтайтын, арнайы түрде ұйымдасқан, өзара байланысқан мәліметтер жиынтығын айтамыз.
Ақпараттық жүйелердің мысалына: банктік жүйелер, кәсіпорындарда, автаматты түрде басқару жүйелері, авияция немесе темір жол билеттерін, мейрамхана номерлерін алдын ала белгілеу және тағы басқа жатады.
Пайдалану облысы бойынша келесі класстарды бөліп айтуға болады:
1) Ғылыми зерттеуге арналған;
2) Автоматталған жобаларға арналған;
3) Ұйымдастырушы басқарудағы ақпараттық жүйелер;
4) Техналогиялық процессорды баспаға арналған.
Деректер қорын басқару жүйесін көптеген қолданушылар деректер қорын құру, енгізу, бірлесіп пайдалану және програмалау құралдардың жиынтығын айтады.
Деректер қоры дегеніміз - мәліметтерді сақтауға арналған ұйымдасқан құрылым. Бұл деректер қорының құрылымына ақпаратпен қатар, оларды ұйымдастыруға, қолдануға арналған тәсілдер мен әдістер кіреді .
Деректер қоры деректер қорын басқару жүйесімен (ДҚБЖ) тығыз байланысты. Бұл программалық құрылымдар кешені жаңа қордың құрылымын құруға, оны деректермен толтыруға, мазмұнын редактрлеуге және ақпаратты визуалдандыруға арналған. Қор ақпараттарын визуалдау дегеніміз берілген критерий бойынша экранға шығаратын мәліметтерді таңдап, оларды белгілі бір ретке келтіріп, безендіріп артынан баспаға немесе байланыс каналдарына беруді айтамыз. Әлемде деректер қорын басқаратын көптеген жүйелер бар.
Деректер моделі және түрлері
1. Иерархиялық модель - мәліметтер арасындағы байланысты реттелген графтар арқылы сипаттауға болады. Қандайда бір программалау тілінде иерархиялық деректер қоры құрылымын есептеу үшін тармақ мәліметтер типі пайдалынылады.
2. Желілік модель - мәліметтердің элементтерінің еркін графтар түріндегі өзара байланысын білдіреді. Желілік деректер қорының схемасын сипаттауға екі тип пайдалынылады: жазба және байланыс.
3. Реляциялық модель - мәліметтердің реляциялық моделін JBM фирмасының қызметкері Эдгар Код ұсынған және ол қатынас ұғымына негізделеді.
Қатынас деп -картеж деп аталатын элементтер жиынын айтады, қатынасты бейнелеудің көрнекті формасы екі өлшемді кесте болып табылады.
4. Постреляциялық модель - мәліметтердің постреляциялық моделі кестенің жазбаларында сақталған мәліметтердің бөлімбеушілік шектеуін алып тастайтын кеңейтілген реляциялық моделі болып табылады. Постреляциялық модель көп мәнді, яғни мәндерді ішкі мәліметтерден құралған өрістерден тұрады.
5. Көп өлшемді модель - ол көп жүйелерге талдау жүргізу және шешім қабылдау үшін ақпаратты жедел өңдеуге мүмкіндік береді.
Қордағы мәліметтерді қарастыратын көп өлшемді тәсілі реляциялық деректер қорын пайдаланылады. Көп өлшемді жүйелерге талдау жүргізу және шешім қабылдау үшін ақпараттық желі өңдеуге мүмкіндік береді. Обьектіге бағытталған деректер қоры құрамына тармақ түрінде берілген мәліметтер. Бұл деректер қорының логикалық құрамының сырттай иерархиялық деректер қоры ұсынылады .
6. Объектіге бағытталған модель - объектіге бағытталған модель тармақталған түрінде беріледі. Объектіге бағытталған деректер қорының логикалық құрылымы сырттай иерархиялы деректер қорына ұқсас.
Кестелерді байланыстыру және байланыс түрлері
Кестелерді байланыстырудың негізгі және қосымша кестелері болады. Негізгі және қосымша кестелердің байланыс өрістері қалай анықталуына тәуелді. Жалпы жағдайда екі кесте арасында келесі 4 негізгі байланыстар түрі орнатылуы мүмкін:
1:1 - негізгі және қосымша кестелердің өрістері кілтті болған жолдарда құрылады және мұндай екі кестенің кілттік өрістің мәндері қайталанылады;
1:К - негізгі кестенің бір жазбасы қосымша жазбаның бірнеше жазбаға сәйкес келген кезде орындалады;
К:1 - бір немесе бірнеше негізгі кестенің жазбаларының бір жазбасы сәйкес келсе, оны бірдің көпке байланысы деп атайды;
К:К - негізгі кестенің бірнеше жазбалары қосымша кестенің бірнеше жазбаларына сәйкес келгенде орындалады .
Платформалар және бағдарламашының қолдану интерфейстері (API)MySQL - C және C++ тілдерінде, ал SQL парсері және sql_lex. cc деп аталатын лекксикалық анализаторы yacc тілінде жасалған.
MySQL көптеген жүйелер платформаларында жұмыс істейді. Оларға кіретіндер: AIX, BSDi, FreeBSD, HP-UX, eComStation, i5/OS, IRIX, Linux, Mac OS X, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos және Tru64. Сонымен қатар OpenVMS жүйесіне портталған түрі бар.
Мәліметтер қорымен жұмыс істеу үшін, көптеген бағдарламалау тілдеріне кітапханалар жасалынған. Мысалы, C# және VB. NET үшін MySQL Connector/Net, ал Java үшін JDBC драйвері. Бұнымен қатар ODBC интерфейсін қолдайтын ASP және ColdFusion сияқты тілдер үшін MyODBC кітапханалары бар. Ал URL арқылы кез-келген web-клиенттің MySQL серверімен араласуға мүмкіндік беретін HTSQL технологиясы, MySQL-серверімен бірге келеді.
Mysql - транзакциясы
Транзакция (transction) . Реляциялық деректер базасында транзакция деп аталатын тамаша механизм бар. Базамен жұмыс істейтін (базадағы деректермен немесе метадеректермен) барлық операторлар қандай да бір транзакцияның аясында (немесе басқаруында) орындалады. Деректер базасында әсер ететін кез келген амалдың алдында - базадағы деректердің өзгеруі немесе базадан деректерді таңдау - транзакция басталады. Мұндай операторларды орындар алдында транзакцияны SET TRANSACTION SQL -операторы арқылы арнайы бастауға болады. Мысалы, Транзакция былай басталмаса да SQL-операторды орындағанда InterBase сервері транзакцияны өздігінен бастап жібереді. Бір транзакция тарапында орындалған барлық оператоларды Commit операторы арқылы түпкілікті бекітуге немесе Rollback операторы арқылы қайтарып тастауға боады.
Транзакия дегеніміз - жай файлдық жүйеміен қарапайым кесте терілуін деректер қорынан ажырататын теориялық түсінік.
SQL - транзакия операторы операторы топталып орындалуы. Яғни барлығы бірге орындалуы немес ешқайсысы орындалмайды.
Mysql - кесте бірнеше түрі бар: Isam, Heap, MyiSAM, InnoDb, BDB - осылар ішінде транзакция тек соңғы 2-ді қолданылады. Егер алғашқы мән берілмесе Mysql - автоматты жұмыс істейді. Ол Sql- операторы орындалу нәтижесі, деректер өзгертуі жцне желіні тоқтату мүмкін. Ол үшін Set AutomaticT=0. Тоқтатылған режимінде әрбір транзакцияны COMMIT, ROLLBACK- операторлары орындалу керек.
Бір рет транзакция режиміне көшу үшін START TRANSACTION - командасын белгілейміз. Егер транзакция әр түрлі түрдегі кестелерде қолданса онда олар әр түрлі жағдайда болады. Транзакциялық емес кестелерде өзгертілермен тез орындалады. Бірақ оларды ROLLBACK- қалпына келтіру қиын болады.
Транзакциялар не үшін қажет?
Көптеген жағдайларда мәліметтерді өзгерту бойынша операциялар тобын бұл топта атомаралық қасиет болатындай жүргізу керек (толығымен орындалады немесе толығымен орындалмайды) . Операциялардың бұндай тобы транзакция деп аталады.
SQL серверлерде транзакцияның бастамасын (begin transaction), оның сәтті аяқталуын (commit transaction ), я транзакциясын қайтаруын білдіретін операторлар болады.
Транзакциялар журналы деген не?
Транзакцияның ішінде жүргізілетін мәліметтердің кез келген өзгерістері арнайы транзакциялар журналына жазылады (transaction log) . Транзакциялар қайтарылғанда мәліметтер бұрыңғы қалпына келеді, ал өзгерістер жазбалары транзакциялар журналынан жойылады.
Блокировкалар (жабылу) қашан пайда болады?
Транзакциялар ішіндегі мәліметтерді өзгерткен кезде, модифицияланатын жазбалар сервермен осы транзакцияның аяқталуына дейін жабылады. Егер де қандай да бір басқа транзакция жабылған жазбаларды өзгертуге тырысса, жабылу алып тасталғанға дейін, яғни бірінші транзакция аяқталмаса, онда оның орындалуы тоқталады.
Кейбір серверлердің жағымсыз ерекшелігі болады, яғни олар мәліметтерді жекелеген жазбалдармен емес, көп жазбалары бар тұтас беттермен жабады.
«Нұсқалықтар» «блокировкадан» қалай айрықшаланады?
Классикалық «жабулар» әр түрлі транзакцияларға бір уақытта, оларды транзакция уақытына жаба отырып, сол бір жазбаларды өзгерту мүмкіндіктерін бермейді. Өз кезегінде «нұсқалықтар» бір жазбаның әр түрлі нұсқаларын шығара отырып, сол бір жазбаларды бір уақытта модифициялай алады.
Deadlock неге пайда болады?
Екі транзакцияның қиыстырылған жабылуы (deadlock) әр түрлі реттегі сол бір жазбалардың өзгеруінде пайда болады.
Мысал :
Біріншіден бізге транзакция не үшін қажет екенін білуіміз керек, яғни ол ДҚ-мен жұмыс істейді. Жұмыс істегенде бірден барлығы іске қосылады немесе барлығы тоқтатылады.
Қолданушылар:
Телефон нөмері:
Қолданушылармен телефон нөмерлері қатынасы:
CREATE PROCEDURE trans
@lname nvarchar(50),
@fname nvarchar(50),
@tel nvarchar(14)
AS
DECLARE @ID int
begin TRANSACTION
INSERT INTO users (lname, fname) VALUES (@lname, @fname) ;
SET @ID=SCOPE_IDENTITY() ;
INSERT INTO phones (id_user, tel) VALUES (@ID, @tel) ;
COMMIT TRANSACTION;
GO
Процедураны жүктеу үшін MSSQL терезесінде мынандай командаамен шақырамыз:
EXEC trans @lname = 'Иванов', @fname = 'Павел', @tel = '477 - 02 - 01'
Mysql - триггерлері
Триггер (triger) - базадағы процедуралар сияқты деректер базасына қатысты анықталған кішігірім арнайы бағдарлама болып табылады, бірақ триггерді әдейі шақырып орындауға болмайды. Триггер әрқашан нақты бір кестемен байланысты болады және осы кестеге жаңа жазба енгізу немесе өшіру және кестеден жазба өзгерту сияқты бір оқиға орын алғанда өздігінен шақырылып орындалады. Триггер мүндай оқиғаның не алдында, не соңынан шақырылуы мүмкін. Бұл оқиға фазасы деп аталады. Триггерде сақталған процедура сияқты серверде (деректер базасы орналасқан машинада) орындалады, бұл локальді желіде ақпарат ағымын жеделдетіп өңдеуге мүмкіндік береді. Триггер базадағы кез келген процедураны шақыруы мүмкін. Триггер орындаларда ешқандай параметр қабылдауы және қандай- да бір мән есептеп қайтаруы мүмкін емес.
Триггердің бір тамашалылығы - бағдарламашы базаны түрлендіруі барысында орындалуы керекті кейбір маңызды амалдар туралы қам жемесе де болады; мұндай амалдарды триггерге жүктеуге болады. Мысалы, жасанды кілттің мәнін генератордан алуды кестеге жаңа жазба енгізер алдында өздігінен орындалатын триггерге жүктесе болады.
Деректер базасын басқару жүйесі «сыртқы кілт// негізгі (ерекше ) кілт» байланысы бойынша автоматты түрде базаның сілтеме үйлесімділігін қадағалайтын жүйелік триггерлер анықтайды.
Триггерлер - дегеніміз сақталмаған процедура. Ол арнайы шақырылмайды кейбір оқиғаға байланысты орындалады. Оқиғалар мыналар болуы мүмкін: қою, өшіру, жадыны тазарту.
Mysql- де триггерлерді қолдану 5. 0. 2 нұсқауынан басталады Ал бұдан төмен нұсқауларында қолданушы super құқығы болуы керек.
Пайдаланушының айрықша жағдайы (exception) . Базада орын алатын қателік жағдайларды тиімді өңдеу үшін базада қателікті атап түсініктеме беретін айрықша жағдай анықтауға болады. Сақталған процедуралар мен триггерлерде деректерге қатысты бір тексеру нәтижесі бойынша қателік болған жағдайда нақты хабарлама беретін айрықша жағдай ұйымдастыруға болады. Бұл қателерді өңдеудің ыңғайлы құралы болып табылады.
Mysql - триггерлерін құру
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt* This source code was highlighted with Source Code Highlighter
trigger_name - триггер аты
trigger_time - триггерлер жұмыс ңстеу уақыты.
trigger_event - оқиға
INSERT_on уақытпен мерзімге байланысты оқиға.
UPDATE - операторға байланысты оқиға.
DELETE - өшіруге байланысты оқиға.
Trigger - stml - триггер бейсенділігін өрнектейді.
Триггерлер қайда сақталады
Триггерлер қазіргі уақытта . TRG-файлдарында, сақталады. Басқаша айтқанда таблицаға арналған.
Болашақта триггер ақпараты . FRM-файлдарында сақталады, яғни триггерлер деректер базасы сатысына дейін көтеріліде, ол бізге SQL стандарты болып табылады.
Триггерлер жұмыс істейді BEFORE - оқиға алды, AFTER - оқиға соңы кесте өзгерілуінде. Осы кезде біз триггерлердің 6 түрлі жағдайда болатынын байқаймыз:
Триггерлерді түсіну үшін мысал келстірсем:
User таблицасына
01 mysql> DELIMITTER //
02 mysql> CREATE TRIGGER `test_user_pass` BEFORE INSERT ON `test`. `user`
03 -> FOR EACH ROW
04 -> BEGIN
05 -> SET NEW. name = LEFT(NEW. name, 1) ;
06 -> SET NEW. otch = LEFT(NEW. otch, 1) ;
07 -> SET NEW. pass = md5(NEW. pass) ;
08 -> END//
09 Query OK, 0 rows affected (0. 09 sec)
10 mysql> DELIMITER ;
Осы жерге жазбаны қойамыз:
1 mysql> INSERT INTO `user` SET `fam`='Мурат', `name`='Аскар', `otch` = 'Муратович', `pass` = 'password', `log
2 Query OK, 1 row affected (0. 00 sec)
Нәтиже:
NEW - жаңа жазбаға рұқсат алу.
OLD - ескі жазбаға рұқсат алу.
Триггреді өшіру
DROP TRIGGER [IF EXISTS] [schema_name. ] trigger_name
Мұндағы:
schema_name - ДҚ аты
trigger_name - триггер аты
Осы операторларды мысалда қолдану:
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz