Adatbázis-kezelés Haladó (?)
Adatfeldolgozás (?) Az adatfeldolgozás egyik módszere, hogy az adott nyilvántartási feladatot egy erre alkalmas programozási nyelv alatti adatstruktúrában tároljuk. Funkció- vagy programorientált adatfeldolgozás
Jellemzői Több file-al dolgozik a program Egy file-t több prg. is kezelhet Ezek a progik függetlenek egymástól A funkciók megvalósítását programokhoz rendelik …
Miért van szükség AB-kezelőkre Hagyományos adatkezelés hátrányai: Redundancia Inkonzisztencia (ellentmondás) Nem rugalmas, nem párbeszédes Sok a karbantartás Feldolgozási vagy programozási többlet Alacsony adatvédelem Konkrét (kötött) file-rendszer Adatbázis szemlélet, ABKR
Adatbázis szemlélet Az adatokat erőforrásoknak tekintjük EF-ok jellemzői: Pénz, idő Általában kevés Fontos a hatékony kihasználás
Az adatbázis-kezelés nem más, mint az adatokkal, mint erőforrásokkal történő gazdálkodás. Az ABKR mint szoftver, ennek az erőforrásgazdálkodásnak egyfajta automatizált eszköze.
Adatbázis rendszer (ABR/DBS) DBS – Data Base System: Adatbázis (DB – Database) AB-kezelő rendszer (DBMS – Data Base Management System) AB-adminisztrátor (DBA – Data Base Administrator) Felhasználói környezet
Adatbázis meghatározások Nagy mennyiségű, összetartozó adat halmaza Adatoknak és a köztük lévő kapcsolatoknak a rendszere Különböző típusú, de tartalmilag összefüggő, egymás rekordjaira hivatkozó bonyolult adatstruktúra, struktúrált file-rendszer
Adatbázis Integrált: több felhasználó és/vagy több felhasználás adatait tárolja együtt Osztott: az AB-hoz több felhasználó férhet hozzá AB fizikai felépítése: AB-file-ok + adatszótár (CDD – Common Data Dictionary)
DBMS Professzionális szintű szoftver Adatorientált adatszervezés Adatkezelési feladatok: AB létrehozása Adatok visszakeresése Adatfelvitel Adatok törlése, módosítása Rendezés Űrlapgenerálás jelentéskészítés
Adatok közötti komplex kapcsolatok létrehozása Többféle hozzáférési mód Szinkronizáció Adatok védelme Adatok integritása Helyreállíthatóság Adatfüggetlenség Eszközfüggetlenség
Követelmények Tároló eszköztől való függetlenség Felhasználói programtól való függetlenség Többféle hozzáférési mód Többen is használhassák egyszerre Gépi hatékonyság Gyors válaszidők EF optimális kihasználása
Folytatás…. Könnyű legyen használni Adatvédelem, titkosság Megbízható, naprakész adatok Rugalmas Kevés redundancia Konzisztencia biztosítása
DBMS komponensei DDL (Data Definition Language – adatdefiníciós nyelv) DML (Data Manipulation Language – adatmanipulációs nyelv) DCL (Data Control Language – adatvezérlő, felügyelő nyelv) QL (Query Language – lekérdező nyelv) Forms Report
DBA feladatai AB megszervezése Szoftverkomponensek kezelése Adatmodell kialakítása Objektumok definiálása Keresési stratégiák megválasztása (index) Jogosultságok adása, szabályozása Szoftverkomponensek kezelése Karbantartás, konzisztencia biztosítása
DBS (ABR) architektúra Külső szint: ahogy az egyes felhasználók látják az AB-t Koncepcionális szint: objektumok szerkezete, kapcsolatok rendszere, hozzáférések Belső szint: fizikai tárolás és elérés módja Fontos az adatfüggetlenség
Az adatfüggetlenségről Logikai adatfüggetlenség Fizikai adatfüggetlenség Teljes adatfüggetlenség
Adatmodellezés Azt az eljárást, mely során a valós világ (egy részének) tényeit és az összefüggéseit tükröző adatok lényeges dolgait kiemeljük, adatmodellezésnek hívjuk. A modellezés eredménye az adatmodell.
VALÓS VILÁG ADATMODELL
Adatfeldolgozási probléma megoldása Mi a modellezés célja? (specifikáció) Megtervezzük a rendszer alapját képező adatmodellt (logikai AM) A modell megvalósítása egy konkrét ABKR-ben (fizikai AM) Modell tesztelése Dokumentálás Használat, karbantartás, követés
Adatmodellek Leképezés eredménye Adatok típusai, előfordulása Egyedek, tulajdonságok, kapcsolatok halmaza Szintjei: Külső Koncepcionális Belső – fizikai
Adatmodellezési módszerek Hierarchikus Hálós Relációs Objektumorientált
Alapelemek és elnevezések EGYED(RELÁCIÓ)NÉV OSZLOPOK Mezőnevek EGYEDTULAJDONSÁGOK (attributum) SZEMÉLY KULCS Rekord Értékek (Mezők) A sárga sor Egyedhalmaz
Egyedtípus (entitás): minden olyan objektum, ami minden más objektumtól megkülönböztethető, amiről adatokat tárolunk, és amit tulajdonságaival kívánunk leírni. Pl. könyv, olvasó, személy
Tulajdonságtípus (attribútum): az egyedek jellemző jegyei KULCS: egyértelműen azonosítja az egyedtípus előfordulását Pl. ISBN, Tagsági szám, Személyi szám Gyenge egyedtípus: pl. szülő-gyerek
Kapcsolattípus: az egyedek logikai viszonya, összefüggése Lehet teljes és parciális. Típusai: Nincs kapcsolat 1:1 1:N N-M N-ágú
ER (Entity Relationship) Egyed kapcsolat modell Magas szintű, logikai modell Egyedtípusokból, a köztük lévő kapcsolatokból, és az attribútumokból épül fel. Modellezéskor a tervező dönti el, hogy mit akar tulajdonságokkal és mit új egyedekkel leírni.
Komponensei Egyedtípus és a gyenge egyedtípus ábrázolása: Attribútumok ábrázolása:
Kapcsolattípusok ábrázolása:
Példa ER modellre
Hierarchikus modell Az adatokat fa szerkezetben kell elrendezni A fa csomópontjaiban és leveleiben helyezkednek el az adatok. A közöttük levő kapcsolat szülő - gyermek kapcsolatnak felel meg. Így csak 1:1 és 1:N típusú kapcsolatok képezhetők le segítségével. Ilyen például az iskola és osztály, vagy akár az osztály és tanuló kapcsolat.
Hierarchiadiagram
Előfordulásdiagram
Hálós adatmodell A kapcsolat egy gráffal írható le. A gráf csomópontok és ezeket összekötő élek rendszere, melyben tetszőleges két csomópont között akkor van adatkapcsolat, ha őket él köti össze egymással. Egy csomópontból tetszőleges számú él indulhat ki, de egy él csak két csomópontot köthet össze. Ebben a modellben N:M kapcsolat is megoldható. Pl. tanárok – diákok, vevő – rendelés tulajdonos - autó
Relációs adatmodell 1. Emberi oldalról közelít a problémához Az AB-ok logikai szerkezetének a leírására alkalmas eszköz A relációs modell előnyei a következők: Ezt az adatszerkezetet egyszerűen értelmezheti a felhasználó is. A logikai adatmodell relációi egy relációs adat-báziskezelő rendszerbe módosítások nélkül átvihetők. A relációs modellben az adatbázis tervezés a normál formák bevezetésével egzakt módon elvégezhető.
A reláció matematikai fogalma Definíció:Legyenek D1, D2, … , Dn halmazok. Az RD1D2…Dn halmazt, ami megfelel egy táblának, relációnak nevezzük. (Mezőhalmazok Descartes szorzatának részhalmaza). Az így értelmezett reláció egy táblázat. Ha pl. a relációnak m eleme van (d1j,…,dnj), ahol j=1,2,…,m, akkor a táblázat az alábbi lehet. Ki kell elégítenie az ALÁBBI ELŐÍRÁSOKAT: Az egyes relációk egyedi névvel rendelkeznek. A relációk oszlopaiban azonos mennyiségre vonatkozó adatok jelennek meg. Az oszlopok névvel rendelkeznek (mezőnév), melyeknek a reláción belül egyediek. A reláció soraiban a logikailag összetartozó adatok kerülnek tárolásra. A reláció sorainak sorrendje közömbös, de nem tartalmazhat két azonos adatokkal kitöltött sort. Egy sor és oszlop metszésében található táblázat elemet mezőnek nevezzük. A mezők tartalmazzák az adatokat. A mezőkben oszloponként különböző típusú (numerikus, szöveges stb..) mennyiségek tárolhatók.
A relációktól általában megköveteljük, hogy ne tartalmazzanak más adatokból levezethető vagy kiszámítható információkat. Például a fenti táblán az érték kiszámítható a rendelkezésre álló adatokból. Hasonlóképpen a személyi szám mellett nincs értelme külön a születési dátumot nyilvántartani..
Relációs adatmodell 2. Az adatokat táblázatok soraiban képezzük le. Összefoglalva a reláció nem más mint egy táblázat, a táblázat soraiban tárolt adatokkal együtt. A relációs adatbázis pedig relációk összessége. A reláció helyett sokszor a tábla vagy táblázat, a sor helyett a rekord, az oszlop helyett pedig az attribútum elnevezés is használatos. Relációk elemei: Sor, Oszlop, Mező
A relációs adatmodellezés alapfogalmai E.F.Codd, 1970 Egyed, tulajdonság, kapcsolat Reláció, rekord Kulcs Anomáliák Redundancia Funkcionális függőség Normál formák
Anomáliák: Bővítési Módosítási Törlési
Normalizálás Cél: Hogyan? Redundáns adattárolás minimalizálása Anomáliák megszüntetése Hogyan? Egymást követő, ún. normál formák kialakításával Minden relációval el kell végezni
Normalizálatlan forma Tetszőleges adatstruktúra -> mátrix 1NF Kulcstól való függőségek eltávolítása 2NF Tranzitív függőségek eltávolítása 3NF
normalizálatlan 1NF 2NF 3NF
Talán egy érthető (?) példa Üzlet napi forgalmát tartjuk nyilván
NAPI_HELYZET(Dátum, Árukód, Árúnév,Ár, Darab,Befizetés) ÖSSZES DARAB ÁRUKÓD ÁRUNÉV ÁR
BEVÉTEL(DÁTUM,ÖSSZEG,BEFIZETÉS) ÖSSZES Másodlagos függőségek vannak: 2NF
ÁRU(ÁRUKÓD,ÁRUNÉV,ÁR) 3NF ÁRUNÉV ÁRUKÓD ÁR Az Árukód egyértelműen meghatározza az áru nevét, árát. Áru neve és ára között nincs kapcsolat = nincs tranzitív függés! 3NF
MENNYISÉG(DÁTUM, ÁRUKÓD,DARAB) Együtt határozzák meg a Darabot, nem külön -> 2NF Darab egyedül van, nem függ mástól 3NF
NAPI_BEVÉTEL(DÁTUM,ÖSSZES) BEFIZETÉS(ÖSSZES,BEFIZETÉS) ÖSSZES BEFIZETÉS 3NF
1NF Tetszőleges adatstruktúrából táblázatot készítünk Egy mezőbe egy adat kerül NAPI_HELYZET(Dátum, Árukód, Árúnév,Ár, Darab, Befizetés)
BEVÉTEL(DÁTUM,ÖSSZES,BEFIZETÉS) NAPI_HELYZET(Dátum, Árukód, Árúnév,Ár, Darab, Befizetés) BEVÉTEL(DÁTUM,ÖSSZES,BEFIZETÉS) ÁRU(ÁRUKÓD,ÁRUNÉV,ÁR) MENNYISÉG(DÁTUM, ÁRUKÓD,DARAB) NAPI_BEVÉTEL(DÁTUM,ÖSSZES) BEFIZETÉS(ÖSSZES,BEFIZETÉS)
Hf. Rendelés száma Vevő kódja Vevő neve Vevő címe Határidő Rendelés dátuma Cikkszám Cikk neve Cikk egysége Cikk ára Mennyit rendelt
Adatbázis-tervezése Az alkalmazások fejlesztésének kulcskérdése. Mivel az alkalmazások nagyon különbözőek lehetnek, ezért csak egy három fázisból álló általános módszert javasolunk: Először meghatározzuk a tárolandó adatok körét, azok egymás közötti kapcsolatait és az adatbázissal szemben felmerülő igényeket. Célok meghatározása, adatok, formátumok, algoritmusok kialakítása. Ezután következik a rendszer tervezés az adatbázis logikai modellje. Egyedek meghatározása Egyedeket leíró tulajdonságok megadása Az adatredundancia minimalizálása normálformákkal. Végül fizikai szinten képezzük le a logikai adatbázis modellt,azaz létrehozzuk a számítógépen az adatbázist.
Normálformák 1. 1.NF egy (relációs) táblázat, ha a tábla minden sora különböző. Minden adata egyszerű, nem összetett. RENDEL(Rszám, Vevőkód, Vnév, Vcim, Hatidő, Rendat) TÉTEL(Rszám, Cszám, Cnév, Cegység, Cár, Mennyi) 2.NF ha az adatbázisban összetett kulcs is van, akkor le kell választani az egyszerű kulcsoktól függő attribútumokat. A TÉTEL táblából leválasztható a csak a Cszám-tól függő CIKK tábla CIKK(Cszám,Cnév,Cegység,Cár) TÉTEL(Rszám,Cszám,Mennyi) Az adatok redundanciája még tovább is csökkenthető 3.NF:Ha a 2. normálformás táblák valamelyikében két vagy több attributum tranzitíven függ a kulcstól, akkor ezt is külön táblázatba leválasztjuk. A RENDEL táblázatban a Vevőkód egyértelműen meghatározza a Vnév és Vcím mezőket így a RENDEL táblában kapcsoló mezőként elegendő csak ezt szerepeltetni
Normálformák 2.
Előírt feltételek egy lakásnyilvántartó és karbantartó adatbázis tervezéséhez ÖSSZEFÜGGÉSEK: Egy lakáson többször végezhetnek javítást, de egy javítást mindig egy munkalap ír le. A munkalap száma a munka egyedi azonosítója, szerelőnként egyedi szám. Egy munkát egy szerelő végez, de egy szerelő több munkát is végezhet. Egy munkánál egy munkadíjat számítanak, de több anyagot is használhatnak. A JAVASOLT TÁBLÁZAT KITÖLTÉSI SORRENDJE. 1. A sorokba beírjuk a tervezett mezőneveket 2. Az oszlopokban összegyűjtjük az egyes táblákhoz tartozó mezőket, megjelölve azok minőségét (kulcsmező stb.) 3. Meghatározzuk a kapcsolatukat.
Javasolt adatbázis tervező űrlap
Adatbázis-kezelők szabványosítása Előnyök: Az adatbázisok hordozhatók a különböző platformok között Az alkalmazók kiképzése gazdaságos Az elsők: ANSI és ISO SQL
Az SQL nyelv Az SQL (Structured Query Language= strukturált lekérdező nyelv) nem algoritmikus nyelv, nem tartalmaz algoritmus szerkezeteket (elágazás, ciklus stb.) A lekérdezésen túl más adatkezelési funkciókat is ellát. Az SQL halmaz orientált nyelv, mely a relációs adatmodell adatbázis-kezelő nyelve. Az SQL nyelvnek több verziója van, de van szabványosított változata is. (Mi ezt követjük.) Minden SQL parancs egy kulcsszóval kezdődik, amelyet paraméterek, esetleg újabb kulcsszavak követhetnek. A parancsokat folyamatosan írhatjuk, azonban lehetőség van arra is,hogy a megfelelő strukturáltság biztosítására egyes részeket új sorba írjunk más bekezdéssel.
Szabványok SQL-2: SQL-3: OODBMS szabványok Dátum típus 1993 Adatokkal végezhető számítási műveletek OODBMS szabványok
Üzemmódjai: Önálló SQL Beágyazott SQL: Ada, C, Cobol, Fortran, Pascal, dBase
Az SQL a következő elemekre osztható: adatdefiníciós nyelv (DDL) adatmanipulációs nyelv (DML) lekérdező nyelv (DQL) vezérlés (DCL)
Adatdefinició Tábla létrehozása Tábla törlése Szerkezetének módosítása CREATE TABLE táblanév… Tábla törlése DROP TABLE táblanév Szerkezetének módosítása ALTER TABLE táblanév …
Adatmanipulációk Rekord felvitel: Törlés: adatok módosítása: INSERT INTO táblanév…. Törlés: DELETE FROM táblanév WHERE feltétel adatok módosítása: UPDATE táblanév SET … WHERE feltétel
Vezérlés Tranzakció kezelés Adatok védelme Máskor….
A lekérdező nyelv 1. A lekérdező nyelv egyetlen utasításból áll, mely számos alparancsot tartalmazhat, és a lekérdező utasítások többszörös mélységben egymásba ágyazhatók. Először tekintsük át az egy relációra vonatkozó lekérdezéseket. A projekció műveletét a következő utasítással valósíthatjuk meg: SELECT [DISTINCT] attributum_név, attributum_név, ... FROM reláció_név; A megadott reláció felsorolt attribútumai jelennek meg az utasítás hatására soronként. A DISTINCT módosító megadása esetén csak az egymástól különböző sorok láthatók. Új mezőnevek is megadhatók. Például a Dolgozó reláció Név, Bér, Emelt bér attribútumainak lekérdezése a 10%-os béremelés feltüntetésével: SELECT Név, Bér, 1.1*Bér AS "Emelt bér" FROM Dolgozó; paranccsal történhet. Ha az attributum nevek helyett csak "*"-ot adunk meg, akkor az eredményben a reláció valamennyi attribútuma szerepelni fog: SELECT * FROM Dolgozó;
A lekérdező nyelv 2. A szelekció műveletéhez a WHERE <feltétel> záradékot kell hozzáadni. Például adott intervallumba eső bérek Név és Bér adatai: SELECT Név, Bér FROM Dolgozó WHERE Bér BETWEEN 100 AND 500; vagy a 3/b oszt adatainak kigyűjtése: SELECT * FROM Diakok WHERE osztaly = '3/b'; RENDEZÉS Lehetőség van az eredmények rendezésére is az ORDER BY attributum [ASC|DESC], attributum[ASC | DESC], ...; alparancscsal. ORDER BY Nev kiegészítéssel ABC-és lista készíthető. TÖBB TÁBLÁS LEKÉRDEZÉS A dolgozó neve mellé írjuk ki a Bér és Adó értéket névsorba rendezve: SELECT Név, Bér, Adó FROM Dolgozó, Kifizetés WHERE Dolgozó.Tszám = Kifizetés.Tszám ORDER BY Név; Ez másik formában is megadható a JOIN kapcsolóval: SELECT Név, Bér, Adó FROM Dolgozó JOIN Kifizetés ON Dolgozó.Tszám=Kifizetés.Tszám ORDER BY Név;
A lekérdező nyelv 3. CSOPORTOK A lekérdezés eredményét csoportosíthatjuk és a csoportok között is további szelekciót alkalmazhatunk a GROUP BY és HAVING alparancsokkal. SELECT attributumok FROM reláció [WHERE feltétel] GROUP BY attributum [HAVING csoport_feltétel]; Születési hely szerinti csoportban határozzuk meg Dolgozok számát : SELECT Szhely, COUNT (Tszám) FROM Dolgozó GROUP BY Szhely; Gyűjtsük ki azokat a városokat amelyekre igaz, hogy az adott városban született dolgozók átlagfizetése legfeljebb 120000 Ft. SELECT Szhely,AVG(Bér) AS ‘Átlagfizetés’ FROM Dolgozó GROUP BY Szhely HAVING AVG(Bér)<120000 Vagy például az ötnél nagyobb létszámú osztályok kigyűjtése: SELECT Osztály, COUNT (*) FROM Diakok GROUP BY Osztaly HAVING COUNT (*) > 5
Röviden (=lényeg!) A ZÁRADÉKOK SORRENDJE: FROM (Táblák), WHERE (sorok), GROUP BY (csoport), HAVING (csoportfeltétel), SELECT (oszlopok kiválasztása), ORDER BY (rendezés). LEKÉRDEZÉS esetén SELECT{*|m,m,…}FROM… [WHERE…] [GROUP BY…][HAVING…][ORDER BY…]
COUNT(*) az összes rekordot adja. Az autós példa ÁLTALÁNOS SZABÁLYOK az SQL nyelvre: Nem tesz különbséget a kis és nagybetűk között. A parancs ; -vel végződik. Csak a tizedespontot ismeri. Szöveg ’ ’ vagy ” ” közé, dátum # # közé írandó. Logikai igaz 1 , a hamis 0. A * az összes mezőnevet jelenti. COUNT(*) az összes rekordot adja.
Jelenítsük meg az Autó tábla összes rekordját és oszlopát ! SELECT *FROM auto;
SELECT rendszam, marka, evjarat ORDER BY marka, evjarat DESC; Válasszuk ki a rendszám, márka, évjárat oszlopokat márka, majd évjárat szerint úgy, hogy előbb legyenek a fiatalabb autók ! SELECT rendszam, marka, evjarat FROM auto ORDER BY marka, evjarat DESC;
Az első három ár szerint rendezve csökkenő sorrendben: SELECT TOP 3 * FROM auto ORDER BY ar DESC;
WHERE (szin="kék" AND evjarat In (1991,1993)); Adott évjáratú kék kocsik listázása: SELECT * FROM auto WHERE (szin="kék" AND evjarat In (1991,1993));
WHERE (rendszam Like "Z*" AND szin="fehér"); Z-vel kezdődő rendszámú fehér autók: SELECT * FROM auto WHERE (rendszam Like "Z*" AND szin="fehér");
A legdrágább, legolcsóbb, átlagos ár és összérték: SELECT MAX(ar) AS legdrágább, MIN(ar) AS legolcsóbb, SUM(ar) AS összesen, AVG(ar) AS átlagosan FROM auto;
A rendszám és a kor listázása: SELECT rendszam, 2005-evjarat AS kor FROM auto;
GROUP BY marka, evjarat; Márka és azon belül évjárat szerint csoportosított lista: SELECT marka, evjarat, AVG(ar) AS atlagár FROM auto GROUP BY marka, evjarat;
INSERT INTO auto ( rendszam, marka, szin, evjarat, ar ) Új autó bevitele: INSERT INTO auto ( rendszam, marka, szin, evjarat, ar ) VALUES ('RAJ476', 'Trabant', "szürke", 1993, 400);
Kék színű autók áremelése 20 %-kal: UPDATE auto SET ar = 1.2*ar WHERE szin="kék";
A szürke színűek törlése: DELETE * FROM auto WHERE szin=”szürke";
FROM auto WHERE marka="Opel"); Az Opelek átlagos áránál olcsóbb Opelek: SELECT rendszam, ar FROM auto WHERE marka="Opel" AND ar<(SELECT AVG(ar) FROM auto WHERE marka="Opel");
Azon autók, melyek ára nagyobb, mint bármely Ladáé: SELECT * FROM auto WHERE ar > ALL (SELECT ar FROM auto WHERE marka="Lada");
UJAUTÓ tábla elkészítése: CREATE TABLE ujautó(rendszam text(6), marka text(15),szin text(10), ar SHORT);
ADD COLUMN ujoszlop SHORT; Új oszlop hozzáadása: ALTER TABLE auto ADD COLUMN ujoszlop SHORT;
FROM auto WHERE (((auto.ar)<xxxx) AND ((auto.marka)="Suzuki")); xxxx Ft-nál olcsóbb Suzukik összértéke: SELECT Sum(auto.ar) AS SumOfar FROM auto WHERE (((auto.ar)<xxxx) AND ((auto.marka)="Suzuki"));
Az autók márkája és kora: SELECT auto.marka, Avg(2005-[evjarat]) AS kor FROM auto GROUP BY auto.marka;
GROUP BY auto.marka, auto.evjarat; Az autók átlagára márka és azon belül évjárat csoportosításban: SELECT auto.marka, auto.evjarat, Avg(auto.ar) AS AvgOfar FROM auto GROUP BY auto.marka, auto.evjarat;
Évjárat és márka kereszttábla átlagárakkal: TRANSFORM Avg(auto.ar) AS AvgOfar SELECT auto.evjarat FROM auto GROUP BY auto.evjarat PIVOT auto.marka;
WHERE (((1.5*[ar])<XXXX)); Azok a márkák, amelyek 50 %-al emelt ára kisebb XXXX ezer Ft-nál: SELECT auto.marka, auto.ar, 1.5*[ar] AS EMar FROM auto WHERE (((1.5*[ar])<XXXX));
TRANSFORM Count(auto.rendszam) AS CountOfrendszam SELECT auto.marka, Count(auto.[rendszam]) AS [A következő összege] FROM auto GROUP BY auto.marka PIVOT auto.evjarat;
WHERE (((auto.marka)="Opel"))))); Írassuk ki a legrégebbi Opel rendszámát,márkáját és évjáratát! SELECT auto.rendszam, auto.marka, auto.evjarat FROM auto WHERE (((auto.marka)="Opel") AND ((auto.evjarat)=(SELECT Min(auto.evjarat) AS MinOfevjarat WHERE (((auto.marka)="Opel")))));
WHERE (((auto.marka)="Suzuki"))))); A legolcsóbb Suzukinál kisebb áru autók rendszáma, márkája, ára: SELECT Min(auto.ar) AS MinOfar FROM auto WHERE (((auto.marka)="Suzuki")); (1800) SELECT auto.rendszam, auto.marka, auto.ar WHERE (((auto.ar)<(SELECT Min(auto.ar) AS MinOfar WHERE (((auto.marka)="Suzuki")))));
Validálás Megfelelő adattartalmat biztosít Ellenőrzés: Formai: Dátumértékek valódisága Numerikus adatok karakterei Tartalmi Intervallum ellenőrzés Egyediség ellenőrzése CDV (Checking Decimal Verify)
Adatok védelme Hálózatos felhasználás Több felhasználó hozzáférése Eszközök->adatvédelem: Jelszó Csoportos jogok Titkosítás Tranzakciók
Lehetőségek Excelben: Adatok->Érvényesítés Accesben Pascalban
Access… Adattípus Mezőtulajdonságok: Formátum Bemeneti maszk Alapértelmezett érték Érvényességi szabály Érvényességi szöveg Kötelező Nulla hosszúság engedélyezése
Azonosítók és képzési szabályaik
Személyi azonosító 11 jegyű jelsorozat 1: a nem, az évszázad és az állampolgárság azonosítása Állampolgárság 1899.12.31 után 1900.01.01. előtt született férfi nő magyar 1 2 3 4 nem magyar 5 6 7 8
1997.01.01. és 1999.12.31 között 1999.12.31 után született férfi nő 1 1999.12.31 után született férfi nő 1 2 3 4
8-10. jegy egy sorszám az azonos napon születettek között 2-7. jegy a születési év utolsó két jegye, a hónap és a nap kétjegyű sorszámát adja 8-10. jegy egy sorszám az azonos napon születettek között 11. jegy ellenőrző kód Összegezzük a jegyek és a sorszámaik szorzatát, majd vegyük a 11-el vett maradékot. Ahol ez 10, azok nem adhatóak ki. A sorszámozás 1997.01.01. előtt balról, utána jobbról történik.
Adóazonosító jel Tízjegyű számsor Az 1. jegy a 8 2.- 6. jegy a születési időpont és 1867.01.01 között eltelt napok száma 7 – 9. azonos napon születettek között kiosztott véletlen szám 10. Ellenőrző szám
A 10. jegy képzése Összegezzük a jegyek és a sorszámaik szorzatát, majd tekintjük a 11-el vett maradékot. Ahol ez 10, azok nem adhatóak ki.
TAJ szám 9 jegyű azonosító 1-8 folytonosan kiadott sorszám 9. jegy az ellenőrző CDV kód. A páratlan helyeken állókat 3-mal, a páros helyeken állókat 7-tel megszorozzuk, és a szorzatot összeadjuk. A CDV az összeg 10-es maradéka.
Vény azonosító Speciális, zárt rendszerben használt EAN 13 vonalkód. 2 – 6. jegyek az orvos azonosítója 8 – 12. folyamatos sorszám 13. Ellenőrző kód, az EAN 13-nak megfelelő
ISBN (International Standard Book Number) 10 jegyű azonosító 10 – 8. ország kód (Mo.: 963) 7 – 5. kiadó kódja 4 – 2. kiadvány azonosító 1. Ellenőrző kód: A sorszámmal vett szorzatokat összegezzük. 11-es maradékot kivonjuk 11-ből, ha az 1-nél nagyobb, egyébként 0 esetén 0, 1 esetén X
EAN 13 és az ISBN Az ISBN EAN 13 kóddal is befoglalható: 1 – 3. 978 jegyek mindig 4 – 12 az ISBN jegyek 13 EAN 13 ellenőrző, így az ISBN ellenőr nem kell
Bankkártyaszám és a Luhn algoritmus Balról jobbra haladva a páratlan sorszámúakat megszorozzuk 2-vel. Ha a szorzat értéke > 9, akkor kivonunk 9-t belőle. A számokat összegezzük. Ha a kapott érték 0-ra végződik, akkor helyes a bankkártyaszám.
Az EAN 13 vonalkód 13 numerikus karakter 1 – 2, vagy 1 – 3 a termék származási helye. Pl.: Mo. 599, Olasz: 80-83, belső használatra: 20-29 Következő 4 v. 5 a termék gyártója A további karakterek a 12-ig a terméket azonosítja 13. Ellenőrző kód
EAN 13 ellenőrző kód Paritásnak megfelelően 1-el illetve 3-mal szorozzuk az első 12 jegyet. A 13. jegy az a szám, ami a szorzatösszeget tízzel oszthatóvá egészíti ki. Az EAN 8 kód ua. EAN13 az első 5 jegy nélkül. Ell.: Az első 5 jegy 0.
Pascal megvalósítása Ellenor.pas Ellenor.exe
Tranzakció-kezelés
Fizikai tárolás, elérési mód