Файл: Протокол 6 08 01 2021 г. Оу практикасы Деректер жиынтыын ру.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.10.2023
Просмотров: 107
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Мұнда сан-алдыңғы SELECT операторы алған мән.
4. Тиісті кестелер үшін GEN_BOOKS, GEN_FIRMS, GEN_ PAYMENTS және GEN_MOVEOOK генераторларын бірдей етіп жасаңыз.
Триггерлерді құру
5. Триггерлердің көмегімен генератордан алынған мәнді автоинкремент өрісіне орнатуға болады. Осындай триггер құрыңыз:
CREATE TRIGGER BEF_INS_NAKLS FOR Nakls
ACTIVE BEFORE INSERT
AS
BEGIN
NEW. NakllD = GEN_ID(GEN_NAKLS,1);
END
Бірінші жолда BEF_INS_NAKLS триггерінің атауынан басқа (триггерлерді сақталған процедураларда немесе SQL сұрауларында оларға қоңырау шалу мүмкін болмаса да, олар серверлік Дерекқордың барлық басқа нысандары сияқты ерекше атауларға ие болуы керек) сонымен қатар nakls кестесі көрсетілген. Келесі жол триггерді қашан іске қосу керектігін көрсетеді (біздің жағдайда — жаңа жазбаны енгізбес бұрын). Үшінші жолда триггердің денесін ашатын сақталған AS сөзі бар. Триггердің денесі әрдайым (егер триггерде біздің жағдайдағыдай жалғыз мәлімдеме болса да) BEGIN және END кілт сөздерімен шектелуі керек. Бесінші жолда жалғыз орындалатын оператор орналасқан, онда NAKLLD өрісінің Жаңа мәні (жаңа предикат) ендірілген GEN_ID функциясынан алынған мән беріледі. Осы функцияға айналудың екі параметрі генератордың атауын және генератордың ағымдағы мәні артуы керек мәнді көрсетеді (генератордың" қадамы"). INSERT және UPDATE триггерлерінде, егер оның аты жаңа предикаттан бұрын болса, ал DELETE және UPDATE триггерлерінде ескі мәнге (old предикаты) сілтеме жасауға болады.
НАЗАР АУДАРЫҢЫЗ Бастамашылық автоинкремент өрісінің көмегімен генераторлар тек триггерлар, срабатывающих алдында вставкой жаңа жазу.
6. Сол сияқты, қалған автоинкремент өрістері үшін BEF_INS_FIRMS, BEF_INS_MOVEB BEF_INS_BOOKS, BEF_INS_PAYMENTS триггерлерін жасаңыз.
7. Үстеме деректерді жоймас бұрын оған қатысты барлық кітаптар туралы деректерді жоятын триггер жасаңыз:
CREATЕ TRIGGER BEFORE_DEL_NAKLS FOR NAKLS ACTIVE BEFORE DELETE AS
BEGIN
DELETE FROM MoveBook WHERE MNakl = NakllD;
END
8. Жеке кітап туралы деректерді жою іс-әрекеттің неғұрлым күрделі логикасын қажет етеді: шот-фактураның түріне сүйене отырып, қоймадағы кітап даналарының санын және серіктес балансын түзету керек, сонымен қатар шот-фактураның мөлшерін өзгерту керек:
CREATE TRIGGER BEFORE_DEL_MOVEBOOK FOR MOVEBOOK ACTIVE BEFORE DELETE
AS
/ * көмекші айнымалыларды жариялау: */
DECLARE VARIABLE Typen INTEGER; / * шот-фактура түрі */
DECLARE VARIABLE FirmN INTEGER; / * Шифр серіктес */
DECLARE VARIBLE Coeff FLOAT; / * коэффициентті */
BEGIN
/* Помещаем түрі жүкқұжаттың переменную TypeN шифры әріптес
FirmN айнымалы және Coeff коэффициенті */
SELECT NType, NFirm FROM Nakls WHERE Nakls. NaklID=OLD. MNaklINTO :TypeN, :FirmN;
IF (:TypeN IN (0,3,4,6)) THEN
BEGIN
/ * Кітаптардың келуіне байланысты жүкқұжаттан кітап жойылады.
Қоймадағы кітаптар санын азайтыңыз */
UPDATE Books
SET BQuan=BQuan-OLD. MQuan
WHERE BookID=OLD. MBook;
/ * Серіктес сальдосын түзетеміз */
IF (:TypeN=4) THEN
/ * Айырбас сальдосын ұлғайтамыз */
UPDATE Firms
SET FChgDelta = FChgDelta+OLD. MQuan*OLD. MPrice*:Coeff
WHERE FirmID=:FirmN; ELSE
/ * Қаржылық сальдоны арттырамыз */
UPDATE Firms
SET FFinDelta = FFinDelta+OLD. MQuan*OLD. MPrice*:Coeff
WHERE FirmID=:FirmN;
END
ELSE
BEGIN
/ * Кітаптың кетуіне байланысты шот-фактурадан кітап алынып тасталады. Қоймадағы кітаптар санын көбейтіңіз */
UPDATE Books SET BQuan=BQuan+OLD. MQuan
WHERE BookID=OLD. MBook;
IF (:TypeN=4) THEN
/ * Айырбас сальдосын азайтамыз */
UPDATE Firms
SET FChgDelta = FChgDelta+OLD. MQuan*OLD. MPrice*:Coeff
WHERE FirmID=:FirmN;
ELSE
/ * Қаржылық сальдоны азайту */
UPDATE Firms
SET FFinDelta= FFinDelta+OLD. MQuan*OLD. MPrice*:Coeff
WHERE FirmID=:FirmN; END END
Көптеген пікірлер белгілі бір әрекеттердің ерекшеліктерін түсіндіреді.
Көріп отырғаныңыздай, жергілікті айнымалылар мен шартты операторлар триггерлерге рұқсат етіледі. Келесі бөлікке назар аударыңыз. BEFORE_DEL_MOVEBOOK триггерінің елеулі кемшілігі бар: ол шот-фактураның мөлшерін реттемейді. Бұл кездейсоқ емес. Мысалы, оның басында келесі жолдарды салуға болады: UPDATE Nakls
SET NSum = NSum-OLD. MQuan*OLD. MPrice*:Coeff WHERE NaklID=OLD. MNakl;
Егер бұл орындалса, триггер шот-фактурадан кітап деректерін жою міндетін өте жақсы шешеді, бірақ шот-фактурадағы барлық ақпаратты жоюға тырысу мүмкін болмайды, өйткені триггер жойылған шот-фактурадағы өрісті өзгертуге тырысады. Бұл мәселені қалай шешуге болады? Факт мынада: процедурадан айырмашылығы, триггерге шот-фактура туралы ақпарат тұтастай жойылатындығын көрсететін параметр берілмейді. Осындай параметрді алғаннан кейін, триггер шот-фактураның сомасын өзгертпейді және бұл жағдайда Серіктес сальдосын түзету bef_del_nakls триггерінде бірден бүкіл сомаға жасалуы мүмкін және оны әр жеке кітап үшін жасамайды. Алайда, мен қайталаймын, триггерге параметр берілмейді, ал дерекқорда Ғаламдық айнымалылар жоқ. Мен мұндай проблемаға алғаш рет тап болған кезде, бұл маған шешілмейтін болып көрінді. Алайда, біраз ойланғаннан кейін, менің ойымша, бұл өте қолайлы шешім. Мен MOVEBOOK кестесіне жаңа өрісті қостым: ALTER TABLE MOVEBOOK ADD IsDelNakl VARCHAR (l)
Бұл өріс BEF_INS_MOVEBOOK триггеріндегі F мәнін енгізу процесінде толтырылады:
CREATE TRIGGER BEF_INS_MOVEBOOK FOR MOVEBOOK BEFORE INSERT AS
BEGIN
NEW. IsDelNakl="F";
NEW. MoveId=GEN_ID(GEN_MOVEBOOK,1);
END
BEF_DEL_NAKL триггері алдымен осындай операторды орындайды:
UPDATE MoveBook SET IsDelNakl="T" WHERE MNakl=OLD. NaklID;
Енді BEF_DEL_MOVEBOOK триггері осы өрісті талдай алады және егер өрісте t: IF (OLD. IsDelNakl<> "Т") сол
UPDATE Nakls
SET NSum = NSum-OLD. MQuan*OLD. MPrice*:Coeff
WHERE NaklID=OLD. MNakl;
Дұрыс триггер мәтіндерін SQL Explorer көмегімен көруге болады. Мұны істеу үшін қажетті кестенің жанындағы түйінді ашыңыз, содан кейін триггерлер түйінін ашыңыз, қалаған триггердің атын таңдаңыз және мәтін қойындысына өтіңіз.
29.Пайдаланушылар мен рөлдер.
Біз бірнеше сақталған процедураларды жазамыз. Сақталған процедураны жазатын терезені шақыру үшін объект шолушысы -> мәліметтер базасы -> Universitet -> бағдарламалау -> сақталған процедуралар -> сақталған процедураны жасау керек.
Осыдан кейін экранда қажетті сақталған процедураның мәтінін жазуға арналған бос орын пайда болады:
Біз 2 санның қосындысын есептейтін процедураны жазамыз.
Ол үшін сақталған процедураның мәтінін енгізу үшін терезеде:
Жаңа сұрау жасаңыз және ашылған сұрау терезесінде мәтінді енгізіңіз. Орындау туралы сұранысты іске қосқаннан кейін және нәтижелер қойындысында біз жазған процедураның нәтижесін көреміз.
30. Жүйелік каталог.
Жүйелік каталог – бұл ДҚБЖ-нің дұрыс жұмыс істеуі үшін қажетті ақпаратты қамтитын кестелер жиынтығы: қолдау көрсетілетін мәліметтер базасы және олардың негізгі кестелері, көріністер, курсорлар, индекстер, пайдаланушылар және олардың ақпаратқа қол жеткізу құқықтары, деректерді өзгерту ережелері және т.б. SQL қолдайтын әртүрлі ДҚБЖ-де оннан бірнеше ондаған жүйелік кестелер бар, олардың құрылымы бізге таныс пайдаланушы кестелерінің құрылымынан еш айырмашылығы жоқ.
Сонымен, SYSTABLES жүйелік кестесінің әр жолында пайдаланушы немесе жүйелік мәліметтер базасының кестелерінің бірінің сипаттамасы сақталады. Олардың әрқайсысы үшін кестенің атауы, осы кестені жасаған пайдаланушының аты, ондағы бағандар саны және басқа да ақпарат элементтері көрсетілген. SYSCOLUMNS кестесінде әр кестенің әр бағанына арналған жол бар, онда баған атауы, берілген бағанның бөлігі болатын кесте атауы, сол бағанның деректер түрі және баған туралы көптеген басқа ақпарат бар.
SELECT ұсынысымен пайдаланушы кез-келген жүйелік кестеден ақпарат ала алады. Мысалы, ол кесте атауларын, олардың бағандары мен жолдарының санын, иесін және қысқаша сипаттамасын сұрай алады (егер ол дерекқорға енгізілсе):
SELRCT Tab_name,N_col,N_row,Tab_owner,Comments
FROM SYSTABLES;
және 1 а суретте көрсетілген нәтижені алыңыз.
Тамақтар кестесінің бағандары туралы кейбір деректерді алу үшін сіз сұраныс бере аласыз
SELECT Col_name, Type, Length, Comments
FROM SYSCOLUMNS
WHERE Tab_name = 'Блюда';
және 1 б суретте көрсетілген нәтижені алыңыз.
а)
Tab_name | N_col | N_row | Tab_owner | Comments |
... | ||||
SYS_TABLES | 11 | SYSTEM | ||
SYS_COLUMNS | 14 | SYSTEM | ||
... | ||||
Блюда | 6 | 33 | KIRILLOW | Перечень блюд, известных шеф-повару |
Поставки | 4 | 37 | GROMOW | Данные о поставляемых продуктах |
Вид_блюд | 2 | 5 | KIRILLOW | Перечень видов блюд |
Трапезы | 2 | 3 | GROMOW | Перечень трапез в пансионате |
Состав | 3 | 148 | KIRILLOW | Состав блюд |
Продукты | 11 | 17 | KIRILLOW | Таблица продуктов |
... |
б)
Col_name | Type | Length | Comments |
БЛ | INTEGER | 4 | Код блюда |
Блюдо | TEXT | 16 | Название блюда |
В | TEXT | 1 | Код вида блюда (З, С, ...) |
Основа | TEXT | 6 | Основной продукт в блюде |
Выход | REAL | 4 | Масса порции готового блюда |
Труд | INTEGER | 4 | Стоимость приготовления блюда (коп) |
Сур. 1. Жүйелік кестелер бойынша сұраулардың нәтижелері
31. Триггерлер және сақталған процедуралар
Access мәліметтер базасы «тапсырыстарды жүргізу»
5 нұсқа. Тапсырыстарды жүргізу
Пәндік аймақтың сипаттамасы
Сіз әр түрлі тауарларды көтерме сатумен айналысатын компанияда жұмыс жасайсыз. Сіздің міндетіңіз-компанияның қаржылық жағын бақылау.
Сіздің компанияңыздың қызметі келесідей ұйымдастырылған: Сіздің компанияңыз белгілі бір спектрдегі тауарларды сатады. Бұл өнімдердің әрқайсысы бағамен, анықтамалық ақпаратпен және жеткізілімнің болуы немесе болмауы белгісімен сипатталады.
Тапсырыс берушілер сіздің компанияңызға жүгінеді. Олардың әрқайсысы үшін сіз деректер базасында стандартты деректерді (атауы, мекен-жайы, телефоны, байланыс тұлғасы) есте сақтайсыз және Тапсырыс берушімен бірге сатып алынған тауарлардың саны мен сатып алынған күнін есте сақтай отырып, әр транзакция үшін құжат жасайсыз.
Әр түрлі тауарларды жеткізу әртүрлі тәсілдермен, бағасы мен жылдамдығы бойынша жүзеге асырылуы мүмкін. Клиент мәміле жасау кезінде қандай жеткізу түрін (және, тиісінше, қандай жеткізу құнын) таңдағаны туралы ақпаратты сақтау қажет.
Практикалық тапсырмалардың мақсаты-пәндік саланы талдау, мәліметтер базасын жобалау, оны access ДҚБЖ-де физикалық іске асыру дағдыларын игеру.
Жұмыстың нәтижесі Access дерекқорының файлы ретінде ұсынылады, онда мыналар болуы керек:
-
жобаланған кестелердің құрылымы, -
кестелер арасындағы байланысы бар деректер схемасы, -
пайдаланушы интерфейсін қамтамасыз ететін пішіндердің мысалдары, -
сұраулар (Конструктор режимінде және SQL тілінде), -
есептер (есеп режимінде және Конструктор режимінде), -
негізгі түйме пішіні.
Таблица «Заказчики» — База данных Access «Ведение заказов»
Таблица «Товары» — База данных Access «Ведение заказов» | Форма «Товары» — База данных Access «Ведение заказов» |