Delphi - SQL nézettáblák használata

SQL nézettáblák 1. rész

forráskód letöltése
Új sorozatunkban megismerkedünk az SQL nézettáblák működésének és használatának rejtelmeivel. Ebből a részből megtudhatjuk, hogy mik is azok a nézettáblák és mire használhatjuk őket. Készítünk egy példa adatbázist, mely segítségével a későbbiekben kipróbálhatjuk a nézettáblák által nyújtott lehetőségeket.
A mellékelt Dolgozok.sql állomány tartalmazza a feltöltött példa adatbázis létrehozásához szükséges szkriptet. A szkript lefuttatásához használja az SQL szerver Manager programját. Amennyiben SQL szerverének elérési útja eltér a telepítési alapbeállítástól, úgy a script-ben írja át az elérési utakat a következőre: C:\Program Files\Microsoft SQL Server\MSSQL\data\
Nagyvonalakban a nézettábla olyan, mint egy ablak. Ha kinézünk az ablakon, akkor a körülöttünk lévő világnak csak egy töredék részét láthatjuk. Ez a töredék rész akkora, amekkorát az ablak mérete és minősége megenged.
Ez így van a nézettáblák esetében is. A világot itt egy adatbázis alkotja, az ablakot pedig a nézettábla.
A nézettábla egy utasítás sorozat, amellyel az SQL szerver számára meghatározzuk, hogy mely adatokat, és milyen formában szeretnénk látni. Az utasítás sorozat tulajdonképpen egy SELECT utasítás. A SELECT parancs határozza meg, hogy az adatbázis mely tábláinak, mely sorait és oszlopait láthatjuk. A nézettáblában szereplő sorok számának csak az eredeti táblák sorainak száma szabhat határt.
Amikor létrehozunk egy nézettáblát, a teljes adatbázis tartalmának csak egy részhalmazát akarjuk megjeleníteni (ez lehet akár az egész adatbázis is). Miután meghatároztunk egy nézettáblát, ugyanúgy hivatkozhatunk rá, mintha rendes adattábla volna. Ez úgy tűnik, mintha a nézettábla adatbázisunk egy új táblája lenne. Azonban ez csak a látszat. A nézettábla létrehozásakor nem készül másolat az eredeti táblák adatairól.
A nézettábla csak egy utasítás sorozatot tárol el, amely meghatározza, hogy a teljes adatbázis mely részhalmazát kell megjelenítenie. Minden egyes alkalommal, amikor lekérdezzük a nézettábla tartalmát, az eltárolt utasítás sorozat minden egyes alkalommal végrehajtódik. Az így létrejött eredménytábla csak addig létezik, amíg tartalma megjelenítésre nem kerül.
Mivel a nézettábla, viselkedését tekintve ugyanolyan, mint egy hagyományos adattábla teljes tartalma, vagy tartalmának egy része, a SELECT paranccsal lekérdezhető.
A nézettáblák alkalmazásával növelhetjük az adatbázis biztonságát és egyszerűsíthetjük a felhasználók munkáját. Biztonsági szempontból nézve, lehetővé tehetjük azt, hogy minden felhasználó csak annyit láthasson az adatokból, amennyi az ő hatáskörébe tartozik, illetve amennyivel dolgoznia kell. Ezzel megvalósíthatunk egyfajta adatbiztonságot és csökkenthetjük a feldolgozások során fellépő hibalehetőségek számát is.
A nézettáblák egy másik nagy előnye a lekérdezések egyszerűsítése. Az adatbázis használata során fellépő, gyakori és bonyolult lekérdezések esetében célszerű létrehozni egy nézettáblát. Mivel maga a tábla tartalma, már egy lekérdezés eredménye, ezután a lekérdezés eredménytáblája a nézettábla nevével egyszerűen elérhetővé válik.
A nézettáblák létrehozása nem jár nagy tároló igénnyel, ezért gyakorlatilag rengeteg ilyen táblát létrehozhatunk, persze az ésszerűség határain belül.
Hozzunk létre egy próba adatbázist, amelyen a későbbiek folyamán kipróbáljuk a nézettáblák lehetőségeit.
Az adatbázis neve Dolgozok. Az adatbázis két táblából áll: Szemely és Adatok.
CREATE TABLE [dbo].[Szemely] (
  [SZKod] [int] NULL ,
  [Nev] [char] (25) COLLATE Hungarian_CI_AS NULL ,
  [SzulIdo] [datetime] NULL 
) ON [PRIMARY]
CREATE TABLE [dbo].[Adatok] (
  [SZKod] [int] NULL ,
  [Beosztas] [char] (15) COLLATE Hungarian_CI_AS NULL ,
  [Fizetes] [numeric](18, 0) NULL 
) ON [PRIMARY]
A Szemely táblában neveket és születési dátumokat, az Adatok táblában a személyekhez tartozó beosztásokat és fizetési összegeket tárolunk. A két táblát az SZKod mező köti össze, amely tartalma a személyeket azonosító kód.
A táblákat töltsük fel próba értékekkel.
A Szemely táblába egy rekordot a következő SQL utasítással vehetünk fel:
INSERT INTO [dbo].[Szemely] VALUES (1,'Kovács Péter','08.07.1970')
Az Adatok táblába a következő módon vehetjük fel a megfelelő rekordot:
INSERT INTO [dbo].[Adatok] VALUES (1,'Portás',57000)

SQL nézettáblák cikksorozat