22
Аналогично, ако потребителят избере „От пациенти и прегледи”, то SQL заявката ще изглежда приблизително така:
select*
fromПациенти
inner joinПрегледи
on (Прегледи.пациент = Пациенти.пациент)
Спестяването на детайлите относно ключовите полета и свързването на таблиците е огромно облекчение за
крайните потребители, тъй като познаването на тези подробности е по силите само на опитен администратор на бази.
2.2.2. Стъпка
2 - „Условия
за
удовлетворяване
” Това е може би най-интересната стъпка от конструирането, защото тя отговаря за задаване на критериите, на които трябва да отговарят обектите от извадката.
Критериите се представят чрез логическите условия в
where клаузата на заявката, както и свързващите ги логически оператори -
and, or и
not. На фигура 2.4 е показан общ изглед от тази стъпка в Конструктора.
Фигура
2.4. Стъпка
2 - „Условия
за
удовлетворяване
” За максимално улеснение на потребителите сме проектирали следните ключови функционални възможности за тази стъпка:
23
• Първо, на потребителят се предоставя изчерпателен списък на наличните атрибути, върху които могат да се налагат логически условия. Така потребителят е ограничен в избора си и не може да пише произволни наименования на ръка (и съответно да допуска грешки). Потребителят просто трябва да маркира тези атрибути, върху които иска да наложи
някакви логически ограничения, например по този начин:
• Второ, за всеки атрибут се допуска задаване само на такива логически операции, които са допустими за съответния тип на атрибута. Нещо повече, въвеждането на допълнителни операнди (най-често константи) преминава през допълнителна проверка, която гарантира съвместимостта на използваните типове данни.
Например, за атрибут от числов тип се допускат
операции като по-голямо, по- малко, равно, различно и съответно се допуска въвеждане на операнди от числов тип. В таблица 2.2 са описани типовете атрибути и съответните операции и типовете операнди, които се допускат за тях.
Таблица
2.2. Съобразени
с
типовете
на
атрибута
допустими
операции
и
операнди
Тип
на
избрания
атрибут
Допустими
операции
Допустими
операнди
Булев тип
(True/False)
Числов тип
Числов тип, съвпадащ с числовия тип на атрибута (целочислен или с плаваща запетая)
24
Тип
на
избрания
атрибут
Допустими
операции
Допустими
операнди
Символен тип
Произволен символен тип
Календарен тип (дата)
Дата,
избрана от календар, така че да е валидна.
Таблица
2.2. Съобразени
с
типовете
на
атрибута
допустими
операции
и
операнди
Операцията „е празно” съответства на SQL операцията (IS NULL), което е съвсем различно от условието за равенство с празен низ (= “”).
• Трето, всеки атрибут, който е включен в логически израз автоматично получава свое ново копие (клонинг), който е свободен за свързване в нови операции. По този начин могат да се конструират сложни логически условия върху един и същи атрибут. Например, задаване на възрастов диапазон от 30 до 50 години включва две условия върху атрибута възраст: (възраст >= 30) и (възраст <= 50).
След задаване на всяко от тези две условия автоматично Конструкторът създава ново копие на атрибута Възраст, за да може да се използва за ново условие. В резултат се получават
три екземпляра на атрибута, две от които са свързани с конкретно условие, а третият е свободен за използване:
25
• Четвърто, потребителят се освобождава от задължението явно да задава логическите връзки между отделните логически условия. Специално проектирания механизъм за „умно свързване” на логическите изрази се грижи да постави правилната операция на правилното място –
AND или
OR. Най- важните евристични правила, които се използват за реализиране на „умното свързване”, са изброени в таблица 2.3.
Таблица
2.3. Евристични
правила
за
„умно
свързване
” на
логически
условия
” Първо
условие
Второ
условие
Операнди
Сподели с приятели: