інформацію про студента Нагірний, можна використати наступну команду:
DELETE FROM STUDENTS WHERE SNUM = 3416;
Тут в якості предиката використаний номер студентського квитка: дійсно, це поле фактично є первинним ключем таблиці, що дає гарантію видалення тільки одного запису. Використовування поля SFAM, взагалі кажучи, приводить до видалення декількох записів, т.к. в таблиці могла зберігатися інформація про однофамільців.
В команді DELETE припускає використати предикат, що вибирає цілу групу рядків. Наприклад, наступна команда видаляє з таблиці USP всі дані, що відносяться до оцінок, отриманих 10/06/1999:
DELETE FROM USP
WHERE UDATE = 10/06/1999;
Нарешті, так само. як і у випадку з командою INSERT, припускає в предикаті використати вкладений запит. Частіше всього це необхідно, коли критерій, по якому вибираються дані для видалення, базується на іншій таблиці. Наприклад, якщо виникає необхідність у видаленні інформації про студентів з таблиці STUDENTS, причому для таких, в яких є трійки по будь-якому з учбових предметів, то потрібно виконати наступне:
DELETE FROM STUDENTS WHERE SNUM =
(SELECT SNUM FROM USP
WHERE OCENKA = 3);
В даному випадку підзапит вибере всіх студентів, що мають трійки, з таблиці успішності, і в предикат основної команди поверне номери їхніх студентських квитків.
Припускає в предикаті команди DELETE використати і підзапити, що дає можливість встановити досить складні критерії того, які рядки будуть віддалятися. Крім того, дуже ефективно виконувати спочатку повторні дії (перевірки і т.п.), після чого виконувати саме видалення. Хоча не можна посилатися на таблицю, з якої будуть віддалятися записи, в пропозиції FROM підзапиту, в предикаті припускає посилання на поточний рядок цієї таблиці, тобто можна використати співвіднесені підзапити. Наприклад:
DELETE FROM STUDENTS WHERE EXISTS (SELECT * FROM USP
WHERE OCENKA = 3
AND STUDENTS.SNUM = USP.SNUM);
Власне вся команда видаляє інформацію, аналогічно попередньому прикладу. Звернете увагу на те. що частина предиката внутрішнього запиту посилається до таблиці STUDENTS. Це означає, що весь підзапит буде виконуватися окремо для кожного рядка даної таблиці.
В цілому, структура команди DELETE достатньо проста для розуміння, тому більш докладне на ній зупинятися не будемо.
Практичні завдання З предмету: “Основи баз даних і знань”
9. Використовуючи навчальну базу даних “Борей прокладіть зв’язок між таблицями “Клиенты ” та “Сотрудники”
Схема даних
“Математичні методи дослідження операцій”
Теоретичні питання З предмету: “Математичні методи дослідження операцій”
9.Що означає виродження опорного плану транспортної задачі? Як його позбутися. Назвіть етапи розв’язування методом потенціалів. Як обчислюються потенціали. Умова оптимальності транспортної задачі.
Після побудови першого опорного плану одним із методів у таблиці має бути заповнено (т + п - 1) клітинок, де т — кількість постачальників; п — кількість споживачів у задачі, у тому числі фіктивних. Такий план називають невиродженим. Якщо кількість заповнених клітинок перевищує (n+m-1), то початковий план побудовано неправильно і він є неопорним. Ознакою опорності плану транспортної задачі є його ациклічність, тобто неможливість побудови циклу. Циклом у транспортній задачі називають замкнену ламану лінію, вершини якої розміщуються в заповнених клітинках таблиці, а сторони проходять уздовж рядків і стовпчиків таблиці.
Якщо заповнених клітинок у таблиці менш як (m + п - 1), то опорний план називають виродженим. У такому разі необхідно заповнити відповідну кількість порожніх клітинок, записуючи в них «нульове перевезення», але так, щоб при цьому не порушилася ациклічність плану.
Опорний план перевіряють на оптимальність за допомогою потенціалів щ та v, відповідно постачальників та споживачів.
!Теорема (умова оптимальності опорного плану транспортної задачі). Якщо для деякого опорного плану X* = (х*ij) існують числа ui та vj,, для яких виконується умова
ui + vj = cij хij 0
ui + vj cij хij = 0
для всіх (i =1,…,m; j = 1,…,п),
то він є оптимальним планом транспортної задачі.
Потенціали опорного плану визначаються із системи рівнянь ui + vj = cij
, які записують для всіх заповнених клітинок транспортної таблиці.
За допомогою розрахованих потенціалів перевіряють умову оптимальності ui + vj cij для порожніх клітинок таблиці. Якщо хоча б для однієї клітинки ця умова нє виконується, тобто ui + vj cij , то поточний план є неоптимальним і від нього необхідно перейти до нового опорного плану.
Перехід від одного опорного плану до іншого виконують заповненням клітинки, для якої порушено умову оптимальності. Якщо таких клітинок кілька, то для заповнення вибирають таку, що має найбільше порушення, тобто
max{ij = (ui + vj) ) – cij}. Для вибраної порожньої клітинки будують цикл перерахування та виконують перерозподіл продукції в межах цього циклу за такими правилами:
1) кожній вершині циклу приписують певний знак, причому вільній клітинці — знак «+», а всім іншим по черзі — знаки «–» та «+»;
2) у порожню клітинку переносять менше з чисел хij , що стоять у клітинках зі знаком «–». Одночасно це число додають до відповідних чисел, які розміщуються в клітинках зі знаком «+».
Отже, клітинка, що була вільною, стає заповненою, а відповідна клітинка з мінімальним числом хij вважається порожньою. У результаті такого перерозподілу продукції дістанемо новий опорний план транспортної задачі.
Новий опорний план перевіряють на оптимальність.
Практичні завдання З предмету: : “Математичні методи дослідження операцій”
Задача 9
Знайти оптимальний план транспортної задачі, де Cij – матриця перевезення одиниці вантажу, ai – запаси, bj – потреби вантажу.
10 5 4 6
Cij = 3 2 7 8
6 8 3 5
ai =(240 160 210 )
bj =(195 175 200 180)
Розв'язання.
Знайдемо суму запасів постачальників і суму потреб споживачів.
УАі =240+160+210=610; УBj=l 95+175+200+180=750.