Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Kupcsikné F. Ilona: Adatbáziskezelés 1 ADATBÁZISKEZELÉS Kupcsikné Fitus Ilona "... n em akkor alkottál tökéleteset, ha már nem tudsz mit hozzátenni, hanem.

Hasonló előadás


Az előadások a következő témára: "Kupcsikné F. Ilona: Adatbáziskezelés 1 ADATBÁZISKEZELÉS Kupcsikné Fitus Ilona "... n em akkor alkottál tökéleteset, ha már nem tudsz mit hozzátenni, hanem."— Előadás másolata:

1

2 Kupcsikné F. Ilona: Adatbáziskezelés 1 ADATBÁZISKEZELÉS Kupcsikné Fitus Ilona "... n em akkor alkottál tökéleteset, ha már nem tudsz mit hozzátenni, hanem ha már nem tudsz mit elvenni belőle.„ (Saint-Exupéry)

3 Kupcsikné F. Ilona: Adatbáziskezelés 2 Adatbáziskezelés tematika adat, információ adatmodellek, adatbázisok; adatmodellek alapelemei relációs adatmodell funkcionális függőség; normalizált adatbázis az SQL nyelv létrehozás, karbantartás, lekérdezés, megszorítások, jogok, adatbázis-specifikáció

4 Kupcsikné F. Ilona: Adatbáziskezelés 3 ·távközlési szakemberek munkái (Shannon: A hírközlés matematikai elmélete) ·a mat-i problémák megoldására használt szg-ek összetett információk feldolgozására alk. gépek ·a genetikai információ hordozójának felfedezése ·az információ mint "érték" ·igény született intelligens adatbázisokra és azokat kezelő programokra ·adatmodellekben való gondolkodás Az információkezelés rövid története

5 Kupcsikné F. Ilona: Adatbáziskezelés 4 Az információ ugyanúgy a világegyetem fizikai valóságához tartozik, mint az anyag és az energia. Tiszta inf. Információ feldolgozó Jelentést hordozó inf. Pl. tiszta információ hordozói : tankönyv DNS-molekula számítógépes input adatok

6 Kupcsikné F. Ilona: Adatbáziskezelés 5 ADATBÁZISOK-ra való igény Adatbázis: adatoknak kapcsolataikkal együtt való ábrázolása, tárolása. Előnye: egyszerre sokan használhatják. Az adatok csak "egyszeresen" vannak tárolva. Adatbáziskezelő rendszer: szoftver, amellyel az adatbázist kezelni tudjuk. Két legfontosabb művelet: a létrehozás és visszakeresés Ennek megfelelően a nyelv részei: adatdefiníciós (létrehozás) adatkezelő (felvitel, módosítás, törlés, lekérdezés) adatbiztonság (hozzáférés)

7 Kupcsikné F. Ilona: Adatbáziskezelés 6 1. Formalista megközelítés gráfokkal való ábrázolás - a hierarchikus, hálós adatmodell elődje 2. Szemantikai megközelítés a modellt verbálisan, szavakkal írták le 3. Matematikai megközelítés matematikai struktúrák felhasználása - Codd relációs adatmodellje Adatmodell - próbálkozások :

8 Kupcsikné F. Ilona: Adatbáziskezelés 7 Az adatmodellek alapelemei EGYED TULAJDONSÁG KAPCSOLAT

9 Kupcsikné F. Ilona: Adatbáziskezelés 8 Az egyed : minden olyan dolog (objektum), ami minden más dologtól (objektumtól) megkülönböztethető. Például: DOLGOZÓ, AUTÓ, BETEG, ÜGYFÉL, CIKK, BIZONYLAT... · Az egyed egy konkrét értéke: előfordulás.

10 Kupcsikné F. Ilona: Adatbáziskezelés 9 A tulajdonság : az egyed belső szerkezete. Az egyedeket tulajdonságokkal (attribútumokkal) írjuk le. A dolgozó nevű egyed tulajdonságai például: név, dolgozószám, fizetés, adólevonás... · a tulajdonság értékeivel egy adott egyed konkrét értékét határozzuk meg.

11 Kupcsikné F. Ilona: Adatbáziskezelés 10 Amennyiben egy tulajdonság vagy tulajdonságok egy csoportja egyértelműen meghatározza, hogy az egyed melyik értékéről van szó, akkor ezeket együtt kulcsnak nevezzük. Pl. hallgatókód a HALLGATOban

12 Kupcsikné F. Ilona: Adatbáziskezelés 11 A kapcsolat: az egyed külső szerkezete. A kapcsolat az egyedek közötti viszony. Példa: VEVŐ-RENDELÉS, SZÁMLA-CIKK... · A konkrét értékek a kapcsolat előfordulásai.

13 Kupcsikné F. Ilona: Adatbáziskezelés 12 A kapcsolatok fajtái adatmodelltől függetlenül 1:1 kapcsolat 1:N kapcsolat N:M kapcsolat

14 Kupcsikné F. Ilona: Adatbáziskezelés 13 1.Egy-egy típusú kapcsolat : Az egyik egyedhalmaz mindegyik eleméhez a másik egyedhalmaznak pontosan egy eleme kapcsolódik. Például DOLGOZÓK : KÜLSŐK „alegyed”

15 Kupcsikné F. Ilona: Adatbáziskezelés 14 2.Egy-több típusú kapcsolat : Az A egyedhalmaz mindegyik eleméhez a B egyedhalmaznak több eleme is tartozik. Például VEVŐ : RENDELÉS

16 Kupcsikné F. Ilona: Adatbáziskezelés Több-több típusú kapcsolat : Az A egyedhalmaz minden eleméhez a B egyedhalmaz több eleme tartozhat és fordítva. Például TERMÉK : ALKATRÉSZ

17 Kupcsikné F. Ilona: Adatbáziskezelés 16 adatmodell Az adatmodell véges sok egyednek, azok véges számú tulajdonságainak és kapcsolataiknak a rendszere. adatbázis Az adatbázis véges sok egyedelőfordulás- nak, azok véges sok tulajdonságértékének és kapcsolatelőfordulásának az adatmodell szerint szervezett együttese.

18 Kupcsikné F. Ilona: Adatbáziskezelés 17 Három adatmodell létezik az alapelemek fizikai tárolásától függően egyedtulajd.kapcs. hálós, hierarchikus relációs objektumos objektum-relációs (vegyes adatmodell)

19 Kupcsikné F. Ilona: Adatbáziskezelés 18 A relációs adatmodell Az egyedet egy táblázattal adjuk meg. A táblázat oszlopai a tulajdonságok. Reláció: a tulajdonsághalmazok Descartes-szorzatának részhalmaza.

20 Kupcsikné F. Ilona: Adatbáziskezelés 19 A reláció matematikai értelemben: NÉV = {K,L,B, M} KOR = {21,16,35} NÉV x KOR = { [K,21], [K,16], [K,35], [L,21], [L,16], [L,35], [B,21], [B,16], [B,35], [M,21], [M,16], [M,35] } RELA1 = { [K,35], [L,21], [M,21] } RELA1  NÉV x KOR

21 Kupcsikné F. Ilona: Adatbáziskezelés 20 A tábla a reláció (R) oszlopai az attribútumok sorai a rekordok A relációs adatbázis rövid jelölése: R {A 1, A 2,..., A n } R {A 1, A 2,..., A n } ahol R a reláció neve, A i pedig egy attribútum. Legyen : A = {A 1,A 2,...,A n } Pl: SZEMÉLY {név, szüldát, lakhely}

22 Kupcsikné F. Ilona: Adatbáziskezelés 21Minta Vevő neveKelt Vevő címeHatáridő RENDELÉS cikkszám1cikknév1egysár1x db cikkszám2cikknév2egysár2y db Összérték aláírás, pecsét

23 Kupcsikné F. Ilona: Adatbáziskezelés 22 Rendelési bizonylatok nyilvántartása minden bizonylat kap egy rendelési számot (rendszám) egy vevő több rendelést is küldhet (vkód) RENDELÉS {rendszám, vkód, vevőnév, vevőcím, kelt, határidő, cikkszám, cikknév, egysár, rendmenny, összérték} a táblázat redundáns adatokat tartalmaz

24 Kupcsikné F. Ilona: Adatbáziskezelés 23 A reláció kulcsa Az A attribútumhalmaz egy K részhalmaza kulcs, ha 1.)a K értékei az R reláció mindegyik sorát egyértelműen meghatározzák, 2.) de ha egyetlen attribútumot is elhagyunk K- ból, ez már nem teljesül. pl. a RENDELÉS kulcsa: {rendszám, cikkszám} Aláhúzással jelöljük a reláció kulcsát. A kulcsot tehát ki kell tölteni! A NULL érték: nem létező, ismeretlen érték (az egész kifejezést ismeretlenné teszi!)

25 Kupcsikné F. Ilona: Adatbáziskezelés 24 Csoportosítás egyszerű kulcs: egyetlen attribútumból áll összetett kulcs: egyébként kulcsszerepű tulajdonság: legalább egy kulcsnak a része leíró tulajdonság: egyébként Például: A {szem_szám} egyszerű kulcs a DOLGOZÓ {szem_szám, név, fizetés} relációban, a {szem_szám, hónap} összetett kulcs a TÖRLESZTÉS {szem_szám, hónap, összeg} táblában. - a kulcs: egyedi - több egyedi kulcs lehet - az egyik egyedi: elsődleges

26 Kupcsikné F. Ilona: Adatbáziskezelés 25 Külső / idegen kulcs : az a tulajdonság (vagy több tulajdonság együttese), amely kulcsa egy másik relációnak. Törlesztésben Pl. a szem_szám a Törlesztésben külső kulcs. - lehet kulcsszerepű, de lehet másodlagos tulajdonság is - a kapcsolat hordozója Két reláció csak akkor áll kapcsolatban egymással, ha az egyik tartalmazza a másik kulcsát. Codd, Chen, Date munkássága

27 Kupcsikné F. Ilona: Adatbáziskezelés 26 JELÖLÉSEK vonalas E1E2 E1E2 Chen-féle 1N E1E2 „varjú-lábas” E1E2 „egyértelmű”

28 Kupcsikné F. Ilona: Adatbáziskezelés 27 ÁBRÁZOLÁS

29 Kupcsikné F. Ilona: Adatbáziskezelés 28 1.példa

30 Kupcsikné F. Ilona: Adatbáziskezelés 29 2.példa

31 Kupcsikné F. Ilona: Adatbáziskezelés 30 3.példa

32 Kupcsikné F. Ilona: Adatbáziskezelés 31 4.példa

33 Kupcsikné F. Ilona: Adatbáziskezelés 32 5.példa

34 Kupcsikné F. Ilona: Adatbáziskezelés 33 Funkcionális függőség Funkcionális függőség Legyen R{A 1, A 2..., A n } egy reláció: P, Q az A attribútumhalmaz részhalmazai. Azt mondjuk, hogy P funkcionálisan meghatározza Q-t (vagy Q funkcionálisan függ P-től), ha abból, hogy a reláció valamely két sora megegyezik a P halmazon, következik, hogy a két sor értékei megegyeznek a Q halmazon is. Jele:P  Q

35 Kupcsikné F. Ilona: Adatbáziskezelés 34 Példa: RENDELÉS {rendszám, vkód, vevőnév, vevőcím, kelt, határidő, cikkszám, cikknév, egysár, rendmenny, összérték} P = {rendszám}, Q = {vkód, kelt, határidő, összérték} esetén P  Q teljesül. Továbbá: {vkód}  {vevőnév, vevőcím} {cikkszám}  {cikknév, egysár} {rendszám, cikkszám}  {rendmenny}

36 Kupcsikné F. Ilona: Adatbáziskezelés 35 Megjegyzés A K kulcs funkcionálisan meghatározza a „kulcson kívüli” attribútumhalmazt. pl. {rendszám, cikkszám}  {vkód, vevőnév, vevőcím, kelt, határidő, cikknév, egysár, rendmenny, összérték} A K kulcs funkcionálisan meghatározza az egész attribútumhalmazt, tehát a tábla minden tulajdonsága függ a tábla kulcsától. K  A

37 Kupcsikné F. Ilona: Adatbáziskezelés 36 A kulcs definíciója a funkcionális függőség fogalmával: K kulcsa az R{A} relációnak, ha 1.) K  A 2.) Nincsen olyan Y valódi részhalmaza K-nak, amelyre Y  A teljesül.

38 Kupcsikné F. Ilona: Adatbáziskezelés 37 Függőségi család Egy adatbázisban lehet több olyan (P,Q) pár is, melyre P  Q. Ezek halmazát a reláció funkcionális függőségi családjának hívjuk és F-fel jelöljük. Kérdés : Ismert funkcionális függőségekből kikövetkeztethetők-e újabbak ? Válasz : Igen. Az ún. Armstrong-axiómák (szabályok) alapján.

39 Kupcsikné F. Ilona: Adatbáziskezelés 38 A funkcionális függőségek tulajdonságai 1.Reflexivitás Ha Q  P  A, akkor P  Q 2.Bővítés Ha P  Q és S  A, akkor P  S  Q  S 3.Tranzitivitás Ha P  Q, Q  S, akkor P  S

40 Kupcsikné F. Ilona: Adatbáziskezelés 39 A funkcionális függőségek tulajdonságai 4.Egyesítési szabály Ha P  Q, P  S, akkor P  Q  S 5.Pszeudotranzitivitási szabály Ha P  Q,T  Q  S, akkor P  T  S 6.Dekompozíciós szabály Ha P  Q és S  Q, akkor P  S

41 Kupcsikné F. Ilona: Adatbáziskezelés 40 Kérdés: egy X  Y függőség kikövetkeztethető-e egy F családból az Armstrong-axiómák alkalmazásával ? Válasz : igen. A lezárt fogalmának segítségével. Az X + (X lezártja F-re nézve) azon Q attribútumok halmaza, amelyre az X  Q függőség az Armstrong-axiómák segítségével F-ből kikövetkeztethető. A fenti kérdésre a válasz: Az X  Y függőség akkor és csak akkor következik egy F függőségi családból az Armstrong-axiómák alapján, ha az Y részhalmazaz X + -nak, azaz Y  X +.

42 Kupcsikné F. Ilona: Adatbáziskezelés 41 Példa RENDELÉS {rendszám, vkód, vevőnév, vevőcím, kelt, határidő, cikkszám, cikknév, egysár, rendmenny, összérték} relációban adott az F f. család: {rendszám}  {vkód, kelt, határidő, összérték} {vkód}  {vevőnév, vevőcím} {cikkszám}  {cikknév, egysár} {rendszám, cikkszám}  {rendmenny}

43 Kupcsikné F. Ilona: Adatbáziskezelés 42 Következik-e F-ből: {rendszám}  {vevőcím} A) {rendszám} lezártjának meghatározása B) {vevőcím} részhalmaza-e a lezártnak A) X (0) = {rendszám} X (1) = {rendszám}  {vkód, kelt, határidő, összérték} X (2) = {rendszám  vkód, kelt, határidő, összérték}  {vevőnév, vevőcím} X (3) = X (2)

44 Kupcsikné F. Ilona: Adatbáziskezelés 43 Tehát : {rendszám} + = {rendszám, vkód, kelt, határidő, összérték, vevőnév, vevőcím} B){vevőcím}  {rendszám} +  igaz. Azaz a kérdéses függőség származtatható volt a megadott függőségi családból.

45 Kupcsikné F. Ilona: Adatbáziskezelés 44 Relációk szétbontása Módszereket dolgoztak ki arra, hogy a relációk szétbontása veszteségmentes legyen (a funkcionális függőségek megmaradjanak). Cél: A redundancia megszűntetése.

46 Kupcsikné F. Ilona: Adatbáziskezelés 45 Speciális funkcionális függőségek részleges (nem teljes)rossz tranzitív (nem közvetlen)rossz

47 Kupcsikné F. Ilona: Adatbáziskezelés 46 Teljes függőség Legyen P, Q  A és P  Q. Q teljesen függ (funkcionálisan) P-től, ha Q a P egyetlen részhalmazától sem függ. Ellenkező esetben részleges a függőség. Példák: REND_TÉTEL {rendszam, cikkszam, darab, cikknév, vevő} TÖRLESZT {szem_szám, hónap, összeg, kelt, szem_név} LÁTOGATÁS {azonosító, dátum, időpont, téma, időtartam}

48 Kupcsikné F. Ilona: Adatbáziskezelés 47 Tranzitív függőség Az S tranzitíven függ P-től, ha létezik olyan Q  A, hogy P  Q, Q  S, de visszafelé nem igazak a függőségek. Példák: DOLGOZÓ {szemszám, név, osztkód, osztelnev} RENDELÉSFEJ {rendszám, vkód, vevőnév, vevőcím, kelt, határidő, összérték} LÁTOGATÓK {azonosító, név, cég, cégnév, cégcím,cégtel}

49 Kupcsikné F. Ilona: Adatbáziskezelés 48 Normálforma: az egyed szerkezeti állapota.

50 Kupcsikné F. Ilona: Adatbáziskezelés 49 R 0. normálformában van (0NF, vagy N1NF típusú), ha létezik olyan másodlagos attribútum, amely a kulcstól funkcionálisan független. … a táblázat akármelyik sorában vlmely tulajdonság többértékű

51 Kupcsikné F. Ilona: Adatbáziskezelés 50 R 1. normálformájú (1NF típusú), ha minden másodlagos tulajdonság funkcionálisan függ a kulcstól. … a táblázat minden sorában tulajdonságonként pontosan egy érték van

52 Kupcsikné F. Ilona: Adatbáziskezelés 51 Az előző példa 1NF-ben:

53 Kupcsikné F. Ilona: Adatbáziskezelés 52 R 2. normálformájú (2NF típusú), ha 1-es normálformában van, és minden másodlagos attribútuma a reláció bármely kulcsától teljesen függ. … a kulcstól egyik tulajdonság sem függ részlegesen BIZONYLATFEJ BIZONYLATTÉTEL Pl. BIZONYLATFEJ és BIZONYLATTÉTEL esete

54 Kupcsikné F. Ilona: Adatbáziskezelés 53 R 3. normálformájú (3NF típusú), ha 2-es normálformában van, és egyetlen másodlagos attribútuma sem függ tranzitíven valamely kulcstól. BIZONYLATFEJPARTNER Pl. BIZONYLATFEJ és PARTNER esete … a kulcstól közvetlenül függ minden tulajdonság

55 Kupcsikné F. Ilona: Adatbáziskezelés 54 Megjegyzések Ha az R kulcsa egyetlen attribútumból áll, akkor 2NF típusú. Ha nincsen R-ben másodlagos attribútum, akkor 2NF típusú. ÜGYELET {ki, mikor} A csupakulcs esete: ÜGYELET {ki, mikor} Több kulcsjelölt esete: SZÁMLATÉTEL {szlaszám, sorszám, cikkszám, mennyi}

56 Kupcsikné F. Ilona: Adatbáziskezelés 55 Normalizálás (normálforma dekompozíció): a kedvezőtlen normálformájú egyedet lebontjuk több kívánt normálformájú egyedre.

57 Kupcsikné F. Ilona: Adatbáziskezelés 56 Cél: a tárolási és karbantartási káosz megszüntetése Cél: a tárolási és karbantartási káosz megszüntetése …veszteségmentesen... Példán mutatjuk be…

58 Kupcsikné F. Ilona: Adatbáziskezelés 57 RENDELÉS {rendszám, cikkszám, vkód, vevőnév, vevőcím, kelt, határidő, cikknév, egysár, rendmenny, összérték} A fennálló f.függőségek: {rendszám}  {vkód, kelt, határidő, összérték} {vkód}  {vevőnév, vevőcím} {cikkszám}  {cikknév, egysár} {rendszám, cikkszám}  {rendmenny} 3 lépésben… RENDELÉS normalizálása

59 Kupcsikné F. Ilona: Adatbáziskezelés 58 RENDELÉS normalizálása RENDELÉS {rendszám, cikkszám, vkód, vevőnév, vevőcím, kelt, határidő, cikknév, egysár, rendmenny, összérték} Tábla2 (rendszám,vkód,vevőnév,vevőcím,kelt,határidő,összérték) Tábla3 (cikkszám, cikknév,egysár ) Tábla2 (rendszám,vkód,vevőnév,vevőcím,kelt,határidő,összérték) Tábla4 (vkód, vevőnév,vevőcím )

60 Kupcsikné F. Ilona: Adatbáziskezelés 59 REND_TETEL {rendszám, cikkszám, rendmenny} REND_FEJ {rendszám, vkód, kelt, határidő, összérték} CIKK {cikkszám, cikknév, egysár} VEVŐ {vkód, vevőnév, vevőcím} Tehát minden leíró teljesen és közvetlenül függ a saját kulcsától! RENDELÉS normalizálása CIKK VEVŐ REND_FEJ REND_TÉTEL

61 Kupcsikné F. Ilona: Adatbáziskezelés 60 Az 1NF-es RENDELÉSben fennálló anomáliák: MÓDOS. BŐVÍT. TÖRLÉS. rendszám | cikkszám | vkód | vevőnév | vevőcím | kelt | határidő | cikknév | egysár | rendmenny | összérték …

62 Kupcsikné F. Ilona: Adatbáziskezelés 61 MEGSZORÍTÁSOK Adatbázisbeli szabályok rendszerezése: Kulcsok megadása (elsődleges és egyediek) Külső kulcsok megadása Tulajdonságokra vonatk. korlátozások Önálló megszorítások (több sort / táblát érint) Triggerek (esemény váltja ki) beépítése Aktív elemként felügyelik a hivatkozási épséget, az adat-összefüggéseket, és az ügyvitelhez kötött korlátozásokat.

63 Kupcsikné F. Ilona: Adatbáziskezelés 62 Az ÉTTEREM adatbázis normalizálása A rendszer nagyvonalú ismertetése: Az étteremben különféle ételeket és italokat rendelhetünk, amelyeket bizonyos nyersanyagokból recept szerint készítenek el. A fogyasztás végén számla szerint fizetünk.

64 Kupcsikné F. Ilona: Adatbáziskezelés 63 Az adatbázis létrehozása Kiindulásképpen: RECEPT {azonosító, elnevezés, ár, tipus, tipnév, akód, név, egysár, mértegys, szüksmenny} SZÁMLA {szlaszám, dátum, azonosító, elnevezés, ár, rendmenny, érték, végösszeg} Lépések függőségek meghatározása kulcsok tisztázása normalizálás

65 Kupcsikné F. Ilona: Adatbáziskezelés 64 RECEPT kulcsa = { azonosító, akód } Igazak az alábbi funkcionális függőségek: {azonosító, akód}  {szüksmenny} {azonosító}  {elnevezés, ár, tipus, tipnév} {akód}  {név, egysár, mértegys}

66 Kupcsikné F. Ilona: Adatbáziskezelés 65 SZÁMLA kulcsa = {szlaszám, azonosító} Igazak az alábbi funkcionális függőségek: {szlaszám, azonosító}  {rendmenny} {szlaszám}  {dátum, végösszeg} {azonosító}  {elnevezés, ár}

67 Kupcsikné F. Ilona: Adatbáziskezelés 66 Megjegyzések érték = ár  rendmenny  számolható, nem tároljuk végösszeg =  érték  számlaszámra összegezve  számolható, de kerekítve tároljuk a pénzügyi mozgásokat

68 Kupcsikné F. Ilona: Adatbáziskezelés 67 A teljes függőségek alapján a RECEPT 3 relációra bomlik a SZÁMLA 3 relációra bomlik 1 reláció közös, hiszen 1:1 kapcsolatban állnak egymással (kizáró ok nélkül)

69 Kupcsikné F. Ilona: Adatbáziskezelés 68 ÉTLAP {azonosító, elnevezés, ár, tipus, tipnév} ANYAG {akód, név, egysár, mértegys} RECEPT {azonosító, akód, szüksmenny} SZÁMLAFEJ {szlaszám, dátum, végösszeg} ÉTLAP2 {azonosító, elnevezés, ár} SZÁMLATÉTEL{szlaszám, azonosító, rendmenny}

70 Kupcsikné F. Ilona: Adatbáziskezelés 69 A teljes függőségek felismerésével 2NF-ra hoztuk mindegyik táblát. Viszont van tranzitív függés az ÉTLAPban: {azonosító}  {tipus}és {tipus}  {tipnév}  {azonosító}  {tipnév} A többi tábla már 3NF -ban van.

71 Kupcsikné F. Ilona: Adatbáziskezelés 70 A tranzitív függőség megszüntetése ÉTLAP {azonosító, elnevezés, ár, tipus} FAJTA {tipus, tipnév}

72 Kupcsikné F. Ilona: Adatbáziskezelés 71 Kapcsolati ábra minden nyíl az N:1 kapcsolatot jelenti

73 Kupcsikné F. Ilona: Adatbáziskezelés 72 azonosító ÉTLAP elnevezés ár tipus tipus FAJTA tipnév akód ANYAG név egysár mértegys azonosító akód RECEPT szüksmenny szlaszám SZÁMLAFEJ dátum végösszeg szlaszám azonosító SZÁMLATÉTEL rendmenny

74 Kupcsikné F. Ilona: Adatbáziskezelés 73 Technikai adatok ÉTLAP van az ÉTLAP van logikai tipusú tulajdonsága SZÁMLAFEJ kifizet a SZÁMLAFEJ kifizet logikai tipusú tulajdonsága

75 Kupcsikné F. Ilona: Adatbáziskezelés 74 Bővíthetőség 1. Napi nyersanyag-beszerzés, készletek, kiadások: BESZERZÉS {akód,dátum,beár,menny} ANYAG {akód, név, egysár, mértegys, készlet} Megjegyzés: beszerzés bizonylatolása...

76 Kupcsikné F. Ilona: Adatbáziskezelés 75 Bővíthetőség 2. Alkalmazottak nyilvántartása: SZEMÉLY {kódszám,neve, poszt} BEOSZTÁS {poszt, jelentés} CSAPAT{dátum, kódszám}

77 Kupcsikné F. Ilona: Adatbáziskezelés 76 Bővíthetőség 3. Pincérek pontos munkavégzésének követése: {dátum, sorszám}  {kódszám} ahol a sorszám az asztal egyedi azonosítója Megjegyzés: nem igaz viszont, hogy a dátum és kódszám meghatározná a sorszámot

78 Kupcsikné F. Ilona: Adatbáziskezelés 77 Az új egyedek a következők ASZTAL {sorszám,hányfős} KISZOLGÁL {dátum,sorszám,kódszám} ezért SZÁMLAFEJ {szlaszám, dátum, végösszeg, sorszám}

79 Kupcsikné F. Ilona: Adatbáziskezelés 78 A végleges adatbázis ábrázolása (3 részletben, majd egy áttekintő ábra)

80 Kupcsikné F. Ilona: Adatbáziskezelés 79 azonosító ÉTLAP elnevezés ár tipus van tipus FAJTA tipnév akód ANYAG név egysár mértegys készlet azonosító akód RECEPT szüksmenny szlaszám SZÁMLAFEJ dátum sorszám végösszeg kifizet szlaszám azonosító SZÁMLATÉTEL rendmenny

81 Kupcsikné F. Ilona: Adatbáziskezelés 80 akód ANYAG név egysár mértegys készlet akód dátum BESZERZÉS beár menny

82 Kupcsikné F. Ilona: Adatbáziskezelés 81 szlaszám SZÁMLAFEJ dátum sorszám végösszeg kifizet kódszám SZEMÉLY neve poszt poszt BEOSZTÁS jelentés dátum kódszám CSAPAT sorszám ASZTAL hányfős dátum sorszám KISZOLGÁL kódszám

83 Kupcsikné F. Ilona: Adatbáziskezelés 82 Áttekintő kapcsolati ábra FAJTA ÉTLAP SZTÉTEL ASZTAL RECEPTANYAGBESZERZ SZFEJSZEMÉLYBEOSZT KISZOLG CSAPAT

84 Kupcsikné F. Ilona: Adatbáziskezelés 83 Egyéb gondolatok asztal megbontása műszakban dolgozás részalkatrészek beépülése (hurokmentes fa-szerkezet) a beépülés megjelenítése (bináris fa)

85 Kupcsikné F. Ilona: Adatbáziskezelés 84 ADATBÁZIS - TERVEZÉS PÉLDÁK

86 Kupcsikné F. Ilona: Adatbáziskezelés 85 1.példa: OKTATÁS Egy iskola folyó tanévében a diákok és tanárok viszonyát tartjuk nyilván értelemszerű törzsadatokkal az órarend kialakításáig. Az egyes tantárgyakat osztályoknak tanítják a tanárok. Több párhuzamos osztály lehet. Egy tanár több tárgyat is taníthat és ford. Ugyanannak az osztálynak több tárgyat ill. egy tárgyat több osztálynak is taníthat ugyanaz a tanár. A nap és óra sorszámozott típusú; a tantárgy kódja beszédes.

87 Kupcsikné F. Ilona: Adatbáziskezelés 86 Adatbázis-részlet DIÁK {azonosító, név, osztály,...} TANÁR {kód, név, szoba} TANTÁRGY {tant, megnevezés, heti_óraszám} TANÍT {osztály, tant, kód} ÓRAREND {osztály, nap, óra, tant}

88 Kupcsikné F. Ilona: Adatbáziskezelés 87 Megoldandó: (bevezető példa) Kapcsolatok felállítása! Az osztály maradhat-e metszet-tulajdonság? Nem ellenőrizhető szabályok felismerése: A párhuzamos osztályoknak ugyanaz a tematikájuk További korlátozások beépítése Osztályfőnökök nyilvántartása (+ heti 1 óra) Lehetnek tagozatos ill. sima osztályok évfolyamon belül Mindenki évvégi osztályzatát tároljuk tantárgyanként Új tanév indítása a régi adatok megőrzésével Bármely tantárgyból szakkör indítható valamely tanárral órarendbe illesztve, melyre a tárgyat tanuló diákok járhatnak

89 Kupcsikné F. Ilona: Adatbáziskezelés 88 2.példa: TANFOLYAMSZERVEZÉS Egy intézmény rövid tanfolyamokat hirdet. Valamely típusú tanfolyamból több is indulhat. A konkrét tanfolyamnak van egy oktatója, tandíja, kezdete, helyszine és sok hallgatója; az azonos típusú tanfolyamoknak neve, óraszáma. A hallgatók jelentkezőkből lesznek, ha befizettek. Oktató is lehet valahol hallgató. Egy oktató az általa vállalt tipusú tanfolyamokat különböző minősítéssel és tiszteletdíjért tartja meg.

90 Kupcsikné F. Ilona: Adatbáziskezelés 89 Az adatbázis TANFOLYAM {tanfszám, típus, indul, kezdés, terem, tandíj, oktatókód} TIPUS {típus, megnevezés, óraszám} SZEMÉLY {kód, név, cím, tel, végzettség} HALLGAT {hallgatókód, tanfszám, fizetve} OKTAT {oktatókód, típus, minősítés, tiszteletdíj}

91 Kupcsikné F. Ilona: Adatbáziskezelés 90 tipus TIPUS megnev óraszám tanfszám TANFOLYAM tipus indul kezdés terem oktkód tandij kód SZEMÉLY név cím tel végz hallgkód tanfszám HALLGAT fizetve oktkód tipus OKTAT minősít tisztdij tipus oktkód tipus hallgkód tanfszám ti p u s oktkód

92 Kupcsikné F. Ilona: Adatbáziskezelés 91 Funkcionális függőségek eldöntése {tanfszám} {megnev, óraszám} {hallgkód} {végz} {hallgkód, tipus} {tandij}  {név, cím, tanfszám} {fizetve}  {tanfszám, hallgkód} {óraszám} {tanfszám} {tisztdij} {indul, kezdés,oktkód} {minősít} 

93 Kupcsikné F. Ilona: Adatbáziskezelés 92 Lehetséges lekérdezések hallgatói létszámok tanfolyamtipusonként oktatóknak kifizetett tiszteletdij összege a legtöbbször tartott tanfolyamtipus a legkevesebb létszámmal indult tanfolyam oktatók toplistája tanfolyamtipusonként

94 Kupcsikné F. Ilona: Adatbáziskezelés 93 3.példa: SZERVIZ Egy márkabolt szervizében fogadjuk a reklamációkat. A márkabolt különböző cikkeket tart, melyekből konkrét gyártási számmal rendelkező darabokat ad el. A vevő értelemszerűen akár többször is reklamálhat. (javítás / csere / visszafizetés igényével).

95 Kupcsikné F. Ilona: Adatbáziskezelés 94 Adatbázis felépítése „ A márkabolt különböző cikkeket tart, „ CIKK {cikksz, megnev, garancia, egysár} „ melyekből konkrét gyártási számmal rendelkező darabokat ad el. „ ELADÁS {cikksz, gyártsz, kelt} „A vevő„ VEVŐ {vkód, név, cím} ELADÁS {cikksz, gyártsz, kelt, vkód} „többször is reklamálhat (igények)„ REKLAM {cikksz, gyártsz, dátum, igény, telj}

96 Kupcsikné F. Ilona: Adatbáziskezelés 95 Kapcsolati ábra CIKK ELADÁS VEVŐ REKLAM cikksz vkód cikksz,gyártsz

97 Kupcsikné F. Ilona: Adatbáziskezelés 96 Bővítések A cikkek ára néha megváltozik: ÁRVÁLT {meddig, cikksz, régi_ár} CIKKbe aktuális árat felvenni + ÁRVÁLTOZÁS táblát tartani: ÁRVÁLT {meddig, cikksz, régi_ár}Vagy: ÁRAK {mióta, cikksz, új_ár} Cserélni csak ugyanolyan cikkre lehet: Az új tábla kulcsai és külső kulcsa! CSERE {cikksz, gyártsz, mikor, új_gyártsz} - több kulcsjelölt; - további megszorítások

98 Kupcsikné F. Ilona: Adatbáziskezelés 97 4.példa: SZÁLLODA Egy szálloda forgalmára készítünk adatbázist az alábbi bemenő bizonylat alapján: megrendelő adatai Kelt SZOBAFOGLALÁS 3 darabkétágyas zuhanyzósdátumtól - ig 1 darabegyágyas fürdőszobásdátumtól - ig Visszajelzést kérünk. (aláírás, pecsét)

99 Kupcsikné F. Ilona: Adatbáziskezelés 98 Adatbázis elkészítése szoba (szobaszám) - egy szobatípusra több szoba megrendelési bizonylat (iktatószám) megrendelő partner (azonosító) - mint cég, intézmény, magánszemély, utazási iroda A megrendelési bizonylat tartalma helyett a lefoglalást tároljuk!

100 Kupcsikné F. Ilona: Adatbáziskezelés 99 Adatbázis sztip SZTIPUS ár ágy szszám SZOBA sztip azon PARTNER név cím tel iktszám MEGREND azon kelt iktszám sztip TARTALOM darab tól ig

101 Kupcsikné F. Ilona: Adatbáziskezelés 100 Használható adatbázis sztip SZTIPUS ár ágy szszám SZOBA sztip azon PARTNER név cím tel iktszám MEGREND azon kelt iktszám szszám FOGLALT tól ig

102 Kupcsikné F. Ilona: Adatbáziskezelés 101 Végleges adatbázis sztip SZTIPUS ár ágy szszám SZOBA sztip azon PARTNER név cím tel iktszám MEGREND azon kelt szszám tól FOGLALT ig iktszám

103 Kupcsikné F. Ilona: Adatbáziskezelés példa: RAKTÁR Egyetlen raktárból bizonylatolva cikkeket vételezhetnek vagy adhatnak le valamilyen osztály dolgozói. Módosítsuk a meglevő adatbázis szerkezetét a több raktár - benne mindenféle cikk – lehetőségének nyilvántartásával!

104 Kupcsikné F. Ilona: Adatbáziskezelés 103 Régi adatbázis dkód DOLGOZÓ név oszt bizszám BIZFEJ mozgás dkód kelt bizszám cikksz BIZTÉTEL darab cikksz CIKK megnev egysár készlet

105 Kupcsikné F. Ilona: Adatbáziskezelés 104 Új adatbázis 1. dkód DOLGOZÓ név oszt bizszám BIZFEJ mozgás dkód kelt bizszám cikksz BIZTÉTEL darab cikksz CIKK megnev egysár készlet razon cikksz KÉSZLET készlet razon RAKTÁR cím vezeti razon

106 Kupcsikné F. Ilona: Adatbáziskezelés 105 Új adatbázis 2. dkód DOLGOZÓ név oszt bizszám BIZFEJ mozgás dkód kelt bizszám cikksz BIZTÉTEL darab cikksz CIKK megnev egysár készlet razon cikksz KÉSZLET készlet razon RAKTÁR cím vezeti razon

107 Kupcsikné F. Ilona: Adatbáziskezelés példa: FORGALOM Eladás / Beszerzés / Selejtezés tipusú forgalom tételes nyilvántartása a cél (Zöldséges) Vannak ÁRUk és SZÁLLITÓk, a VEVŐk nem tárolódnak. A kimutatások a 3 tipusú forgalom adataiból épülnek fel. Lemondunk az alegyedek létrehozásáról!

108 Kupcsikné F. Ilona: Adatbáziskezelés 107 Adatbázis ÁRU {cikksz, név, eár, bár, készl, me} SZÁLLITÓ {szkód,...} ELADÁS {mikor, miből, mennyit, mennyiért(e_ár)} kitől BESZERZÉS {mikor, miből, mennyit, mennyiért(input), kitől} SELEJTEZÉS {mikor, miből, mennyit, mennyiért(b_ár)} FORGALOM {tip, kelt, cikksz, menny, ár, szkód} kulcs? FORGTETEL kulcsa : bizszám, sorszám Archív?

109 Kupcsikné F. Ilona: Adatbáziskezelés példa: KÖNYVTÁR Egy könyvtár beszerez új könyveket (ugyanabból a könyvből több példányt) selejtez használtabb példányokat (bizonyos idő elteltével automatikusan vagy direkt) karbantartja, ezért le tudja kérdezni a könyvek adatait, mint kölcsönözhetőség, műfaj, kiadó, kiadás éve, egy vagy több szerző, kezdő és aktuális darabszám, egységár és szorzó, kölcsönzések javasolt száma, recenzió, néhány utalás, mely sorozat része kezeli az olvasók alapadatait, mint : születési év, foglalkozás, név, cím

110 Kupcsikné F. Ilona: Adatbáziskezelés 109 Egy könyvtár ezenkívül kölcsönzéseket bonyolít, azaz : –kiad, visszavételez, felszólít (2-szer; a 3. már büntetés) –előjegyzést vesz fel, értesít statisztikai kimutatásokat végez legalább évente forgalmi listákat hoz le adott szempontok szerint bármilyen sűrűséggel A fentiekből látszik, hogy egy bizonyos könyv n számú példányát csak a kölcsönzéskor különböztetjük meg.

111 Kupcsikné F. Ilona: Adatbáziskezelés 110 A rendszer ismertetése 1 A beszerzés bizonylatolása a raktárnyilvántartó rendszer része, itt most inputként kapjuk a katalógusszámot a példányszámmal. (Vsz. év+sorszám alakban osztanak katalógusszámot.) Nálunk történik a konkrét példány azonosítása, azaz a katalógusszám kibővítése alkatalógusszámmal (sorszám: 1-től példányszámig). Egy bizonyos könyvet több szerző írhatott, és egy szerző több könyvet is írhatott. Egy bizonyos könyv utalhat több fogalomra és fordítva. Bizonyos könyvnek egy kiadója van, egyetlen sorozatnak a része, és fordítva nem igaz.

112 Kupcsikné F. Ilona: Adatbáziskezelés 111 A rendszer ismertetése 2 Ha bizonyos könyv egyetlen példánya sincs bent, előjegyezzük az olvasót, és érkezési sorrendben próbáljuk kielégíteni a kérését. Automatikus selejtezés - vizsgálat időszakosan történik, de a konkrét példány állapota is vezethet selejtezéshez. Egy olvasónak egy foglalkozása van, de ugyanaz a foglakozása több olvasónak is lehet. A kintlevőségek számát ne a rendszer korlátozza. A tagdíj befizetését nem kötelező bizonylatolni, hiszen a kölcsönzőívbe pecsételés jelzi az azévi befizetést.

113 Kupcsikné F. Ilona: Adatbáziskezelés 112 A rendszer ismertetése 3 A lejáratvizsgálat abból áll, hogy konstansként kezelt változók ismeretében (pl. 30 napos kölcsönzési idő, a felszólítások - számuk 2 - további 15 napot jelentenek, de a 3. már a büntetéskiírás) ellenőrizzük a kölcsönzési dátum óta eltelt időt. Ha a példány elveszett, kikerül a kölcsönözhetők közül. A büntetés nagysága = egységár x szorzó, amiről értesítést küldünk (, de az összeg beérkezését a pénzügyi osztály figyeli).

114 Kupcsikné F. Ilona: Adatbáziskezelés 113 Azonosítók katalaz „eszmei” könyv alkatalegyetlen példánya valamely könyvnek kiadóadott kiadó sorozatadott sorozat fogalomutalásbeli fogalom szerzőkonkrét szerző olvasóegy olvasó (kölcsönzőív jelzőszáma) foglalkegyfajta foglalkozás műfajegyetlen szabvány. karakter (0 - 9)

115 Kupcsikné F. Ilona: Adatbáziskezelés 114 Igazak az alábbi függőségek 1 {katal}  {cím, kiadó, kiadév, műfaj, kezdődarabszám, aktuális darabszám, egységár, szorzó, max kölcs.száma, recenzió, sorozat, kölcsönözhetőség} {katal, alkatal}  {kikölcsönözve, akt. kölcs. száma} (ha megvan) {katal, alkatal}  {kelt, selejt/lopott}(ha nincs meg)

116 Kupcsikné F. Ilona: Adatbáziskezelés 115 Igazak az alábbi függőségek 2 {kiadó}  {megnevezés} {sorozat}  {elnevezés} {szerző}  {név} {katal, szerző}  {katal, szerző} {fogalom}  {hosszúnév} {katal, fogalom}  {katal, fogalom}

117 Kupcsikné F. Ilona: Adatbáziskezelés 116 Igazak az alábbi függőségek 3 {olvasó}  {név, cím, szület.év, foglalk} {foglalk}  {elnevezés} {olvasó, katal, alkatal, dátum}   {visszahozatal dátuma, felszólítások száma} {olvasó, katal}  {előjegyzés dátuma}

118 Kupcsikné F. Ilona: Adatbáziskezelés 117 Az adatbázis (1.rész) KÖNYV {katal, cím, kiadó, kiadév, műfaj, kezd_db, akt_db, egys_ár, szorzó, max_kölcs, recenzió, sorozat, kölcs_h} PÉLDÁNY { katal, alkatal, kikölcs, akt_kölcs} NINCS {katal, alkatal,kelt, sel_lop}

119 Kupcsikné F. Ilona: Adatbáziskezelés 118 Az adatbázis (2.rész) KIADÓ {kiadó, megnevezés} SOROZAT {sorozat, elnevezés} KIMITIRT {katal, szerző} SZERZŐ {szerző, név} UTALÁS {katal, fogalom} FOGALOM {fogalom, hosszúnév}

120 Kupcsikné F. Ilona: Adatbáziskezelés 119 Az adatbázis (3.rész) OLVASÓ {olvasó, név, cím, szül_év, foglalk} FOGLALKOZÁS {foglalk, elnevezés} KÖLCSÖNZÉS {olvasó, katal, alkatal, dátum, visszahoz_dát, felszólít} ELŐJEGYZÉS {olvasó, katal, előjegyz_dát}

121 Kupcsikné F. Ilona: Adatbáziskezelés 120 KAPCSOLATOK KÖNYV PÉLDÁNY NINCSKIADÓSOROZATKIMITIRT UTALÁS SZERZŐ FOGALOM KÖLCSÖNZ OLVASÓ FOGLALK ELŐJEGYZ ? ? ?

122 Kupcsikné F. Ilona: Adatbáziskezelés 121 Folyamatok 1 Beszerzésnél nemcsak a KÖNYV és a PÉLDÁNY bővülhet, hanem a KIADÓ, a SOROZAT, a KIMITIRT és a SZERZŐ, az UTALÁS és a FOGALOM is

123 Kupcsikné F. Ilona: Adatbáziskezelés 122 KÖNYVKÖNYV

124 Kupcsikné F. Ilona: Adatbáziskezelés 123 PÉLDÁNYPÉLDÁNY

125 Kupcsikné F. Ilona: Adatbáziskezelés 124 KIADÓKIADÓ SOROZATSOROZAT

126 Kupcsikné F. Ilona: Adatbáziskezelés 125 SZERZŐSZERZŐ

127 Kupcsikné F. Ilona: Adatbáziskezelés 126 KIMITIRTKIMITIRT

128 Kupcsikné F. Ilona: Adatbáziskezelés 127 FOGALOMFOGALOM

129 Kupcsikné F. Ilona: Adatbáziskezelés 128 UTALÁSUTALÁS

130 Kupcsikné F. Ilona: Adatbáziskezelés 129 Folyamatok 2 Kölcsönzéskor - kivételezésnél a KÖLCSÖNZÉSen túl az OLVASÓ és a FOGLALKOZÁS is bővülhet; módosul egy PÉLDÁNY-rekord; az ELŐJEGYZÉSben pedig lehet törlés; - visszahozatalnál csak módosítás történik a KÖLCSÖNZÉS és a PÉLDÁNY relációkban; - előjegyzésnél az ELŐJEGYZÉS bővül;

131 Kupcsikné F. Ilona: Adatbáziskezelés 130 KÖLCSÖNZÉSKÖLCSÖNZÉS PÉL DÁ NY

132 Kupcsikné F. Ilona: Adatbáziskezelés 131 OLVASÓOLVASÓ FOGLALKFOGLALK

133 Kupcsikné F. Ilona: Adatbáziskezelés 132 KÖLCSÖNZÉSKÖLCSÖNZÉS PÉL DÁ NY

134 Kupcsikné F. Ilona: Adatbáziskezelés 133 ELŐJEGYZELŐJEGYZ PÉLDÁNYPÉLDÁNY

135 Kupcsikné F. Ilona: Adatbáziskezelés 134 Folyamatok 3 Selejtezésnél a NINCS bővül, a PÉLDÁNYban törlünk, a KÖNYVben módosítunk

136 Kupcsikné F. Ilona: Adatbáziskezelés 135 NINCSNINCS KÖ NY V PÉLDÁNYPÉLDÁNY

137 Kupcsikné F. Ilona: Adatbáziskezelés 136 Folyamatok 4 Lejáratvizsgálatkor a felszólítások száma módosulhat a KÖLCSÖNZÉSben; a 3. felszólítás esete okoz további adatmozgást, mégpedig a NINCSben bővítést, a PÉLDÁNYban törlést és a KÖNYVben módosítást.

138 Kupcsikné F. Ilona: Adatbáziskezelés 137 KÖ L CS ÖN Z ÉS NINCSNINCS

139 Kupcsikné F. Ilona: Adatbáziskezelés 138 Folyamatok 5 A többi lekérdezés nem okoz adatmozgást A Törzsek karbantartása értelemszerűen történik

140 Kupcsikné F. Ilona: Adatbáziskezelés 139 Példa lekérdezésre 1 SZERZŐ SZERINTI KATALÓGUS szerző1 - szerző2 könyvcímA katalszámx. szerző2 - szerző1 könyvcímA katalszámx.

141 Kupcsikné F. Ilona: Adatbáziskezelés 140 Példa lekérdezésre 2 AZ EGYES MŰFAJOK OLVASOTTSÁGA FOGLALKOZÁSOK SZERINTI BONTÁSBAN fogl1 fogl2. fogl n műfaj0 műfaj1 műfaj2... műfaj9

142 Kupcsikné F. Ilona: Adatbáziskezelés 141 Adatbázis bővítési FELADATOK FUTÁR KELLÉKES tov. ld. Példatár

143 Kupcsikné F. Ilona: Adatbáziskezelés 142 Adott futárszolgálat nyilvántartását végezzük a fővárosban. Bizonyos cégek, magánemberek, intézmények a partnereink, akik kisebb sürgős küldemények más partnerhez való eljuttatását bízzák a szolgálatra. A szolgálat minden egyes küldeményt a megrendelő partner megbízásából partnertől partnernek szállíttat valamelyik futárával, akit telefonon ér el. FUTÁRFUTÁR Bővítés: A futárok a szolgálat valamelyik motorjával teljesítsenek szolgálatot. Egy futár nem mindig ugyanazzal a motorral jár. rend_szám MOTOR műsz_adat1 … kelt hánytól f_szám DOLGOZIK rend_szám hányig DOLGOZIK másik kulcsa: {kelt,hánytól,rend_szám}

144 Kupcsikné F. Ilona: Adatbáziskezelés 143 KE LL ÉK ES Adott színház egyetlen terméhez az egyes színházi darabok kellékeit tartjuk nyilván. Ilyenek pl. a korabeli bútorok, fegyverek, kosztümök, poharak esetleg ételek, melyeket az egyes színházi darabok konkrét előadásain használnak. A kellékekből több példány is rendelkezésre állhat, de ezeket a frissítésben megfogalmazott előadásszám után cserélni, javítani, tisztítani kell. Azt, hogy az egyes példányokat a legutolsó frissítés óta már hányszor használták, a számlálóban gyűjtjük. Bővítés: A konkrét kellékek közül a kosztümök méreteit is tartsuk nyilván. Az egyes darabok szereplőinek ruha-, cipőméretét is tárolni kell; valamint a napi szereposztást. PÉLDÁNY + { [méret] } SZÜKSÉGES + { [szerep] } + SZEREP {szerep, megnevezés} + SZÍNÉSZ {sz_kód, név, kor, nem, r_méret, c_méret} + SZEREPEL {darab, variáció, szerep, sz_kód} ELŐADÁS + {variáció}

145 Kupcsikné F. Ilona: Adatbáziskezelés 144 AZ SQL NYELV SQL =STRUCTURED QUERY LANGUAGE a relációs adatbáziskezelő nyelvek lekérdezési lehetősége a relációs algebra műveletein alapszik

146 Kupcsikné F. Ilona: Adatbáziskezelés 145 Relációs adatbáziskezelő nyelvek 1976, IBM: SEQUEL, SQL (1976) ORACLE, INFORMIX 1986-os SQL-szabvány: alaputasítások 1989-es SQL-szabvány: dinamikus SQL 1990-tõl OOP hatás SYBASE: hálózati munkára alk. adatbázis „metaadatbázis” (programozó által definiált adattípus, kulcsdefiniálás, tárolt eljárások és triggerek)

147 Kupcsikné F. Ilona: Adatbáziskezelés 146 4GL hatás INFORMIX: képernyõtervezõ és nyomtatási fejlesztõeszköz Ügyfél-kiszolgálói felépítés hatása: adatbázis-gép programozása (SQL alapon) SQL-változatok: DB2, MS SQL Server, Oracle,..., MySQL,… Relációs adatbáziskezelő nyelvek

148 Kupcsikné F. Ilona: Adatbáziskezelés 147 ABKR-rel szemben támasztott elvárások: 1.Tegye lehetővé a felhasználó számára új adatbázis létrehozását. 2.Engedje meg a felhasználónak az adatok lekérdezését, módosíthatóságát. 3.Támogassa nagy mennyiségű adat hosszú ideig való tárolását, garantálja az adatok biztonságát, és tegye lehetővé a hatékony adathozzáférést. 4.Felügyelje a több felhasználó által egyidőben történő adathozzáféréseket, és ezek ne vezessenek az adatok következetlenné válásához.

149 Kupcsikné F. Ilona: Adatbáziskezelés 148 Az 1. szabvány SQL nyelv elemei

150 Kupcsikné F. Ilona: Adatbáziskezelés 149 Alapelemek Az SQL táblákat (relációkat kezel). (Elnevezésük: TABLE.) A tábla attribútumait oszlopoknak nevezzük, melyek oszlopazonosítóját, típusát és hosszát a tábla definiálásakor adjuk meg. A táblák névvel ellátott együttese adatbázis (DATABASE).

151 Kupcsikné F. Ilona: Adatbáziskezelés 150 Táblák az SQLben Adattábla Eredménytábla Virtuális tábla Indextábla Szinonima-tábla

152 Kupcsikné F. Ilona: Adatbáziskezelés 151 Oszloptípusok CHAR(n) INTEGER DECIMAL(m,n) vagy NUMERIC(m,n) FLOAT(n) vagy REAL DATE [LOGICAL] és további, nem általános típusok

153 Kupcsikné F. Ilona: Adatbáziskezelés 152 Az adatbázis létrehozása, törlése CREATE DATABASE adatbázisnév; Létrehozza egy nevű könyvtárban az adatbázis összes katalógustábláját DROP DATABASE adatbázisnév; Törli a lezárt adatbázist

154 Kupcsikné F. Ilona: Adatbáziskezelés 153 Adatbázis megnyitása,lezárása START DATABASE adatbázisnév; Megnyitja az adatbázist (egyszerre csak egy aktív) STOP DATABASE; Lezárja az aktív adatbázist

155 Kupcsikné F. Ilona: Adatbáziskezelés 154 ISKOLA ETKEZESSEGELYTAGSAG TANULO NAPIDIJJOGCIMKOR ld. Példatár

156 Kupcsikné F. Ilona: Adatbáziskezelés 155 Adattábla definiálása CREATE TABLE táblanév (oszlopnév adattípus (adathossz) [,oszlopnév adattípus (adathossz)]...); a felsorolt oszlopokkal létrehozza a táblát az adott néven Egy adatbázison belül a tábla-nevek különböznek.

157 Kupcsikné F. Ilona: Adatbáziskezelés 156 SZEMELY{kod,nev,nem,anya,apa} (ez a tábla nem tartozik az ISKOLA adatbázishoz)

158 Kupcsikné F. Ilona: Adatbáziskezelés 157 A tábla módosítása, törlése ALTER TABLE táblanév ADD / DROP (oszlopnév adattípus (adathossz)); Táblához hozzáadni vagy elvenni lehet oszlopokat. DROP TABLE táblanév; A tábla kitörlése az adatbázisból

159 Kupcsikné F. Ilona: Adatbáziskezelés 158 Új sorok elhelyezése az adattáblába INSERT INTO táblanév [ (oszlopnév-lista) ] VALUES (értéklista); A tábla felsorolt oszlopaiba az értéklista elemeit helyezi el. Alapértelmezés: minden oszlop.

160 Kupcsikné F. Ilona: Adatbáziskezelés 159 Sorok beszúrása SZEMELY-be :

161 Kupcsikné F. Ilona: Adatbáziskezelés 160 Sorok beillesztése másik táblából INSERT INTO táblanév [oszloplista] SELECT  FROM mástábla; ahol SELECT  FROM mástábla a mástáblá-ból történő lekérdezés egy E-táblája

162 Kupcsikné F. Ilona: Adatbáziskezelés 161 Adatsor módosítása a táblában UPDATE táblanév SET oszlop1=újérték1, …· [WHERE feltétel]; WHERE nélkül minden sorra végrehajtódik

163 Kupcsikné F. Ilona: Adatbáziskezelés 162 Sorok törlése a táblából DELETE FROM táblanév [WHERE feltétel]; WHERE nélkül minden sorra végrehajtódik

164 Kupcsikné F. Ilona: Adatbáziskezelés 163 Lekérdezés adattáblákból A lekérdezés során egy úgynevezett eredménytábla (E-tábla) jön létre. A SELECT paranccsal az E-tábla a végrehajtás során lépésenként alakul ki. A szelekciókban további belső SELECTek lehetnek.

165 Kupcsikné F. Ilona: Adatbáziskezelés 164 A SELECT parancs SELECT... az E-tábla leendő oszlopai FROM... tábla / táblák felsorolása [WHERE...] sor-feltétel [GROUP BY... csoportosítás [HAVING...] ] szűrés csoportokra [ORDER BY...] az E-tábla rendezése [SAVE TO TEMP...];az E-tábla megőrzése 2 SELECT között: [UNION...] E-táblák összefűzése, hz.elm. unió-ja

166 Kupcsikné F. Ilona: Adatbáziskezelés 165 A SELECT parancs végrehajtása FROM... [Descartes-szorzat] [WHERE...] szelekció [GROUP BY... csoportosítás (rendezés+kontrollváltás) [HAVING...] ] csoportok szelekciója SELECT... projekció [ORDER BY...] rendezés [SAVE TO TEMP...]; megőrzés

167 Kupcsikné F. Ilona: Adatbáziskezelés 166 A SELECT utasítás részei részletesen SELECT [ALL|DISTINCT] oszlopnév-lista |  FROM táblanév lista; A FROM mögé írt táblákból a SELECT mögé írt paraméterek szerint oszlopokat emel ki (ezekből eredmény-táblát hoz létre).

168 Kupcsikné F. Ilona: Adatbáziskezelés 167 Az opciók 1.A  hatása: a tábla, vagy táblák minden oszlopa bekerül az E-táblába. 2.Az oszlopnév-lista hatása: a lista elemei lesznek oszlopai az E-táblának. 3.Az ALL hatása: az E-tábla duplikált sorokat is tartalmazhat (aIapérteImezett). 4.A DISTINCT hatása: a duplikált sorokat csak egyszer tartalmazza.

169 Kupcsikné F. Ilona: Adatbáziskezelés 168

170 Kupcsikné F. Ilona: Adatbáziskezelés 169

171 Kupcsikné F. Ilona: Adatbáziskezelés 170

172 Kupcsikné F. Ilona: Adatbáziskezelés 171

173 Kupcsikné F. Ilona: Adatbáziskezelés 172

174 Kupcsikné F. Ilona: Adatbáziskezelés 173

175 Kupcsikné F. Ilona: Adatbáziskezelés 174 A lista elemei lehetnek : a) a tábla oszlopnevei; ha több táblában is szerepel ugyanaz az oszlopnév, akkor táblanév.oszlopnévalakban írjuk b) a FROM által kijelölt tábla oszlopneveiből képzett kifejezés c) az aggregáló függvények valamelyike… d) egyéb kifejezés

176 Kupcsikné F. Ilona: Adatbáziskezelés 175 Példák származtatott oszlopokra a.,Aritmetikai kifejezés : SELECT joved+2000 FROM tanulo; b.,Karakteres kifejezés : SELECT left(osztaly,1), upper(nev) FROM tanulo; c.,Aggregáló függvény : SELECT AVG(joved) FROM tanulo;

177 Kupcsikné F. Ilona: Adatbáziskezelés 176 Aggregáló függvények 1.A számláló függvény COUNT ([DISTINCT] oszlopnév|  ) Megszámolja az oszlopnév által megadott oszlop elemeinek számát. (DISCINCT esetén csak a különböző értékeket,  esetén soronként számlál) Az argumentum: tetszőleges típusú. Összesítő (aggregáló) függvények Összesítő (aggregáló) függvények

178 Kupcsikné F. Ilona: Adatbáziskezelés 177 Aggregáló függvények 2.Az összegző függvény SUM [ALL] kifejezés | [ALL|DISTINCT] [oszlopnév] 3.Az átlagoló függvény AVG [ALL] kifejezés | [ALL|DISTINCT] [oszlopnév] Az argumentum: numerikus típusú. Összesítő (aggregáló) függvények Összesítő (aggregáló) függvények

179 Kupcsikné F. Ilona: Adatbáziskezelés 178 Összesítő (aggregáló) függvények Összesítő (aggregáló) függvények 4.Legkisebb érték: MIN(kifejezés|[DISTINCT] oszlopnév) 5.Legnagyobb érték: MAX(kifejezés|[DISTINCT] oszlopnév) Az argumentum: rendezhető típusú (numerikus, dátum, karakteres).

180 Kupcsikné F. Ilona: Adatbáziskezelés 179

181 Kupcsikné F. Ilona: Adatbáziskezelés 180

182 Kupcsikné F. Ilona: Adatbáziskezelés 181 A WHERE alparancs WHERE feltétel az E-tábla a feltételnek megfelelő sorokból jön létre. A sorfeltétel egy logikai kifejezés: – egyszerű – összetett – bonyolult

183 Kupcsikné F. Ilona: Adatbáziskezelés 182

184 Kupcsikné F. Ilona: Adatbáziskezelés 183 Predikátumfüggvények a feltételekben használhatók (az egyszerű összehasonlításon kívül) a.A BETWEEN predikátum kif1 BETWEEN kif2 AND kif3 Igaz értéket vesz fel ha: kif2 <= kif1 <= kif3

185 Kupcsikné F. Ilona: Adatbáziskezelés 184 b.Az IN predikátum oszlopnév IN (értéklista) Igaz, ha az oszlop értéke eleme az értéklistának. c.A LIKE predikátum oszlopnév LIKE érték Igaz, ha az oszlop értéke megegyezik a like utáni értékkel, ami maszkolható (_ %)

186 Kupcsikné F. Ilona: Adatbáziskezelés 185

187 Kupcsikné F. Ilona: Adatbáziskezelés 186 A GROUP BY alparancs GROUP BY oszlopnév[,oszlopnév]... 1.) az oszlopok értékei alapján csoportokat képez (egy csoportba az azonos oszlopértékű sorok tartoznak), 2.) az egyes csoportokra külön végzi el az összesítést. A csoportokra rendszerint összesítő függvényt alkalmazunk (amely a SELECT mögött és/vagy a HAVING feltételében szerepel).

188 Kupcsikné F. Ilona: Adatbáziskezelés 187 Megkötések: a SELECT mögött csoportosító oszlopok és aggregáló függvények vannak általában a SELECT mögött csak a GROUP BY mögötti oszlopok lehetnek az aggregáló függvény mellett a GROUP BY oszlopainak sorrendje a fokozatok egymásba ágyazását jelenti már lehet származtatott oszlopnév is a GROUP BY argumentuma

189 Kupcsikné F. Ilona: Adatbáziskezelés 188

190 Kupcsikné F. Ilona: Adatbáziskezelés 189

191 Kupcsikné F. Ilona: Adatbáziskezelés 190 A HAVING alparancs HAVING feltétel A GROUP BY csoportjaiból csak azok a csoportosított sorok kerülnek az E-táblába, amelyek eleget tesznek a feltételnek. A feltétel tehát az összesítő függvények eredményeire vonatkozó újabb szűrőfeltétel.

192 Kupcsikné F. Ilona: Adatbáziskezelés 191

193 Kupcsikné F. Ilona: Adatbáziskezelés 192 Az ORDER BY alparancs ORDER BY oszlopnév / oszlop-sorszám [ASC/DESC] [,oszlopnév / oszlop-sorszám [ASC/DESC]]... Az oszlopok értéke szerint rendezi az E-táblát. A végrehajtás utolsó lépése *).

194 Kupcsikné F. Ilona: Adatbáziskezelés 193 Megjegyzés: Az oszlopnévnek szerepelnie kell a SELECT-ben. Az oszlop-sorszám a SELECT-ben megadott oszlopnév sorszáma *). Az ASC növekvő (alapértelmezés), a DESC csökkenő rendezettség.

195 Kupcsikné F. Ilona: Adatbáziskezelés 194

196 Kupcsikné F. Ilona: Adatbáziskezelés 195

197 Kupcsikné F. Ilona: Adatbáziskezelés 196

198 Kupcsikné F. Ilona: Adatbáziskezelés 197

199 Kupcsikné F. Ilona: Adatbáziskezelés 198 A SAVE TO TEMP alparancs SAVE TO TEMP T-táblanév [(oszlopnév-lista)]; Az eredménytáblát a T-táblanév alatt ideiglenesen elmenti a megadott oszlopnevekkel. Nem szabványos sem az elnevezése sem a helye! INTO TEMP T-táblanév esetén SELECT kifejezés AS leendő oszlopnév,...

200 Kupcsikné F. Ilona: Adatbáziskezelés 199 Megjegyzés: Az oszlopnév-lista megadással az E-tábla oszlopnevei átnevezhetők. Ha a SELECT-ben származtatott oszlop van, akkor az új oszlopnév megadása kötelező. pl. SELECT left(osztály,1) as évfolyam, count(*) as létszám FROM diák group by left(osztály,1);

201 Kupcsikné F. Ilona: Adatbáziskezelés 200

202 Kupcsikné F. Ilona: Adatbáziskezelés 201 A UNION művelet nem alparancs, hanem 2 E-tábla közti hz.művelet! SELECT...UNION SELECT...[UNION SELECT]... Veszi az egymásután következő E-táblák unióját (elvégzi a halmazelméleti egyesítés műveletét). Az E-tábláknak kompatibiliseknek kell lenniük: azonos oszlopszámmal kell rendelkezniük az oszlopoknak azonos típusúaknak kell lenniük Az 1. tábla oszlopneveit örökli.

203 Kupcsikné F. Ilona: Adatbáziskezelés 202

204 Kupcsikné F. Ilona: Adatbáziskezelés 203 Táblák összekapcsolása A táblák összekapcsolása azt jelenti, hogy a FROM mögött több tábla nevét adjuk meg. Mindig 1 tábla készül belőlük, DESCARTES-szorzattal! (a táblanév mögött mód van rövidnév megadására)

205 Kupcsikné F. Ilona: Adatbáziskezelés 204

206 Kupcsikné F. Ilona: Adatbáziskezelés 205 Táblák összekapcsolása Egyenlőségkapcsolat (EQUIJOIN-kapcs.) Táblákat legtöbbször a köztük lévő kapcsolat alapján (kulcs és külső kulcs azonossága) kötünk össze. Tábla összekapcsolása önmagával (SELF-JOIN) A táblát önmagával is összekapcsolhatjuk (bármilyen feltétel szerint); ekkor a táblát két különböző névvel kell megjelölni.

207 Kupcsikné F. Ilona: Adatbáziskezelés x 7 = 133 sor összesen = 126 rossz sor

208 Kupcsikné F. Ilona: Adatbáziskezelés 207

209 Kupcsikné F. Ilona: Adatbáziskezelés 208

210 Kupcsikné F. Ilona: Adatbáziskezelés 209 Rövidnevek megadása itt kötelező!

211 Kupcsikné F. Ilona: Adatbáziskezelés 210

212 Kupcsikné F. Ilona: Adatbáziskezelés 211 Belső SELECT parancsok A WHERE és a HAVING feltételében SELECT parancs is szerepelhet (belső vagy beágyazott SELECT, esetleg alSelect), ami nem tartalmazhat: ORDER BY, SAVE TO TEMP alparancsokat. A belső SELECT is tartalmazhat belső SELECT-et, vagyis a SELECT-ek egymásba ágyazhatók.

213 Kupcsikné F. Ilona: Adatbáziskezelés 212 Beágyazott SELECT parancsok A belső SELECT-et mindig zárójelpárban kell megadni. Sorrend: · először a belső, majd a külső lekérdezést értékeli ki, és végül összeveti az értékeket · a másodlagos lekérdezés eredményét a főlekérdezés minden sorával külön kiértékeli

214 Kupcsikné F. Ilona: Adatbáziskezelés ?

215 Kupcsikné F. Ilona: Adatbáziskezelés 214 egy értéket ad vissza az alSELECT egyszer hajtódik végre az alSELECT csak TANULObeli kimenetek vannak felesleges a Descartes-szorzat...

216 Kupcsikné F. Ilona: Adatbáziskezelés 215 A belső lekérdezés hány értékkel tér vissza? a.Egyetlen értéket tartalmazó belső E-tábla b.Több értéket tartalmazó belső E-tábla Ilyenkor használni kell az IN, ANY, ALL vagy EXISTS predikátumok valamelyikét. A predikátumok megadásának formátuma: predikátum (belső SELECT)

217 Kupcsikné F. Ilona: Adatbáziskezelés 216 Predikátumok: 1. Az IN predikátum: Igaz értéket ad vissza, ha az egyenlőség valamelyik belső E-táblabeli értékre igaz. 2. Az ANY predikátum: Igaz, ha a megadott összehasonlítás valamelyik belső E-táblabeli értékre igaz.

218 Kupcsikné F. Ilona: Adatbáziskezelés 217 Predikátumok: 3. Az ALL predikátum: Igaz értéket ad vissza, ha a megadott összehasonlítás valamennyi belső E-táblabeli értékre igaz. 4. Az EXISTS predikátum: kiválasztja azokat a sorokat, amelyekhez a belső E-táblában egy vagy több sor tartozik. Megj.: az IN operátor helyett mindig alkalmazható, de fordítva nem.

219 Kupcsikné F. Ilona: Adatbáziskezelés 218 egy legkülső SELECTet kap több értéket ad vissza az alSELECTje egyszer hajtódik végre az alSELECTje csak a TANULOból vetítünk ki nincs Descartes-szorzat

220 Kupcsikné F. Ilona: Adatbáziskezelés 219

221 Kupcsikné F. Ilona: Adatbáziskezelés 220

222 Kupcsikné F. Ilona: Adatbáziskezelés 221 A. A belső SELECT egyszer hajtódik végre B. A belső SELECT a külső minden (vagy csak több) sorára újra végrehajtódik - okozója: a belső SELECT - beli hivatkozások a külsőre (paraméterátadás) A belső lekérdezés hányszor hajtódik végre?

223 Kupcsikné F. Ilona: Adatbáziskezelés 222 soronként újra számolja a havi maximumot egy értéket ad vissza, de mindig végrehajtódik a külső paraméter: sek.honap SELECThonap, azon FROMsegely sek WHEREosszeg=(SELECT MAX(osszeg) FROMsegely seb WHERE seb.honap=sek.honap); SEK->HONAPSEK->AZON

224 Kupcsikné F. Ilona: Adatbáziskezelés 223 SELECTjogcim, azon FROMsegely sek WHEREosszeg= (SELECT MAX(osszeg) FROMsegely seb WHERE seb.jogcim=sek.jogcim); SEK->JOGCIMSEK->AZON ar91113 cs92112 sz91116 Mindig a paraméter szerint rendezve kaptuk az E-táblát (pl. havonta / jogcímenként ki kapta a legnagyobb segélyt) ui. a külső lekérdezés táblájában ún. kontrollváltással történik a belső lekérdezés végrehajtása.

225 Kupcsikné F. Ilona: Adatbáziskezelés 224 A meglévő Segélyt egy sorral bővítjük: Ki kapott segélyt: - több mint egyszer - mindig, amikor volt kifezetés - a legtöbbször (általában nem kell megegyeznie a 3 E-táblának)

226 Kupcsikné F. Ilona: Adatbáziskezelés ) 2.) SELECT nev FROM tanulo WHERE EXISTS (SELECT azon, COUNT(*) FROM segely WHERE azon = tanulo.azon GROUP BY azon HAVING COUNT(*) > 1); + módosítás, mely példa a „gazdaságtalan” EXISTSre:

227 Kupcsikné F. Ilona: Adatbáziskezelés )a rossz próbálkozás: Az alSELECT táblája még nem létezik! Következmény: aggregáló fgv-ek összeágyazása tilos. Megoldás: az átmeneti tábla létrehozása.

228 Kupcsikné F. Ilona: Adatbáziskezelés lépés: 2.lépés: módosított 2.lépés: 3.)

229 Kupcsikné F. Ilona: Adatbáziskezelés 228 FELADATOK SQL - lekérdezések

230 Kupcsikné F. Ilona: Adatbáziskezelés feladat: az osztályoknak kifizetett összes segély átlaga 1.lépés: a segélyek összege osztályonként 2.lépés: az osztályonkénti összegek átlaga

231 Kupcsikné F. Ilona: Adatbáziskezelés feladat: ki kitől örökölte a szellemi képességeit (kódokkal) 0.lépés: a fiúk az anyjuktól, a lányok az apjuk anyjától 1.lépés: a fiúk és anyjuk megjelenítése UNIO a lányok és apai nagyanyjuk megjelenítése

232 Kupcsikné F. Ilona: Adatbáziskezelés feladat: tipusonként hány kör van 1.lépés: tipus készítése 2.lépés: csoportosítás

233 Kupcsikné F. Ilona: Adatbáziskezelés feladat: a tagság osztálynévsorai 1 lépés: minden körre tagjainak osztálynévsora

234 Kupcsikné F. Ilona: Adatbáziskezelés feladat: osztályonként hányan járnak valamilyen körre 1 lépés: osztályonként csoportosítva számláljuk a tagokat fontos: egy tanuló több tagsággal is egyszer számítson

235 Kupcsikné F. Ilona: Adatbáziskezelés feladat: osztályonként hányan sportolnak 7.feladat: név szerint kik járnak szakkörre és nyelvkörre is

236 Kupcsikné F. Ilona: Adatbáziskezelés feladat: melyik körnek van a legtöbb tagja 1.lépés: körönként hány tag van 2.lépés: a max. tagsággal rendelkező körök kiválasztása

237 Kupcsikné F. Ilona: Adatbáziskezelés feladat: melyik körnek ki a tagja legrégebben 1 lépés: egy tag akkor jelenjen meg a köre mellett, ha heve a körre vonatkozó max(heve)-vel egyenlő

238 Kupcsikné F. Ilona: Adatbáziskezelés feladat: az egyes osztályok tanulói átlagosan heti hány órát töltenek (szak-, nyelv-, sport-)köri foglalkozással Hamis, mert csak a tagság létszámával oszt.

239 Kupcsikné F. Ilona: Adatbáziskezelés feladat: az egyes osztályok tanulói átlagosan heti hány órát töltenek (szak-, nyelv-, sport-)köri foglalkozással 1.lépés: osztályonként összesen hány óra foglalkozás 2.lépés: osztálylétszámok 3.lépés: közös táblából a számított adatok kiírása SELECT osztaly, SUM(horasz) FROM tanulo ta, tagsag tg, kor WHERE ta.azon=tg.azon and tg.kor=kor.kor GROUP BY osztaly SAVE TO TEMP korok(oszt,orasz); SELECT osztaly, COUNT(azon) FROM tanulo GROUP BY osztaly SAVE TO TEMP letszam(oszt,ossz);

240 Kupcsikné F. Ilona: Adatbáziskezelés 239 select * from korok; OSZT ORASZ 1A 12,00 1B 12,00 2B 10,00 2C 9,00 select * from letszam; OSZT OSSZ 1A 4 1B 2 2A 3 2B 3 2C 7 10.feladat: 3.lépés SELECT ko.oszt, orasz/ossz FROM korok ko, letszam le WHERE ko.oszt=le.oszt; KO->OSZT EXP1 1A 3,00 1B 6,00 2B 3,33 2C 1,29

241 Kupcsikné F. Ilona: Adatbáziskezelés feladat: név szerint ki tölt legtöbb időt foglalkozással 1.lépés: ki hány órát tölt foglalkozással 2.lépés: max. idő-vel rendelkezők kiválasztása SELECT azon, SUM(horasz) FROM tagsag, kor WHERE tagsag.kor=kor.kor GROUP BY azon SAVE TO TEMP tevek(azon,mennyi); select * from tevek; AZON MENNYI , , , , ,00 SELECT osztaly, nev FROM tanulo WHERE azon IN (SELECT azon FROM tevek WHERE mennyi=(SELECT MAX(mennyi) FROM tevek); OSZTALY NEV 1A MAGYAR ANNA 1B KIS MARIA

242 Kupcsikné F. Ilona: Adatbáziskezelés feladat: osztályonként, név szerint ki tölt legtöbb időt egyéb foglalkozással 1.lépés: ki hány órát tölt foglalkozással (ld. előbb) 2.lépés: osztályonkénti max. idő-vel rendelkezők kiválasztása SELECT osztaly, nev FROM tanulo tak WHERE azon IN (SELECT azon FROM tevek WHERE mennyi=(SELECT MAX(mennyi) FROM tevek te, tanulo ta WHERE ta.azon=te.azon AND osztaly=tak.osztaly)); TAK->OSZTALY TAK->NEV 1A MAGYAR ANNA 1B KIS MARIA 2B DENES ZSUZSA 2C SZABO ENDRE...lassú!

243 Kupcsikné F. Ilona: Adatbáziskezelés feladat: ua. 1.lépés: ki hány órát tölt foglalkozással 2.lépés: kényelmes segédtábla létrehozása 3.lépés: osztályonkénti max. idő-vel rendelkezők kiválasztása...gyorsabb! SELECT azon, SUM(horasz) FROM tagsag, kor WHERE tagsag.kor=kor.kor GROUP BY azon SAVE TO TEMP tevek(azon,mennyi); SELECT osztaly, nev, ta.azon, mennyi FROM tanulo ta, tevek te WHERE ta.azon=te.azon SAVE TO TEMP kimennyi;

244 Kupcsikné F. Ilona: Adatbáziskezelés 243 select * from kimennyi; OSZTALY NEV AZON MENNYI 2B DENES ZSUZSA ,00 2C SZABO ENDRE ,00 2C VARDA DANIEL ,00 1A MAGYAR ANNA ,00 1B KIS MARIA ,00 select osztaly,nev from kimennyi kk where mennyi=(select max(mennyi) from kimennyi kb where kb.osztaly=kk.osztaly); KK->OSZTALY KK->NEV 2B DENES ZSUZSA 2C SZABO ENDRE 1A MAGYAR ANNA 1B KIS MARIA 12.feladat: 3.lépés

245 Kupcsikné F. Ilona: Adatbáziskezelés 244 Újdonságok a lekérdező parancson belül Halmazműveletek INTERSECT EXCEPT vagy MINUS UNION ALL Csoportosítás származtatott oszlopra: megengedett Függvények (definiálhatók!) elhelyezhetők a lekérdezésekben és a megszorításokban.

246 Kupcsikné F. Ilona: Adatbáziskezelés 245 Külső összekapcsolás (OUTER JOIN) SELECT... FROM T1 LEFT OUTER JOIN T2 ON (összekapcsolás feltétele) vagy SELECT... FROM T1 RIGHT OUTER JOIN T2 ON (összekapcsolás feltétele) (A fenti 2 Select egyesítése egy lehetséges FULL OUTER JOIN.) Figyelem, a NULL érték nem egyenlő a NULL értékkel! Újdonságok a lekérdező parancson belül

247 Kupcsikné F. Ilona: Adatbáziskezelés 246 alSelect elhelyezése From-ban: SELECT * FROM T1, (SELECT FROM seged) as T2 WHERE... alSelect elhelyezése Select-ben: SELECT, (SELECT FROM segéd WHERE ) [AS ] FROM tábla... Újdonságok a lekérdező parancson belül

248 Kupcsikné F. Ilona: Adatbáziskezelés 247 Virtuális tábla (nézet) Virtuális vagy nézettábla: fizikailag nem jön létre, mégis táblaként kezelhető. A rendszer csak a definícióját őrzi a katalógustáblázatban. CREATE VIEW V-táblanév [oszlopnév-lista] AS SELECT... [WITH CHECK OPTION]

249 Kupcsikné F. Ilona: Adatbáziskezelés 248 Megjegyzések: ugyanúgy le lehet kérdezni, mintha adattábla lenne ha egyszerű a definíciója, akkor a sor bekerül / törlődik / módosul a táblában adatismétlődés csökkentése miatt hasznos az adatbiztonság megszervezésének egy egyszerű módja

250 Kupcsikné F. Ilona: Adatbáziskezelés 249 V-tábla: CREATE VIEW nezet AS SELECT osztaly, nev FROM tanulo WHERE osztaly LIKE '2_'; View NEZET created SELECT * FROM nezet; OSZTALY NEV 2A VARGA TEREZ 2A MOLNAR GEZA 2B BALOGH MIHALY 2B CINEGE KATA 2B DENES ZSUZSA 2A VIDA ZSOFIA 2C ALMASI GABOR 2C SZABO ENDRE 2C BAN TIBOR 2C PEK LILLA 2C RIGO PAL 2C VARDA DANIEL 2C SZABO PETER

251 Kupcsikné F. Ilona: Adatbáziskezelés 250 V-tábla: SELECT osztaly, COUNT(*) FROM nezet GROUP BY osztaly; G_OSZTALY COUNT1 2A 3 2B 3 2C 7 SELECT * FROM nezet ORDER BY 1,2; OSZTALY NEV 2A MOLNAR GEZA 2A VARGA TEREZ 2A VIDA ZSOFIA 2B BALOGH MIHALY 2B CINEGE KATA 2B DENES ZSUZSA 2C ALMASI GABOR 2C BAN TIBOR 2C PEK LILLA 2C RIGO PAL 2C SZABO ENDRE 2C SZABO PETER 2C VARDA DANIEL

252 Kupcsikné F. Ilona: Adatbáziskezelés 251 V-tábla: CREATE VIEW havi(honap,ossz) AS SELECT honap, SUM(osszeg) FROM segely GROUP BY honap; View HAVI created SELECT * FROM havi; HONAP OSSZ

253 Kupcsikné F. Ilona: Adatbáziskezelés 252 Másodlagos táblanevek CREATE SYNONYM másodlagos név FOR táblanév; beszédes név / rövidnév használata céljából

254 Kupcsikné F. Ilona: Adatbáziskezelés 253 Indextáblák CREATE [UNIQUE] INDEX I-táblanév ON táblanév (oszlopnév [ASC/DESC]) [,oszlopnév [ASC/DESC])...; a keresés automatikus bármely kulcs szerinti index automatikusan létrejön a többi kívánatos indexet létre kell hozni (látványra nem vonatkozik)

255 Kupcsikné F. Ilona: Adatbáziskezelés 254 I-tábla: CREATE INDEX onsor ON tanulo (osztaly, nev); Index ONSOR created CREATE INDEX segely ON segely (honap,azon); Index SEGELY created CREATE INDEX segaz ON segely (azon); Index SEGAZ created CREATE INDEX sekif ON segely (kifiz DESC); Index SEKIF created

256 Kupcsikné F. Ilona: Adatbáziskezelés 255 Táblák törlése a) DROP INDEX I-táblanév ; b) DROP SYNONYM másodlagos név ; c) DROP VIEW V-táblanév ; d) DROP TABLE A-táblanév ;

257 Kupcsikné F. Ilona: Adatbáziskezelés 256 ABKR felépítése Metaadatok Tárkezelő Lekérdezés-feldolgozó Tranzakció-kezelő Igények az ABKR felé szerkezeti módosítások lekérdezések adatmódosítások + a kapcsolat-teremtés

258 Kupcsikné F. Ilona: Adatbáziskezelés 257 Rendszerkatalógus-táblázatok SQL2 pl.

259 Kupcsikné F. Ilona: Adatbáziskezelés 258 Rendszerkatalógus-táblázatok a példa ABKR-ben Sysauth Syscolau Syscols Sysidxs Syskeys Syssyns Systabls Sysvdeps Sysviews Systimes Sysdbs

260 Kupcsikné F. Ilona: Adatbáziskezelés 259 SELECT * FROM SYSTABLS; Részletek az ISKOLA adatbázis rendszer-tábláiból TBNAME CREATOR TBTYPE COLCOUNT CLUSTERRID INDXCOUNT CREATED UPDATED CARD NPAGES SYSTABLS SYSTEM T SYSCOLS SYSTEM T TANULO T NEZET V HAVI V

261 Kupcsikné F. Ilona: Adatbáziskezelés 260 COLNAME TBNAME TBCREATOR COLNO COLTYPE COLLEN COLSCALE NULLS COLCARD UPDATES HIGH2KEY LOW2KEY OSZTALY NEZET 1 C 2 0 Y -1 Y NEV NEZET 2 C 20 0 Y -1 Y SELECT * FROM SYSCOLS WHERE TBNAME='NEZET'; IXNAME CREATOR TBNAME TBCREATOR UNIQUERULE COLCOUNT CLUSTERING CLUSTERED FIRSTKCARD FULLKCARD NLEAF NLEVELS ONSOR TANULO D 2 N N SEGELY SEGELY D 2 N N SELECT * FROM SYSIDXS;

262 Kupcsikné F. Ilona: Adatbáziskezelés 261 IXNAME IXCREATOR COLNAME COLNO COLSEQ ORDERING ONSOR OSZTALY 2 1 A ONSOR NEV 3 2 A SEGELY HONAP 2 1 A SEGELY AZON 1 2 A SELECT * FROM SYSKEYS; VIEWNAME CREATOR SEQNO VCHECK READONLY JOIN SQLTEXT NEZET 1 N N Y CREATE VIEW nezet AS SELECT osztaly, nev FROM tanulo WHERE osztaly LIKE '2_'; HAVI 1 N Y N CREATE VIEW havi(honap,ossz) AS SELECT honap, SUM(osszeg) FROM segely GROUP BY honap; SELECT * FROM SYSVIEWS; VIEWNAME TBLNO TBNAME CREATOR NEZET 1 TANULO HAVI 1 SEGELY EVFOLYAM 1 TANULO SELECT * FROM SYSVDEPS;

263 Kupcsikné F. Ilona: Adatbáziskezelés 262 További SQL lehetőségek megszorítások, triggerek beágyazott SQL dinamikus SQL tranzakciók jogosultság

264 Kupcsikné F. Ilona: Adatbáziskezelés 263 MEGSZORÍTÁSOK ÉS TRIGGEREK Kulcsok (PK,UK, FK) megadása Attribútum-értékekre vonatk. korlátozások (a kötelező és az alapértelmezett érték szintén) Önálló megszorítások Triggerek

265 Kupcsikné F. Ilona: Adatbáziskezelés 264 Az elsődleges kulcs megadása CREATE TABLE táblanév( attrib1 típus(n)  PRIMARY KEY (attrib1) ); vagy UNIQUE - nem lehet NULL-érték - az index létrehozása

266 Kupcsikné F. Ilona: Adatbáziskezelés 265 Idegen kulcs megadása CREATE TABLE gyerek-tábla (... FOREIGN KEY (attribútumok) REFERENCES szülő-tábla (elsődleges kulcsa) ); - a hivatkozási épség fenntartása - folytatható: ON DELETE / UPDATE SET NULL / CASCADE

267 Kupcsikné F. Ilona: Adatbáziskezelés 266 Attribútum-értékekre von. korlátozás A CREATE TABLE attribútumai mögött NOT NULL CHECK (feltétel) max. sorfeltétel (ui. csak ebben a táblában ellenőriz) vagy CREATE DOMAIN felhaszn. ált. def. típus neve CHECK ( ) utána egy attribútum ilyen típussal már kötött

268 Kupcsikné F. Ilona: Adatbáziskezelés 267 Önálló megszorítások CREATE ASSERTION megszorítás neve CHECK (feltétel) több sorra / több táblára von. a feltétel (minden esetben igaz marad) DROP ASSERTION (neve) : kitörli, új definiálható

269 Kupcsikné F. Ilona: Adatbáziskezelés 268 A nem önálló megszorítások módosítása a CONSTRAINT megsz_neve beékelése javasolt ALTER TABLE tábla ADD CONSTRAINT megsz_neve a megszorítás megadása; ALTER TABLE tábla DROP CONSTRAINT megsz_neve;

270 Kupcsikné F. Ilona: Adatbáziskezelés 269 TRIGGERek a megszorítások megsértésének megakadályozásán túl más célok is megvalósíthatók csak biz. esemény bekövetkezése előtt / helyett / után hajtódik végre, egy táblára vonatkozhat a kiváltó esemény: beszúrás / törlés / módosítás tranz. vége, dátum, … adott feltételtől függően: semmi sem történik vagy végrehajtód. a benne levő művelet(ek)

271 Kupcsikné F. Ilona: Adatbáziskezelés 270 CREATE TRIGGER tr.név AFTER / BEFORE / INSTEAD OF UPDATE [OF attr.] / DELETE / INSERT ON tábla [REFERENCING OLD AS régi NEW AS új] WHEN feltétel SQL-műveletek… [FOR EACH ROW] sorszintű: minden sorra utasításszintű: egyszer (OLD_TABLE, NEW_TABLE) TRIGGER

272 Kupcsikné F. Ilona: Adatbáziskezelés 271 FUTÁR KELLÉKES OKTATÁS kérdéseinek megválaszolása továbbá ld. Példatár FELADATOK SQL-lekérdezésekre megszorításokkal FELADATOK SQL-lekérdezésekre megszorításokkal

273 Kupcsikné F. Ilona: Adatbáziskezelés 272 FUTÁRFUTÁR Megszorítások kulcsok külső kulcsok (not null) kiv.: KÜLD.f_szám (lehet null) hivatk. integr. megőrzése küld. kelt >= rendszerdátum kitől <> kinek küld. storno-ja: 1órán belül lehet elnevezés: lehet üres egyéb indexek (*) Lekérdezések Melyik futár járt már a „Rubin Business Center”ben Ki vitt ma küldeményt az „Országos Levéltár”ból a „Széchenyi Könyvtár”ba

274 Kupcsikné F. Ilona: Adatbáziskezelés 273 KE LL ÉK ES Megszorítások kulcsok külső kulcsok (not null) kiv. EA.darab (lehet null) hivatk. integr. megőrzése hány > 0 frissítés >= 0 számláló <= frissítés cím, elnev.: nem köt.kitöltendő EA.darab megadása után: kiválaszt.példányok száma megfelel a SZÜKSnek és számlálójuk 1-el nő egyéb indexek (*) Lekérdezések..A ma este 7 órai előadásban hány “szék”-re van szükség Melyik darabhoz kell a legtöbb kellék Melyik kellékből nem áll egy sem rendelkezésre Milyen napokon adják elő az “Ember tragédiája” c. darabot

275 Kupcsikné F. Ilona: Adatbáziskezelés 274 SQL használata programozási környezetben SQL utasításokkal: az adatbázis elérése befogadó nyelv. progr. ut.: megjelenítés és adatbevitel köztük: a megosztott elérésű változók (:változónév) EXEC SQL kulcsszó kapcsoló: SQLSTATE / SQLCODE BEÁGYAZOTT SQL - nem a számonkérés része -

276 Kupcsikné F. Ilona: Adatbáziskezelés 275 E-tábla sorainak átadása egysoros tábla elmentése változókba: SELECT céllista INTO változólista FROM táblanév … többsoros táblán ún. sormutatóval FETCH FROM sormutatónév INTO változólista;

277 Kupcsikné F. Ilona: Adatbáziskezelés 276 Az sqlcnt rendszerváltozó (PL/SQL) Az utolsó SQL parancs által érintett sorok számát egy sqlcnt nevű változó mutatja (ciklusvezérlésre használható) SELECT * FROM nezet; ? "sqlcnt:",sqlcnt sqlcnt: 13

278 Kupcsikné F. Ilona: Adatbáziskezelés 277 Az sqlcode rendszerváltozó (PL/SQL) Minden SQL utasítás végrehajtásakor az sqlcode nevű változó felvesz egy értéket; a)sqlcode=0, ha a végrehajtás rendben b)sqlcode<0, ha hiba van c)sqlcode>0, ha speciális hiba van. pl: sqlcode=100 esetén nincs több sor a táblában

279 Kupcsikné F. Ilona: Adatbáziskezelés 278 A sormutató definiálása (PL/SQL) Az eredménytáblához egy kurzor definiálható, amivel hozzáférünk a sorokhoz. DECLARE kurzornév CURSOR FOR SELECT...

280 Kupcsikné F. Ilona: Adatbáziskezelés 279 A kurzor A SELECT eredményére (az E-táblára) a kurzornévvel hivatkozhatunk. A kurzor egy pointer ("léptetni" lehet). E-tábla kurzor

281 Kupcsikné F. Ilona: Adatbáziskezelés 280 A kurzor megnyitása OPEN kurzornév; Megnyitja az eredménytáblát (csak akkor lehet használni). · a kurzor az első sor elé mutat · egyszerre 10 kurzor lehet megnyitva

282 Kupcsikné F. Ilona: Adatbáziskezelés 281 A kurzor lezárása CLOSE kurzornév; Lezárja a kurzort. (Az E-tábla tovább nem használható.)

283 Kupcsikné F. Ilona: Adatbáziskezelés 282 A kurzor mozgatása FETCH kurzornév INTO változólista; A kurzort egy sorral lejjebb viszi és az adatsor tartalmát a változókba beviszi (a változók a behívó nyelv változói). Végül a tábla végére mutat.

284 Kupcsikné F. Ilona: Adatbáziskezelés 283 DECLARE lista CURSOR FOR SELECT osztaly,COUNT(*) FROM tanulo GROUP BY osztaly; OPEN lista; sor=sqlcnt FETCH lista INTO moszt,mszam; do while sor>0 ? moszt,mszam sor=sor-1 FETCH lista INTO moszt,mszam; enddo CLOSE lista; A lista futása: 1A 4 1B 2 2A 3 2B 3 2C 7 Példa : lista program

285 Kupcsikné F. Ilona: Adatbáziskezelés 284 A FETCH parancs: A parancs segítségével E-tábla soronkénti kiíratása válik lehetővé. Ha a kurzor használata közben valamelyik sort módosítani vagy törölni kívánjuk, a SELECT nem tartalmazhat GROUP BY, ORDER BY klauzákat.

286 Kupcsikné F. Ilona: Adatbáziskezelés 285 Módosítás kurzor segítségével UPDATE táblanév SET oszlopnév = kifejezés, [oszlopnév =kifejezés...] WHERE CURRENT OF kurzornév; A táblának azt a sorát módosítja, amelyen a kurzor áll.

287 Kupcsikné F. Ilona: Adatbáziskezelés 286 Megjegyzés: Ha módosítani akarunk, akkor azt tudatni kell a kurzor definiálásakor: DECLARE kurzornév CURSOR FOR SELECT... FOR UPDATE OF oszloplista;

288 Kupcsikné F. Ilona: Adatbáziskezelés 287 Törlés kurzor segítségével DELETE FROM táblanév WHERE CURRENT OF kurzornév; A tábla azon sorát törli, amelyen a kurzor áll.

289 Kupcsikné F. Ilona: Adatbáziskezelés 288 Példa : programrészletek DECLARE kkor CURSOR FOR SELECT kor,horasz FROM kor WHERE kor LIKE 'SP%' FOR UPDATE OF horasz;. UPDATE kor SET horasz=mhora+2 WHERE CURRENT OF kkor;... DELETE FROM kor WHERE CURRENT OF kkor;...

290 Kupcsikné F. Ilona: Adatbáziskezelés 289 A sormutató mozgatása ( SQL2 ) A FETCH után lehet:  NEXT / PRIOR  FIRST / LAST  RELATIVE  n  ABSOLUTE  n

291 Kupcsikné F. Ilona: Adatbáziskezelés 290 a felhasználótól kapott SQL-utasítás elemzése és végrehajtása futási időben EXEC SQL PREPARE változó FROM :kérdés; a kérdés a befogadó nyelv kifejezése („SQL-utasítás”) EXEC SQL EXECUTE változó; vagy EXEC SQL EXECUTE IMMEDIATE :kérdés; DINAMIKUS SQL - nem a számonkérés része -

292 Kupcsikné F. Ilona: Adatbáziskezelés 291 TRANZAKCIÓK Tranzakció: több SQL-utasítás egy csoportja Ezek ab-elérési ill. -módosító műveletek, melyeket atomian kell végrehajtani a csoport minden műveletét végre kell hajtani vagy ha ez nem lehetséges, akkor egyiket sem szabad közülük végrehajtani. COMMIT : a tranz. sikeres befejezésére az ab-módosításokat véglegesíti ROLLBACK : a tranz. sikertelen befejezésére az ab-módosításokat visszagörgeti

293 Kupcsikné F. Ilona: Adatbáziskezelés 292 JOGOSULTSÁGOK Jogok adása GRANT ALL PRIVILEGES / jogosultságlista ON táblanév TO PUBLIC / felhasználók [WITH GRANT OPTION]; + engedély. képesség Jogosultságlista: SELECT, INSERT, DELETE, UPDATE, REFERENCES

294 Kupcsikné F. Ilona: Adatbáziskezelés 293 JOGOSULTSÁGOK Jogok törlése REVOKE ALL PRIVILEGES / jogosultságlista ON tábla FROM PUBLIC / felhasználólista; REVOKE GRANT OPTION FOR …

295 Kupcsikné F. Ilona: Adatbáziskezelés 294 FUTÁRszolgálat részletes adatbázis-specifikáció részletekben kidolgozott minta a rendszer nagyvonalú ismertetése alapján

296 Kupcsikné F. Ilona: Adatbáziskezelés 295 FUTÁR egy nagyváros küldeményeit továbbító diszpécserszolgálat nyilvántartása A futárok motorral teljesítenek szolgálatot. Küldeményeket a város valamely címén található partnerek rendelik meg, hogy valamely partnertől másik partnernek elvigyék. A küldemény felvételének pillanata és szállításának stádiuma fontos, mert a diszpécsernek tudnia kell, melyik futár éppen hol tart. Fontos, hogy a rendszer gyorsan válaszoljon arra, ki tart éppen egy adott címre. A partnerek közül több is létezhet ugyanazon a címen (ld. irodaházak). A futárok alapóradíját a küldemények száma további díjjal növeli. Valamilyen sűrűséggel a futárokat kifizetik. Értelemszerű lekérdezések…

297 Kupcsikné F. Ilona: Adatbáziskezelés 296 az adatbázis-rendszer specifikációjának tartalma:  a konkrét rendszer pontosítása  a rendszer funkciói  az adatbázis specifikálása (szerkezet, kapcsolatok, megszorítások, keresések, ellenőrzések)  a funkciók adatszintű leírása  kimutatások előkészítése  archiválás  módosíthatóság  vázlatos dokumentálás

298 Kupcsikné F. Ilona: Adatbáziskezelés 297 rendelésfelvétel naponta: 8-20 ó a szabad motorokat a dolgozó futárok elosztják a futárok munka közben felhívhatók dolgozó futárnál egyszerre több küldemény is lehet dolgozó futár állapota:  adott küldeményért megy (kitől címére)  adott küldeményt visz (kinek címére)  küldemény hiányában várakozik (választ. címen) a futár a szolgálatnak jelzi az egyes küldemények átvételét és átadását (időpontok rögz.) adott naptól az óradíjak és darabárak változhatnak a futárok kifizetése máshol tört. (itt nem készül bizonylat) FUTÁRszolgálat pontosítások

299 Kupcsikné F. Ilona: Adatbáziskezelés 298 FUTÁRszolgálat adatbázisa MOTOR {rendsz, adat1,…, kész} FUTÁR {fszám, fnév, fcím, m_váll1,...} CÍM {cím, elnev, ker, utca, hsz} PARTNER {kód, név, tel, cím} KÜLDEM {azon, megrend, kelt, időpont, kitől, kinek, fszám, átvét, átad} DOLGOZ {dátum, mettől, fszám, meddig, rendsz, ftel, cím, szám} DÍJAK {mióta, óradíj, dbár} ELSZÁM {meddig, fszám, összeg}

300 Kupcsikné F. Ilona: Adatbáziskezelés 299 FUTÁRszolgálat adatbázis-megszorítások kulcsok (egyik sem lehet null) külső kulcsok (csak a KÜLDEM.fszám lehet null) elnev, átvét, átad, meddig: lehet null átvét<átad kész: true/false óradíj, dbár, összeg: nagyobbak 0-nál szám >= 0 szám aut. vált., az összeg számított mező ahány kész motor van, annyi futár dolgozhat egyszerre Fogalmak: szám: a pillanatnyilag hozzá tartozó küldemények száma összeg:  (meddig- mettől)*óradíj + küld.száma*dbár időszakfüggően (dátum és kelt 2 mióta közé esésének figyelése)

301 Kupcsikné F. Ilona: Adatbáziskezelés 300 futárok, partnerek karbantartása díjak változtatása küldemény  megrendelés felvétele *  futár indítása *  teljesítésének ellenőrzése *  átvételének, átadásának rögzítése * futár  jelentkezése munkakezdésre / munkavégzésre *  pillanatnyi helyzetének rögzítése *  elszámolása napi zárás * elszámolás továbbítása a számfejtés felé FUTÁRszolgálat funkciói

302 Kupcsikné F. Ilona: Adatbáziskezelés 301 Részletes funkcionális leírás * Megrendelés felvétele:  új sor KÜLDEMbe –azon:=gen. szám –kelt:=rendszerdátum, időpont:=rendszeridő –megrend, kitől, kinek: létező partnerek –többi mező: nem kitöltött  [új sorok PARTNERbe, CÍMbe]  választás dolgozó futárok közül (§): –felt.: szám=0 vagy a kitől és DOLGOZ.cím összevetéséből –telefonon megegyezés / várakozás Futás indítása: üres fszám-os küldeményekhez: §  azon és kitől bediktálása futárnak  fszám módosítása KÜLDEMben  szám megnövelése és cím inputja DOLGOZban

303 Kupcsikné F. Ilona: Adatbáziskezelés 302 Részletes funkcionális leírás * Küldemény teljesítésének ellenőrzése:  választott küldemény állapota: –futára sincs még (fszám üres) –futár megy érte (fszám van és átvét üres) –futár viszi címzettnek (fszám és átvét van, átad üres) –teljesítve (átad van) Küldemény átadásának / átvételének rögz.:  futár helyes azon-ra hivatkozik: –átvét:=rendszeridő, DOLOZ.cím beolvasása vagy –átad:=rendszeridő, szám csökkentése, DOLGOZ.cím beolvasása Dolgozó futár helyzetének módosítása:  felt.: szám=0  cím: input

304 Kupcsikné F. Ilona: Adatbáziskezelés 303 Részletes funkcionális leírás * Futár munkakezdése:  felt: van-e kész MOTOR  új sor DOLGOZba (adott fszám, rendszerdátum és -idő, választott rendsz, input ftel)  meddig: üres, cím: input, szám:=0; MOTOR.kész:=false Futár munkavégzése:  felt: szám=0  meddig módosítása, MOTOR.kész: input Napi zárás:  felt.: minden DOLGOZ.meddig: kitöltve  MOTORban a kész frissítése  KÜLDEM tételes listázása (törzsadatokkal és aktuális díjakkal)  KÜLDEM sorainak felfűzése az ÖSSZKÜLDhez  új üres KÜLDEM létrehozása  DOLGOZ sorainak felfűzése az ÖSSZDOLGhoz  új üres DOLGOZ létrehozása

305 Kupcsikné F. Ilona: Adatbáziskezelés 304 elszámolások havi / futár szerinti bontása napi szállítások időtartama, napi összes holtidő küldemények napi számának átlaga megrendelők gyakorisága a legsűrűbben felkeresett címek * két cím közötti legrövidebb ill. leghosszabb teljesítés... SQL-megoldásokkal FUTÁRszolgálat listái

306 Kupcsikné F. Ilona: Adatbáziskezelés 305 * SQL-megvalósítása SELECT kitol, COUNT(*) FROM osszkuld GROUP BY kitől SAVE TO TEMP seg(kod, szaml); SELECT kinek, COUNT(*) FROM osszkuld GROUP BY kinek SAVE TO TEMP seg2(kod, szaml); INSERT INTO seg FROM SELECT * FROM seg2; % SELECT kod, SUM(szaml) FROM seg GROUP BY kod SAVE TO TEMP ossz(kod, ossz); SELECT cim, SUM(ossz) FROM ossz o, partner p WHERE o.kod=p.kod GROUP BY cim SAVE TO TEMP vegl(cim, ossz); SELECT * FROM cím WHERE cím IN (SELECT cím FROM vegl WHERE ossz= (SELECT MAX(ossz) FROM vegl));

307 Kupcsikné F. Ilona: Adatbáziskezelés 306 hetente teljes másolat készítés hivatk. nélk. törzsadatok törlése 3 hónap után megengedett időszerű kifizetések adatainak feladása után az ELSZÁM ELSZÁMév_hó_nap néven csak olvasható... küldemény stornózása problémás esetek kezelése (baleset - új futár, hibás cím, visszaküldés, …) számlázás a megrendelők felé futárok kifizetésének bizonylatolása motorok állapota (szervízelés, káreset, …); üzemanyag nyilvántart. FUTÁRszolgálat javaslatok archiválásra és bővítésre


Letölteni ppt "Kupcsikné F. Ilona: Adatbáziskezelés 1 ADATBÁZISKEZELÉS Kupcsikné Fitus Ilona "... n em akkor alkottál tökéleteset, ha már nem tudsz mit hozzátenni, hanem."

Hasonló előadás


Google Hirdetések