|
Views, Foreign Keys, Транзакции и Унаследяване
В този урок ще разгледаме няколко мощни конструкции от SQL със съответните PostgreSQL разширения, придаващи гъвкавост на управлението на базите данни и предотвратяващи загуба на данни. В примерите, които ще видим, ще използваме част от база данни на ж.п. гара. 1. Views Views (изгледите) са особено полезни когато имаме нужда да използваме често една и съща дълга заявка, комбинираща например две таблици. Вместо всеки път да пишем заявката отново и отново, можем просто да я дефинираме като view, което да извикваме вместо дългата заявка. Ето как можем да извличаме банковите координати на служителите на гарата като проверяваме дали съответният служител съществува в таблица „Служители“: CODE
След това,когато искаме да получим дадената информация е достатъчно само да извикаме: CODE
Views могат да бъдат използвани с DELETE и UPDATE. Не е необичайно да срещнем и views, построени на базата на други views. 2. Foreign Keys Foreign Key ограничението указва, че стойностите в дадена колона (колони) трябва задължително да съвпадат със стойностите на колоната (колоните) на някой от редовете в друга таблица. Казваме, че това поддържа референтната интегрируемост между две свързани таблици. На SQL това би изглеждало така: CODE
REFERENCES може да бъде употребено по два начина: с име на таблица и име на колона или само с име на таблица. Когато имената на колоните в две таблици между които установяваме зависимост съвпадат можем да не указваме име на колона. Горния пример можем да дефинираме и по следния начин: CODE
Нека вземем отново за пример таблиците ни със служителите и банковите им координати. Искаме никой да не може да добавя банкови координати за лице, което не фигурира като служител на гарата. Също така ще искаме да изтриваме банковите координати на служителите при премахването на последните от таблицата employes. CODE
В случай, че не искаме да изтриваме банковите координати при изтриването на служител, просто заменяме CASCADE с RESTRICT. Казаното за ON DELETE важи с пълна сила и за ON UPDATE. Нека при така създадените тааблици да се опитаме да въведем банкови координати на лице, което не съществува: CODE
Ще получим следното съобщение за грешка: CODE
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









