Alkalmazható természettudományok oktatása a Tudásalapú Társadalomban TÁMOP A/1-11/

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Alkalmazható természettudományok oktatása a Tudásalapú Társadalomban TÁMOP-4.1.2.A/1-11/1-2011-0038"

Átírás

1 Alkalmazható természettudományok oktatása a Tudásalapú Társadalomban TÁMOP A/1-11/

2 SQL antipatternek Útmutató az adatbázis-kezelés csapdáinak elkerüléséhez Bill Karwin

3 A mű a következő kiadás alapján készült: Bill Karwin: SQL Antipatterns Pragmatic Bookshelf, 2010 ISBN A Pragmatic Bookshelf engedélyével. The translation is published by arrangement with Pragmatic Bookshelf publishing. Fordította: Dippold Ádám Szerkesztette: Hedvig Olga Lektorálta: Dr. Czenky Márta Bill Karwin, 2010 Hungarian translation Dippold Ádám, 2013 Műszaki Könyvkiadó Kft., 2013 ISBN Kiadja a Műszaki Könyvkiadó Kft. Felelős kiadó: Orgován Katalin ügyvezető igazgató Felelős szerkesztő: Csík Zoltán Műszaki szerkesztő: Haász Anikó Tördelőszerkesztés: Weep Bt. Terjedelme: 36 A5 ív 1. magyar nyelvű kiadás 2

4 Tartalom 1. Bevezetés Kiknek szól ez a könyv? Miről szól ez a könyv? Mi nem szerepel ebben a könyvben? Konvenciók Adatbázis példa Köszönetnyilvánítás 14 I. rész Logikai adatbázisokkal kapcsolatos antipatternek 2. Toronyiránt A cél: többértékű attribútumok tárolása Az antipattern: vesszőkkel elválasztott listák használata Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: egy kapcsoló tábla létrehozása Naiv fák A cél: hierarchiák tárolása és lekérdezése Antipattern: mindig függjön a szülőjétől Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: alternatív famodellek használata ID szükséges A cél: az elsődleges kulcs létezésének megalapozása Az antipattern: egy kaptafa Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: testreszabás Kulcsok nélkül A cél: az adatbázis architektúrájának egyszerűsítése Az antipattern: hagyjuk ki a megszorításokat! Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: megszorítások deklarálása Egyed attribútum érték A cél: változó attribútumok támogatása Az antipattern: egy általános attribútumtábla használata Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: az altípusok modellezése 66 3

5 7. Polimorf kapcsolatok A cél: több szülőre való hivatkozás Az antipattern: többcélú idegen kulcs használata Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: a kapcsolat egyszerűsítése Többoszlopos attribútumok A cél: többértékű attribútumok tárolása Az antipattern: több oszlop létrehozása Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: egy kapcsolódó tábla létrehozása Metaadattribblik A cél: a skálázhatóság támogatása Az antipattern: klóntáblák vagy klónoszlopok Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: particionálás és normalizálás 99 II. rész Fizikai adatbázis tervezésével kapcsolatos antipatternek 10. Kerekítési hibák A cél: valós számok használata egész számok helyett Az antipattern: a FLOAT adattípus használata Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: a NUMERIC adattípus használata íz A cél: az oszlop adott értékekre történő korlátozása Az antipattern: az értékek megadása az oszlop definiálásakor Az antipattern felismerése Az antipattern indokolt használata A megoldás: adjuk meg az értékeket az adatok között! Fantomfájlok A cél: képek vagy egyéb nagyobb terjedelmű médiafájlok tárolása Az antipattern: tegyük föl, hogy fájlokat kell használnunk Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: használjunk BLOB-ot, ha kell! Indexvadászpuska A cél: a teljesítmény optimalizálása Az antipattern: ötletszerű indexhasználat Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: az indexek MENTORálása 132 4

6 III. rész Lekérdezés antipatternek 14. Félelem az ismeretlentől A cél: a hiányzó értékek megkülönböztetése Az antipattern: a NULL érték közönséges értékként történő használata és megfordítva Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: használjuk a NULL értéket egyedi értékként Kétértelmű csoportok A cél: a csoport legnagyobb értékű sorának megtalálása Az antipattern: hivatkozás nem csoportosított oszlopokra Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: egyértelmű oszlopok használata Véletlenszerű kiválasztás A cél: egy mintasor lekérdezése Az antipattern: adatok véletlenszerű rendezése Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: ne fontossági sorrendben A szegény ember keresőmotorja A cél: full-text keresés Az antipattern: mintaillesztő-predikátumok Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: használd a helyes munkaeszközt Spagettilekérdezés A cél: az SQL lekérdezések csökkentése Az antipattern: összetett probléma megoldása egy lépésben Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: oszd meg és uralkodj Implicit oszlopok A cél: a gépelés csökkentése Az antipattern: a hivatkozás (shortcut), amely az őrületbe kerget Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: explicit oszlopnevek 189 5

7 IV. rész Alkalmazásfejlesztési antipatternek 20. Olvasható jelszavak A cél: jelszavak visszaállítása vagy alaphelyzetbe állítása Az antipattern: egyszerű szövegben tárolt jelszó Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: tárold a jelszó sózott (salted) hashét Az SQL-befecskendezés A cél: dinamikus SQL lekérdezések írása Az antipattern: ellenőrizetlen input végrehajtása kódként Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: Ne bízz senkiben! Pszeudokulcsok folytonos sorrendben A cél: az adatok rendbe rakása Az antipattern: a hiány kitöltése Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: tedd túl rajta magad! Nem látok A cél: írjunk kevesebb kódot! Az antipattern: téglát szalma nélkül Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: méltósággal javítsuk a hibákat Diplomáciai védettség A cél: a jó gyakorlatok alkalmazása Az antipattern: az SQL mint másodosztályú állampolgár Hogyan ismerjük föl az antipatternt? Az antipattern indokolt használata A megoldás: a minőség egyháza Az égig érő paszuly A cél: a modellek egyszerűsítése az MNV-ben Az antipattern: a modell egy Active Record Hogyan ismerjük fel az antipatternt? Az antipattern indokolt használata A megoldás: a modell rendelkezzen Active Recorddal 250 Függelék A normalizálás szabályai F1.1 Mit jelent az, hogy relációs? 259 F1.2 A normalizáció mítoszai 261 F1.3 Mi az a normalizáció? 262 F1.4 A józan ész Irodalomjegyzék Index

8 A szakértő az az ember, aki minden lehetséges hibát elkövetett csak mindezt egy igen szűk szakterületen belül. (Niels Bohr) 1. FEJEZET Bevezetés Az első SQL-es munkámat visszautasítottam. Nem sokkal azután, hogy informatikusként végeztem a Kaliforniai Egyetemen, megkeresett egy menedzser, aki az egyetemen dolgozott, és a campusról ismert. A cége egy adatbázis-kezelő programot is fejlesztett, amely shell scriptek és egyéb hasonló eszközök segítségével (mint az awk) hordozható lett volna a különböző UNIX platformok között. Ebben az időben a modern dinamikus programnyelvek, mint például a Ruby, a Python, a PHP vagy akár a Perl, nem voltak különösebben elterjedtek. Az illető azért keresett meg, mert szüksége volt egy programozóra, aki megírja a kódot azért, hogy a program még ha korlátozottan is képes legyen felismerni és végrehajtani az SQL utasításokat. Azt mondta, hogy nincs szüksége az egész nyelv támogatottságára, ezzel egyébként is túl sok munka lenne csak egy programutasításra van szüksége: a SELECT-re. Az egyetemen nem tanultam az SQL-ről. Akkoriban az adatbázisok még nem voltak megtalálhatók minden bokorban mint ma, a nyílt forráskódú adatbázis-kezelők pedig (mint például a MySQL vagy a PostgreSQL) még nem léteztek. Ennek ellenére több komplett alkalmazást is leprogramoztam már shellben, tudtam egyet és mást a szintaktikai elemzőkről (parser), és részt vettem néhány egyetemi projektben, amelyeken fordítóprogramokat terveztünk, vagy épp számítógépes nyelvészettel foglalkoztunk. Mégis, milyen nehézséget okozhat egyetlen olyan utasítás értelmezőjének megírása, amely egy olyan specializált nyelvhez tartozik, mint az SQL? Úgy döntöttem, hogy elvállalom a munkát. Találtam egy kézikönyvet az SQL-ről, és csakhamar rá kellett jönnöm, hogy ez a nyelv nagyban különbözik azoktól a nyelvektől, amelyek az if és while-féle utasításokkal, változó értékadásokkal, kifejezésekkel és függvényekkel dolgoznak. A SE- LECT-et egyetlen parancsnak hívni ebben a nyelvben olyan, mintha a motort csupán a kocsi egy részének neveznénk. Szó szerinti értelemben mindkét kijelentés igaz, de nem érzékeltetik az általuk felhozott tárgyak bonyolultságát és mélységét. Rájöttem, azért, hogy lehetővé tegyem ennek az egyetlen utasításnak a végrehajtását, meg kell írnom egy tökéletesen működőképes relációsadatbázis- és lekérdezéskezelő rendszer motorját. Nem vállaltam a munkát, ehelyett egy SQL elemzőt és egy RDBMS (relációsadatbázis-kezelő rendszer) motort kódoltam inkább shell scriptben. A menedzser nem hangsúlyozta eléggé a projekt fontosságát talán épp azért, mert ő maga sem értette, hogy mire is képes egy relációsadatbázis-kezelő rendszer. Úgy tűnik, hogy a korai SQL-es tapasztalataim nagyjából hétköznapinak számítanak a szoftverfejlesztők körében még azok között is, akik informatikai diplomával rendelkeznek. A legtöbben autodidakta módon kerültek közel az SQL-hez: egyfajta 7

9 önvédelmi reakcióként próbálták megoldani a problémákat, amelyek egy-egy projekt kapcsán felmerülhettek, de nem tanulmányozták úgy a nyelvet, ahogy a többi programozási nyelvvel tették. Úgy tűnik, függetlenül attól, hogy az ember profi, vagy csak hobbiszinten programozik vagy akár tudományos kutatómunkát végez egy PhD-hez, az SQL-lel nem szokás a hagyományos keretek között megismerkedni. Amikor jobban megismerkedtem a nyelvvel, meglepett, hogy mennyire különbözik az eljárásorientált programozási nyelvektől: a C-től, a Pascaltól, valamint az olyan shell- vagy objektumorientált nyelvektől is, mint a C++, a Java, a Ruby vagy a Python. Az SQL a LISP-hez, a Haskellhez vagy az XSLT-hez hasonlóan egy deklaratív programozási nyelv, és halmazokra épül, az objektumorientált nyelvek viszont objektumokon alapulnak. A hagyományos képzésben részt vett fejlesztők gyakran visszarettennek ettől az úgynevezett impedancia-összeegyeztethetetlenségi problémától, így sokan inkább az objektumorientált nyelvekre koncentrálnak ahelyett, hogy elvesznének a hatékony SQL-használat dzsungelében óta rengeteg SQL-es munkám volt. SQL-t használtam, amikor alkalmazásokat és könyvtárakat fejlesztettem Perlben és PHP-ban, valamint technikai segítséget, képzést és dokumentációt nyújtottam az InterBase RDBMS-hez. Sok száz netes és levelezőlistás kérdésre válaszoltam, és úgy vettem észre, hogy a fejlesztők rendre ugyanazokat a hibákat követik el. 1.1 Kiknek szól ez a könyv? Ezt a könyvet azoknak a szoftverfejlesztőknek írtam, akiknek SQL-t kell használniuk, és abban szeretnék nekik segítséget nyújtani, hogy hatékonyabban kezeljék ezt a nyelvet. Lehetnek kezdők vagy öreg rókák is: nagyon sok különböző tapasztalattal rendelkező emberrel beszéltem, akik mind profitálhatnak abból, amit itt leírtam. Ha már olvastál egy-két kézikönyvet az SQL-szintaxisról, és ismered egy SELECT utasítás minden záradékát, akkor már sikerrel használhatod a nyelvet. Fokozatosan egyre jobban megérted a nyelv működését: cikkeket olvasol és egyéb alkalmazásokat tanulmányozol de hogyan különböztetheted meg a jó megoldásokat a rosszaktól? Honnan tudhatod, hogy a legjobb megoldásokat választottad, és nem szorítottad magad sarokba azzal, amit elvégeztél? Lehetséges, hogy a könyv egyes részeiben leírtakat már jól ismered, de segíthetnek abban, hogy más nézőpontból közelíthesd meg a problémákat még akkor is, ha a megoldásokkal már tisztában vagy. Mindig jó, ha többszörösen is meggyőződsz róla, hogy a módszereid megfelelők, ehhez pedig nem árt megvizsgálni néhány programozási tévhitet. Más témák újdonságot jelenthetnek számodra; bízom benne, hogy ezek a részek hasznodra válnak majd. Ha képzett adatbázis-adminisztrátor vagy, lehetséges, hogy már megtanultad elkerülni a könyvben ismertetett SQL-programozás kelepcéit ez a könyv ebben az esetben is megismertethet a szoftverfejlesztők nézőpontjaival. Az adatbázis-adminisztrátorok és a szoftverfejlesztők viszonya gyakorta meglehetősen ellenséges, de a kölcsönös tisztelet és a csapatmunka eredményesebbé teheti a közös munkát. Ezt a könyvet arra is használhatjuk, hogy elmagyarázzuk a fejlesztőknek a helyes eljárásokat, és rávilágítsunk annak következményeire, ha eltérnek ezektől az utaktól. 8

10 1.2 Miről szól ez a könyv? De mit is jelent az, hogy antipattern? A szó egy olyan technikát jelöl, amelyet egy probléma megoldására szántak, de gyakran csak újabb problémákat generál. Az antipatterneket meglehetősen széles körben és sokféleképpen alkalmazzák, de mindig valamilyen általános célnak megfelelően. A programozók maguktól vagy egy kolléga, egy újságcikk vagy egy könyv segítségével is előállhatnak egy-egy olyan ötlettel, amelyet be lehet építeni egy antipatternbe. A Portland Pattern Repository honlapján egy csomó objektumorientált szoftverfejlesztéssel és projektmenedzseléssel kapcsolatos antipattern leírását megtalálhatjuk. További leírásokat találhatunk William J. Brown és társai könyvében, az AntiPatternsben [BMMM98]. Ez a könyv a leggyakrabban elkövetett SQL-es hibákról szól. Ezekkel akkor találkoztam, amikor technikai támogatással foglalkoztam, de jó néhánnyal összefutottam különböző továbbképzéseken, szoftverfejlesztések közben és internetes fórumokon is. Én is jó párat elkövettem: semmiből sem lehet többet tanulni, mint abból, amikor késő éjszaka órákon át próbálod kijavítani azokat a hibákat, amelyeket te magad követtél el. A könyv részei A könyvet az antipatternek négy alábbi kategóriájának megfelelően négy részre osztottam: A logikaiadatbázis-tervezés an pa ernjei Mielőtt nekiállnál kódolni, először is el kell döntened, hogy miféle információk tárolására szánod az adatbázist, és meg kell választanod az adatszervezés és az adatok közti kapcsolatok legjobb módját is. Ehhez hozzátartozik a táblák, oszlopok és kapcsolatok megtervezése is. A fizikaiadatbázis-tervezés an pa ernjei Miután már tudod, hogy milyen adatokat kell tárolnod, úgy kell a tárolást megvalósítanod, hogy a lehető legjobban kihasználd az adatbázis mögött lévő RDBMS-t. Ehhez hozzátartozik a táblák és az indexek definiálása, valamint az adattípusok megválasztása is. Ehhez az SQL adatdefiniáló nyelvét használod, például a CREATE TABLE parancsot. Lekérdezési an pa ernek Először is adatokra van szükségünk az adatbázishoz ezután jön az a rész, amikor lekérdezzük az adatot. Az SQL-lekérdezések adatmanipulációs nyelvet olyan parancsokat, mint a SELECT, UPDATE és DELETE használnak. Alkalmazásfejlesztési an pa ernek Az SQL-t más nyelvekben írott alkalmazásokban is szokás használni például C++-ban, Javában, PHP-ben, Pythonban vagy Rubyban. Az SQL-t lehet jól és rosszul is használni ezekben az alkalmazásokban a könyvnek ebben a részében néhány gyakori hibát ismertetek. Több fejezetnek humoros vagy kétértelmű címet adtam: valamiféle hagyománynak számít a patternek és az antipatternek esetében is a metaforikus vagy valamilyen más fogalomra utaló nevek használata. A függelékben néhány relációsadatbázis-elmélet gyakorlati leírását találhatjátok. Sok antipattern éppen az adatbázis-elmélettel kapcsolatos félreértéseken alapszik. 9

11 Az antipatternek anatómiája Minden fejezet az alábbi alfejezeteket tartalmazza: A cél Az a feladat, amelyet épp megpróbálnál megoldani. Az antipatterneket ennek a megoldására használnánk, de végső soron jóval több problémát okoznak, mint amennyit megoldanak. Az antipattern Ebben a részben ismertetem a bevett megoldást, valamint azt, hogy milyen nem várt következményekkel járhat az alkalmazása vagyis miért tekinthetjük antipatternnek. Hogyan ismerjük fel az antipatternt? Vannak bizonyos jelek, amelyek arra utalhatnak, hogy a munkád során egy antipatternt alkalmazol: egy-egy árulkodó akadály, esetleg valami, amit akár te mondasz, akár valaki más mond a dologgal kapcsolatban, lebuktathatja a rejtőzködő antipatternt. Az antipattern indokolt használata A legtöbb szabályhoz tartoznak kivételek is. Lehetségesek olyan körülmények, amelyek ismeretében egy általában antipatternnek tekintett megoldást is bátran alkalmazhatunk vagy legalábbis ez a legkisebb rossz, amit tehetünk. A megoldás Ebben a részben ismertetem az általam előnyben részesített megoldásokat, amelyek anélkül oldják meg a szóban forgó problémát, hogy az antipatternhasználat által okozott kényelmetlenségekkel kellene szembesülnünk. 1.3 Mi nem szerepel ebben a könyvben? Nem fogok leckéket adni az SQL-szintaxisról vagy a nyelv terminológiájáról: az alapokról már számtalan könyv és internetes forrás szól. Úgy tekintem, hogy az olvasó már ismeri annyira az SQL-szintaxist, hogy használni tudja a nyelvet, és meg tud vele oldani néhány problémát. A teljesítmény, a növekvő igényekhez való alkalmazkodás és az optimalizáció a legtöbb adatbázis-alapú alkalmazás fejlesztőjének fontos különösen, ha webes programról van szó. Több olyan könyv is megjelent, amelyek speciálisan az adatbázis-kezeléssel és a teljesítménnyel foglalkoznak jómagam az SQL Performance Tuning [GP03] és a High Performance MySQL [SZTZ08] második kiadását javasolnám ebben a témában. Ez a könyv is érint néhány olyan dolgot, amely fontos lehet a teljesítmény szempontjából, de nem ezt helyeztem a könyv középpontjába. Megpróbáltam olyan problémákat összegyűjteni, amelyek minden adatbázis-kezelő nyelvvel kapcsolatban felmerülhetnek, és ennek megfelelően olyan megoldásokat is igyekeztem javasolni, amelyek a legtöbb rendszeren belül működőképesek lehetnek. Az SQL megfelel az ANSI- és az ISO-szabványoknak ahogy a legtöbb adatbázis-kezelő nyelv is. Ha csak lehet, megpróbálom úgy körülírni a problémákat és a megoldásokat, hogy minden nyelvre és problémára alkalmasak lehessenek (emellett a továbbiakban igyekszem nyilvánvalóvá tenni, ha ez másképp lenne). 10

12 Az adat-hozzáférési keretrendszerek és objektumorientált leképezési könyvtárak hasznosnak bizonyulhatnak, de ezek sem tartoznak ennek a könyvnek a főbb témái közé. A legtöbb kódot PHP-ban írtam, olyan egyszerűen, ahogy csak tudtam: csak arra jók, hogy a legtöbb programozási nyelvben hasonlóan működnek. Az adatbázis-kezelés olyan kérdései, mint a szerver méretének eldöntése, az installálással és konfigurációval kapcsolatos problémák, a monitorozás, a mentések, a naplóelemzés és a biztonság fontos ügyek de erről egy külön könyvet is lehetne írni. Ezt a könyvet nem annyira a rendszergazdák számára írtam, mint az SQL-es adatbázis-fejlesztők számára, így erről itt nem is fogok sokat szólni. Ez a könyv az SQL-ről és a relációs adatbázisokról szól, nem pedig az objektumorientált adatbázisokról, a kulcs/érték párokról, az oszloporientált, a dokumentumorientált, a hierarchikus és hálós adatbázisokról. Ebben a könyben nem foglalkozom a map/reduce keretrendszerekkel és a szemantikus adattárolással sem. Az előbb felsorolt adattárolási módszerek előnyeinek és hátrányainak összahasonlítása és optimális felhasználásuk tárgyalása érdekes feladat lenne ugyan, de ez már túlmutatna ennek a könyvnek a keretein. 1.4 Konvenciók Az alábbiakban a könyvben használt konvenciókat ismertetem. Írásmód Az SQL-kulcsszavakat csupa nagybetűvel adtam meg, hogy jobban látszódjanak a szövegben lásd például a SELECT parancsot. A táblanevek minden szava nagybetűvel kezdődik mint pl. az Accounts vagy a BugsProducts neveknél. Az SQL-oszlopneveket kisbetűvel adtam meg, a névben szereplő szavakat pedig aláhúzással választottam el (például: account_name). A szövegliterálokat dőlt betűvel adtam meg, például Terminológia Az adatbázisokkal kapcsolatosan az index szó alatt az adatbázis-kezelésben megszokott rendezett információhalmazt értjük. Az SQL-ben a lekérdezés és a programutasítás szavak jobbára felcserélhetőnek tűnnek ez a legtöbb komplett SQL-parancs esetében így is van. Az érthetőség kedvéért én a lekérdezést csak a SELECT parancsok esetében alkalmazom, a programutasítást pedig minden egyéb esetben (például UPDATE, INSERT, DELETE és az adatdefiniáló parancsok esetében is). Egyedkapcsolat-diagramok A relációs adatbázisok megtervezésének legelterjedtebb módja egy egyedkapcsolat-diagram készítése. A táblákat ebben az esetben dobozokba zárjuk, a kapcsolatokat pedig az őket összekötő vonalak jelképezik. A vonalak végén található jelölések tájékoztatnak bennünket a kapcsolatok típusáról (lásd például a könyv 1. ábráját, amely az egyedkapcsolat-diagramokat mutatja be a 7. oldalon). 11

13 1. ábra. Példák az egyedkapcsolat-diagramokra 1.5 Adatbázis példa A könyvben szereplő legtöbb problémát egy hipotetikus hibanyomkövető alkalmazáson keresztül szemléltetem. Az alkalmazás egyedkapcsolat-modellje a könyv 2. ábráján látható a 14. oldalon. Érdemes megfigyelni a Bugs és az Accounts táblázatok közötti három kapcsolódást: ezek három különböző idegen kulcsot jeleznek. Az alábbi kódból látszik, hogy miképpen definiálom a táblákat. Néhány esetben a könyv későbbi részeiben leírt esetek miatt választottam ezt vagy azt a megoldást, így ezek nem feltétlenül esnek egybe egy éles helyzetben alkalmazott kóddal. Leg- 12

14 többször megpróbálok a szabványos SQL-hez igazodni, így a példa használható különféle adatbázis-kezelő rendszerekben, de néha használok MySQL adattípusokat is ide tartozik például a SERIAL vagy a BIGINT. Introduction/setup.sql CREATE TABLE Accounts ( account_id SERIAL PRIMARY KEY, account_name VARCHAR(20), first_name VARCHAR(20), last_name VARCHAR(20), VARCHAR(100), password_hash CHAR(64), portrait_image BLOB, hourly_rate NUMERIC(9,2) ); CREATE TABLE BugStatus ( status VARCHAR(20) PRIMARY KEY ); CREATE TABLE Bugs ( bug_id SERIAL PRIMARY KEY, date_reported DATE NOT NULL, summary VARCHAR(80), description VARCHAR(1000), resolution VARCHAR(1000), reported_by BIGINT UNSIGNED NOT NULL, assigned_to BIGINT UNSIGNED, verified_by BIGINT UNSIGNED, status VARCHAR(20) NOT NULL DEFAULT NEW, priority VARCHAR(20), hours NUMERIC(9,2), FOREIGN KEY (reported_by) REFERENCES Accounts(account_id), FOREIGN KEY (assigned_to) REFERENCES Accounts(account_id), FOREIGN KEY (verified_by) REFERENCES Accounts(account_id), FOREIGN KEY (status) REFERENCES BugStatus(status) ); CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, bug_id BIGINT UNSIGNED NOT NULL, author BIGINT UNSIGNED NOT NULL, comment_date DATETIME NOT NULL, comment TEXT NOT NULL, FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id), FOREIGN KEY (author) REFERENCES Accounts(account_id) ); CREATE TABLE Screenshots ( bug_id BIGINT UNSIGNED NOT NULL, image_id BIGINT UNSIGNED NOT NULL, screenshot_image BLOB, caption VARCHAR(100), PRIMARY KEY (bug_id, image_id), FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id) ); CREATE TABLE Tags ( bug_id BIGINT UNSIGNED NOT NULL, tag VARCHAR(20) NOT NULL, PRIMARY KEY (bug_id, tag), FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id) ); 13

15 CREATE TABLE Products ( product_id SERIAL PRIMARY KEY, product_name VARCHAR(50) ); CREATE TABLE BugsProducts ( bug_id BIGINT UNSIGNED NOT NULL, product_id BIGINT UNSIGNED NOT NULL, PRIMARY KEY (bug_id, product_id), FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id), FOREIGN KEY (product_id) REFERENCES Products(product_id) ); 2. ábra. A példa-hibaadatbázis diagramja Néhány fejezetben, leginkább a logikai adatbázisokkal összefüggő antipatternek kapcsán, más definíciókat is alkalmazok vagy azért, hogy bemutassam az antipatternt, vagy pedig azért, hogy egy olyan megoldást mutassak be, amellyel elkerülhető az antipattern használata. 1.6 Köszönetnyilvánítás Legelőször is feleségemnek, Janenek nyilvánítanék köszönetet az ő szeretete, támogatása és inspirációja nélkül nem tudtam volna megírni ezt a könyvet, nem is említve, hogy mennyit nyaggatott, hogy munkára ösztönözzön. Szintén megköszönném kritikusaim munkáját is: rengeteg időt áldoztak rám. Az általuk tett javaslatok nagyban hozzájárultak ahhoz, hogy ez a könyv napvilágot lásson. Marcus Adams, Jeff Bean, Frederic Dadoud, Darby Felton, Arjen Lentz, Andy Lester, Chris Levesque, Mike Naberezny, Liz Nealy, Daev Roehr, Marco Romanini, Mark Schmidt, Gale Straney és Danny Thorpe is bábáskodtak a könyv megszületésekor köszönet érte. Köszönöm továbbá szerkesztőmnek, Jacquelyn Carternek és a Pragmatic Book-shelf kiadójának, akik értették, hogy miért is írom ezt a könyvet. 14

16 I. rész Logikai adatbázisokkal kapcsolatos antipatternek

17

18 Egy Netscape-programozó, akinek a nevét inkább elhallgatnám, egyszer átadott egy pointert a JavaScriptnek, sztringként tárolta, majd visszaadta a C-nek. Ezzel legalább harminc embernek okozott álmatlan éjszakákat. Blake Ross 2. FEJEZET Toronyiránt Tegyük föl azt kell megoldanod, hogy egy hibanyomkövető alkalmazásban egy felhasználót megjelölj elsődleges kapcsolattartóként egy termékhez. Az eredeti programban egy termékhez csak egyetlen felhasználót lehetett hozzárendelni, ennek ellenére nem ért különösebb meglepetésként, amikor megkaptad a feladatot, hogy ezentúl egy termékhez több felhasználót is meg lehessen adni. Első ránézésre elég egyszerű megoldásnak tűnt az adatbázis megváltoztatása úgy, hogy a felhasználók listáját ezentúl vesszőkkel elválasztva tároljuk, ahelyett, hogy csupán egyetlen azonosítót használnánk. Kisvártatva megjelenik a főnököd, és elújságolja, hogy a kollégák hibára akadtak: a mérnökséghez fölvettek néhány új embert, de legfeljebb csak ötöt tudnak bevezetni a rendszerbe, különben hibaüzenetet kapnak. Mi lehet a probléma? Bólogatsz, és felvilágosítod, hogy ez már csak így van legfeljebb ennyi embert tudsz egy-egy projekthez társítani. Mintha ennek így is kéne működnie. Mindenesetre úgy érzed, hogy a főnök szerint ennek nem így kellene működnie, és bővebb magyarázatra vágyik. Bele is fogsz: Hát, öt-tíz, esetleg tízegynéhány embert tudsz hozzájuk társítani, attól függ, hogy milyen régi a felhasználó azonosítója. A főnök felhúzza a szemöldökét. Folytatod a magyarázkodást: A felhasználók azonosítóját egy vesszőkkel elválasztott listában tárolom, de az azonosítóknak bele kell férniük egy adott hosszúságú sztringbe. Ha az azonosítók rövidek, több fér belőlük a sztringbe; a régi felhasználók pedig 99-nél kisebb azonosítóval rendelkeznek, vagyis rövidebbel, mint az újabbak. A főnök még mindig nem tűnik valami elégedettnek. Kezded úgy érezni, hogy ma nem fogsz egyhamar hazajutni. A programozók általában azért választják az előbb ismertetett megoldást, mert el szeretnék kerülni egy kapcsoló tábla létrehozását egy több a többhöz kapcsolatban. Ezt az antipatternt azért nevezem toronyiránti megoldásnak, mert a legfőbb célja az, hogy valahogy levágja az utat. 2.1 A cél: többértékű attribútumok tárolása Amikor egy tábla egy oszlopához csak egy érték tartozik, meglehetősen egyszerű a dolgunk: kiválaszthatunk egy SQL-es adattípust, mely az adott érték egyetlen példányának megfelel. Ez lehet egész, dátum vagy sztring is. De hogyan tárolhatjuk a kapcsolódó értékek halmazát egy oszlopban? 17

19 A már említett hibanyomkövető adatbázisunk esetében egy terméket egy egész oszlop használatával hozzárendelhetünk egy kapcsolattartóhoz a Products táblában. A felhasználókhoz több termék is tartozhat, illetve minden termékhez csak egyetlen felhasználó tartozik, így ebben az esetben egy több az egyhez kapcsolatról beszélhetünk a termékek és a felhasználók között. Jaywalking/obj/create.sql CREATE TABLE Products ( product_id SERIAL PRIMARY KEY, product_name VARCHAR(1000), account_id BIGINT UNSIGNED, FOREIGN KEY (account_id) REFERENCES Accounts(account_id) ); INSERT INTO Products (product_id, product_name, account_id) VALUES (DEFAULT, Visual TurboBuilder, 12); Idővel előfordulhat, hogy egyetlen termékhez adott esetben több kapcsolattartó is tartozik, így a több az egyhez kapcsolat mellett lehetővé kell tennünk az egy a többhöz kapcsolatot is a termékek és a felhasználók között. A Products tábla egy-egy sorához egynél több kapcsolattartó is tartozhat. 2.2 Az antipattern: vesszőkkel elválasztott listák használata Annak érdekében, hogy minél kevesebbet kelljen változtatni az adatbázis felépítésén, úgy határozol, hogy megváltoztatod az account_id oszlop adattípusát VAR- CHAR-ra. Így, ha vesszőkkel választod el őket, több felhasználói azonosítót is tárolhatsz a mezőben. Jaywalking/anti/create.sql CREATE TABLE Products ( product_id SERIAL PRIMARY KEY, product_name VARCHAR(1000), account_id VARCHAR(100), -- comma-separated list FOREIGN KEY (account_id) REFERENCES Accounts(account_id) ); INSERT INTO Products (product_id, product_name, account_id) VALUES (DEFAULT, Visual TurboBuilder, 12,34 ); Úgy néz ki, hogy az ötlet bevált: nem volt szükség új táblák és mezők létrehozására, csupán egyetlen mező adattípusának megváltoztatását kellett elvégezned. De érdemes egy pillantást vetnünk azokra az adatintegritási és teljesítménybeli problémákra, amelyeket ezzel a felépítéssel hoztunk létre. Egy adott felhasználóhoz tartozó összes termék lekérdezése A lekérdezések meglehetősen bonyolultak lehetnek, ha az idegen kulcsokat egyetlen mezőben szeretnénk tárolni. Ilyenkor már nem egyenlőségvizsgálattal dolgozunk, hanem egy szövegmintás keresést kell futtatnunk. MySQL-ben ez valahogy így néz ki, ha például a 12-es felhasználóhoz tartozó termékeket szeretnénk megtalálni: 18

20 Jaywalking/anti/regexp.sql SELECT * FROM Products WHERE account_id REGEXP [[:<:]]12[[:>:]] ; A mintának megfelelő kifejezésekkel előfordulhat, hogy hamis egyezéseket hoznak ki, és nem képesek indexeket használni. Mivel az efféle szintaxis minden adatbázis-kezelőnél másképp néz ki, az így készített kód nem lesz hordozható. Felhasználók lekérdezése egy adott termékhez Az előbbi esethez hasonlóan a vesszőkkel elválasztott lista használata akkor is szerencsétlen megoldás, ha megpróbáljuk összekapcsolni a hivatkozott tábla megfelelő sorával. Jaywalking/anti/regexp.sql SELECT * FROM Products AS p JOIN Accounts AS a ON p.account_id REGEXP [[:<:]] a.account_id [[:>:]] WHERE p.product_id = 123; Két tábla összekapcsolásakor egy ehhez hasonló kifejezés alkalmazása lehetetlenné teszi az indexek használatát. A lekérdezésnek mindkét táblán végig kell futnia, létre kell hoznia a keresztszorzatot, és minden sorkombinációra ki kell értékelnie a reguláris kifejezést. Összesítő lekérdezések Az összesítő lekérdezéseket függvények használatával hajthatjuk végre (például: COUNT(), SUM(), AVG()). Ezek a függvények viszont elsősorban arra alkalmasak, hogy sorokból képzett csoportokra alkalmazzuk őket, nem pedig vesszőkkel elválasztott listákra. Ez utóbbi esetben az alábbi kódban bemutatotthoz hasonló trükkre lesz szükségünk ahhoz, hogy működjön a dolog: Jaywalking/anti/count.sql SELECT product_id, LENGTH(account_id) - LENGTH(REPLACE(account_id,,, )) + 1 AS contacts_per_product FROM Products; Az ilyen megoldások gyakran elég ügyesen felépítettek, de sosem igazán átláthatók. Elég sokáig tart lekódolni őket, és a hibákat is nehéz utólag megtalálni bennük. Akadnak olyan összesítő lekérdezések is, amelyeket az ehhez hasonló vargabetűkkel sem lehet megoldani. Felhasználók frissítése egy adott termékhez A lista végéhez sztringösszefűzéssel hozzáadhatunk egy új azonosítót, de ez még nem garantálja, hogy a listánk rendezettsége változatlan marad. Jaywalking/anti/update.sql UPDATE Products SET account_id = account_id, 56 WHERE product_id = 123; A lista egy elemének törléséhez két SQL-utasítást kell futtatnunk: egyet, hogy lekérdezzük a régi listát, a másodikat pedig a frissített lista mentéséhez. 19

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai SQL ALAPOK Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai BEVEZETÉS SQL: Structured Query Language Strukturált Lekérdező Nyelv Szabvány határozza meg, azonban számos nyelvjárása létezik

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 3. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Tábla kapcsolatok létrehozása,

Részletesebben

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT ÓBUDAI EGYETEM Neumann János Informatikai Kar Nappali Tagozat ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT NÉV: MÁK VIRÁG NEPTUN KÓD: A DOLGOZAT CÍME: Jani bácsi székadatbázisa Beadási határidő: 14. oktatási hét

Részletesebben

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat 2012.03.05.

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat 2012.03.05. 1 2 Adatbáziskezelı-szerver Általában dedikált szerver Optimalizált háttértár konfiguráció Csak OS + adatbázis-kezelő szoftver Teljes memória az adatbázisoké Fő funkciók: Adatok rendezett tárolása a háttértárolón

Részletesebben

Adatbázis, adatbázis-kezelő

Adatbázis, adatbázis-kezelő Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,

Részletesebben

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY / MONEY 8

Részletesebben

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE TINIINT 1 byte 12 SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY

Részletesebben

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék MySQL Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék Távközlés-informatika szakirány Protokollok és Szoftverek I. Zsiga Bálint Kovács Ákos Az relációs adatbázis-kezelő rendszerekről Kis

Részletesebben

Adatbázis-kezelés. Harmadik előadás

Adatbázis-kezelés. Harmadik előadás Adatbázis-kezelés Harmadik előadás 39 Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord

Részletesebben

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu Számonkérés 2 Papíros (90 perces) zh az utolsó gyakorlaton. Segédanyag nem használható Tematika 1. félév 3 Óra Dátum Gyakorlat 1. 2010.09.28.

Részletesebben

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2 Tartalomjegyzék Tartalomjegyzék 1 Az SQL nyelv 1 Az SQL DDL alapjai 2 Adatbázis parancsok 2 Táblaparancsok 2 A táblázat létrehozása 2 A táblázat módosítása 3 A tábla törlése 3 Indextábla létrehozása 3

Részletesebben

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Programozás. Adatbázis-kezelés (alapok) Fodor Attila Programozás Adatbázis-kezelés (alapok) Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 22. Bevezetés Adatbáziskezelés

Részletesebben

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) ); Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) ); CREATE TABLE `dihunor`.`csapat` ( `ID` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'A csapat azonositoja',

Részletesebben

SQL parancsok feldolgozása

SQL parancsok feldolgozása Az SQL nyelv SQL nyelv szerepe Sequental Query Language, deklaratív nyelv Halmaz orientált megközelítés, a relációs algebra műveleteinek megvalósítására Előzménye a SEQUEL (IBM) Algoritmus szerkezeteket

Részletesebben

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok. Adatbázis I. 11. előadás Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok. 1 1. Kulcsok az SQL-ben 2. Hivatkozási épség és idegen kulcsok 3. Attribútum értékre vonatk. megszorítások

Részletesebben

Relációsémák létrehozása SQL nyelvben

Relációsémák létrehozása SQL nyelvben Relációsémák létrehozása SQL nyelvben SQL (Structured Query Language) lekérdezés módosítás relációséma leírására alkalmas utasítások: attribútumnevek, attribútumok adattípusa megszorításokat is megadhatunk,

Részletesebben

B I T M A N B I v: T 2015.03.01 M A N

B I T M A N B I v: T 2015.03.01 M A N Adatbázis Rendszerek MSc 2. Gy: MySQL Táblák, adatok B I v: T 2015.03.01 M A N 1/41 Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítások DCL utasítások 2/41 Az SQL jellemzése Az SQL a relációs

Részletesebben

PHP-MySQL. Adatbázisok gyakorlat

PHP-MySQL. Adatbázisok gyakorlat PHP-MySQL Adatbázisok gyakorlat Weboldalak és adatbázisok Az eddigiek során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat készíteni. A dinamikus weboldalak az esetek többségében valamilyen

Részletesebben

ADATBÁZIS RENDSZEREK I BEADANDÓ

ADATBÁZIS RENDSZEREK I BEADANDÓ ADATBÁZIS RENDSZEREK I BEADANDÓ n é v : H u zynets Erik n e p t un: BJ8BDJ t a n k ö r: G2-BGI G y a k. v ezető: Smid László G y a k. időpontja: Szerda 16-18 Feladat megfogalmazása Beadandóm főként számítógépes

Részletesebben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) közönséges felhasználók SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:

Részletesebben

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázis kezelés Delphiben. SQL lekérdezések Adatbázis kezelés Delphiben. SQL lekérdezések Structured Query Language adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: Utasítások tetszés szerint tördelhetők Utasítások végét pontosvessző zárja

Részletesebben

Adatbázisok* tulajdonságai

Adatbázisok* tulajdonságai Gazdasági folyamatok térbeli elemzése 4. előadás 2010. 10. 05. Adatbázisok* tulajdonságai Rendezett, logikailag összefüggő és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza Az

Részletesebben

Vizuális programozás gyakorlat

Vizuális programozás gyakorlat Vizuális programozás gyakorlat A gyakorlat célja az entitás modell készítésének és az MS SQLEXPRESS használatának gyakorlása. A gyakorlat során egy könyvtári szoftver adatmodelljét tervezzük meg, valamint

Részletesebben

Adatbázis rendszerek 6.. 6. 1.1. Definíciók:

Adatbázis rendszerek 6.. 6. 1.1. Definíciók: Adatbázis Rendszerek Budapesti Műszaki és Gazdaságtudományi Egyetem Fotogrammetria és Térinformatika 6.1. Egyed relációs modell lényegi jellemzői 6.2. Egyed relációs ábrázolás 6.3. Az egyedtípus 6.4. A

Részletesebben

Többtáblás lekérdezések megjelenítése

Többtáblás lekérdezések megjelenítése Többtáblás lekérdezések megjelenítése Célkitűzés Egynél több táblának egyenlőségen vagy nem-egyenlőségen alapuló összekapcsolást végző SELECT utasítások írása. Egy táblának önmagával történő összekapcsolása.

Részletesebben

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai: 8. Gyakorlat SQL SQL: Structured Query Language; a relációs adatbáziskezelők szabványos, strukturált lekérdező nyelve SQL szabványok: SQL86, SQL89, SQL92, SQL99, SQL3 Az SQL utasításokat mindig pontosvessző

Részletesebben

Adatbázis-kezelés, információs-rendszerek

Adatbázis-kezelés, információs-rendszerek Adatbázis-kezelés, információs-rendszerek 3. Ea: Eskúel (2011) Structured Query Language v: 2011.09.05 Szűcs Miklós - ME, ÁIT. 1.o Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítás DCL utasítások

Részletesebben

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK Lénárt Balázs tanársegéd TANTERV Hét Dátum Előadó Előadások Időpont: szerda 8:30-10:00, helye: LFSZÁMG Dátum Gyakvezető 1. 9. 11. Tokodi Adatbázis

Részletesebben

BEVEZETÉS Az objektum fogalma

BEVEZETÉS Az objektum fogalma BEVEZETÉS Az objektum fogalma Program (1) Adat (2) Objektum Kiadványszerkesztés Word Táblázatkezelés Excel CAD AutoCad Adatbáziskezelés Access 1 Program (1) Adat (2) Objektum Adatmodell (2) A valós világ

Részletesebben

A wiki módszer. Internetes tartalom kooperatívan, szabad szoftveres alapon. Gervai Péter

A wiki módszer. Internetes tartalom kooperatívan, szabad szoftveres alapon. Gervai Péter A wiki módszer Internetes tartalom kooperatívan, szabad szoftveres alapon Gervai Péter A wiki módszer Jellegzetességek A leírónyelv Biztonság Az első wiki: WikiWikiWeb A legnagyobb Wiki: a Wikipédia További

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Informatikus informatikus 54 481 04 0010 54 07 Térinformatikus Informatikus É 1/6

Informatikus informatikus 54 481 04 0010 54 07 Térinformatikus Informatikus É 1/6 A 10/2007 (II. 27.) SzMM rendelettel módosított 1/2006 (II. 17.) OM rendelet Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről alapján. Szakképesítés,

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

AdoDB a gyakorlatban

AdoDB a gyakorlatban Harmadik Magyarországi PHP Konferencia 2005 http://www.phpconf.hu/ Előadó: Török Gábor gabor.torok@webdevil.hu (WebDevil Oktatási Központ) Mi? ADOdb: Active Data Objects Database Megvalósítás függetlenül

Részletesebben

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Magas szintű adatmodellek Egyed/kapcsolat modell I. Magas szintű adatmodellek Egyed/kapcsolat modell I. Ullman-Widom: Adatbázisrendszerek. Alapvetés. 4.fejezet Magas szintű adatmodellek (4.1-4.3.fej.) (köv.héten folyt.köv. 4.4-4.6.fej.) Az adatbázis modellezés

Részletesebben

LBRA6i integrált rendszer

LBRA6i integrált rendszer LBRA6i integrált rendszer LIBRA 6i logolás és a log megtekintése Készítette: Libra Szoftver Zrt. Létrehozás dátuma: 2005.12.15. Utolsó módosítás: 2014.10.30. Referencia szám: LIBRA6i_UZEM_V_1.5 Verzió:

Részletesebben

Adatbázis-kezelés. alapfogalmak

Adatbázis-kezelés. alapfogalmak Adatbázis-kezelés alapfogalmak Témakörök Alapfogalmak Adatmodellek Relációalgebra Normalizálás VÉGE Adatbázis-kezelő rendszer Database Management System - DBMS Integrált programcsomag, melynek funkciói:

Részletesebben

Egyetemi könyvtári nyilvántartó rendszer

Egyetemi könyvtári nyilvántartó rendszer RENDSZERTERV Egyetemi könyvtári nyilvántartó rendszer A rendszer célja A projekt célja egy egyetemi könyvtár nyilvántartó rendszerének megtervezése. A legfőbb követelmény, amit a rendszerrel szemben támasztok,

Részletesebben

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 INFORMATIKA ÁGAZATI ALKALMAZÁSAI Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP-4.1.2-08/1/A-2009-0010 2. Adatbáziskezelés eszközei Adatbáziskezelés feladata Adatmodell típusai Relációs adatmodell

Részletesebben

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben? Adatbázis modellek 5. téma XML DB Az adatkezelés és XML kapcsolata Miért fontos az XML használata az adatbázis kezelésben? Adattárolás alapformái: - strukturált - szabad-szöveges - szemi struktúrált -

Részletesebben

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés

Részletesebben

Bár a szoftverleltárt elsősorban magamnak készítettem, de ha már itt van, miért is ne használhatná más is.

Bár a szoftverleltárt elsősorban magamnak készítettem, de ha már itt van, miért is ne használhatná más is. SZOFTVERLELTÁR FREE Amennyiben önnek vállalkozása van, akkor pontosan tudnia kell, hogy milyen programok és alkalmazások vannak telepítve cége, vállalkozása számítógépeire, és ezekhez milyen engedélyeik,

Részletesebben

Adatbázis rendszerek tervezése

Adatbázis rendszerek tervezése Sapientia - Erdélyi Magyar Tudomány Egyetem Csíkszereda Adatbázis rendszerek tervezése A Ditrói Önkormányzat könyvvitele Varga Orsolya Könyvelés és gazdálkodási informatika II. év 2014.04.30. 1 Tartalomjegyzék

Részletesebben

Adatbázis alapú rendszerek

Adatbázis alapú rendszerek Adatbázis alapú rendszerek BookIt projekt dokumentáció Kotosz Tibor, Krajcsovszki Gergely, Seres Regina 2011 Tartalomjegyzék Jelenlegi rendszer... 2 Jelenlegi rendszer fizikai AFD-je... 2 Jelenlegi rendszer

Részletesebben

Access XP alapokon Tartalomjegyzék

Access XP alapokon Tartalomjegyzék Access XP alapokon Tartalomjegyzék Kapcsolódhat a fejezetben elkészítendő raktárrendszerhez egy számlázó program?...4 1. Az Access eszközigénye, telepítése...4 Az én Office programom nem tartalmazza az

Részletesebben

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I 1 SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés

Részletesebben

Informatikai alapismeretek Földtudományi BSC számára

Informatikai alapismeretek Földtudományi BSC számára Informatikai alapismeretek Földtudományi BSC számára 2010-2011 Őszi félév Heizlerné Bakonyi Viktória HBV@ludens.elte.hu Titkosítás,hitelesítés Szimmetrikus DES 56 bites kulcs (kb. 1000 év) felcserél, helyettesít

Részletesebben

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva by A feladat bemutatása...1 Táblák létrehozása...1 Táblák feltöltése...2 Adatbáziskezelés php-ben...5 Csatlakozás az MySQL szerverhez

Részletesebben

Az adatbázisrendszerek világa

Az adatbázisrendszerek világa Az adatbázisrendszerek világa Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 1.1. Az adatbázisrendszerek fejlődése 1.2. Az adatbázis-kezelő rendszerek áttekintése

Részletesebben

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk. JSON tutorial Készítette: Cyber Zero Web: www.cyberzero.tk E-mail: cyberzero@freemail.hu Msn: cyberzero@mailpont.hu Skype: cyberzero_cz Fb: https://www.facebook.com/cyberzero.cz BEVEZETÉS: A JSON (JavaScript

Részletesebben

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010. május 1. BEVEZETÉS Az útmutató célja az Országos Területrendezési

Részletesebben

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben 1.0 Bevezetés. A relációs adatmodell. 1.1 Relációs algebra 1.2 Műveletek a relációs

Részletesebben

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting http://www.mattakis.com Google App Engine az Oktatásban Kis 1.0 Gergely ügyvezető MattaKis Consulting http://www.mattakis.com Bemutatkozás 1998-2002 között LME aktivista 2004-2007 Siemens PSE mobiltelefon szoftverfejlesztés,

Részletesebben

N Y I L A T K O Z A T

N Y I L A T K O Z A T N Y I L A T K O Z A T A COM for Web internetes számlázó alkalmazás (https://konyveles.multienergie.hu) számlázási rendjéről. 1. A számlák iktatószámainak felépítése: 1.1. Az iktatószám felépítése kimenő

Részletesebben

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI

Részletesebben

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE ADATBÁZIS VERZIÓKÖVETÉSE:! Marics Tamás 2013. június 20. TEMATIKA î Adatbázis verziókövetése î Liquibase î Liquiface 2/26 ADATBÁZIS VERZIÓKÖVETÉSE î Miért is jó ez?! A referencia- adatbázis mindig felépíthető

Részletesebben

Hogyan fogalmazzuk meg egyszerűen, egyértelműen a programozóknak, hogy milyen lekérdezésre, kimutatásra, jelentésre van szükségünk?

Hogyan fogalmazzuk meg egyszerűen, egyértelműen a programozóknak, hogy milyen lekérdezésre, kimutatásra, jelentésre van szükségünk? Hogyan fogalmazzuk meg egyszerűen, egyértelműen a programozóknak, hogy milyen lekérdezésre, kimutatásra, jelentésre van szükségünk? Nem szükséges informatikusnak lennünk, vagy mélységében átlátnunk az

Részletesebben

Adatbázis-kezelés. Második előadás

Adatbázis-kezelés. Második előadás Adatbázis-kezelés Második előadás 19 Adatmodell Modell: a valóság olyan matematikai vagy tárgyi leképezése, ami a modellalkotó számára fontos tulajdonságokban egyezést utat a valósággal. Adatmodell: az

Részletesebben

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv: 5. Gyakorlat 5.1 Hálós adatbázis modell műveleti része NDQL, hálós lekérdező nyelv: A lekérdezés navigációs jellegű, vagyis a lekérdezés megfogalmazása során azt kell meghatározni, hogy milyen irányban

Részletesebben

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC ADATBÁZISOK Adatbázis = adott formátum és rendszer szerint tárolt adatok összessége. DBMS feladatai: adatstruktúra (adatbázisséma)

Részletesebben

AUTOSOFT AMS A PROFIT GENERÁTOR

AUTOSOFT AMS A PROFIT GENERÁTOR [G00001] Mire jó az AMS napló 1. Tartalom Kinek készült ez a leírás?... 1 Az első naplózási szint... 2 A naplózási második szintje...3 A rendszergazda napló az alábbi tevékenységeket gyűjti... 5 1. rész...

Részletesebben

Adatbázisok I 2012.05.11. Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Adatbázisok I 2012.05.11. Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés Adatbázisok I Szemantikai adatmodellek Szendrői Etelka PTE-PMMK Rendszer és Szoftvertechnológiai Tanszék szendroi@pmmk.pte.hu Adatmodellek komponensei Adatmodell: matematikai formalizmus, mely a valóság

Részletesebben

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL Témavezető: Dr. Bajalinov Erik Tudományos főmunkatárs Készítette: Juhász Gergely József Informatikatanári

Részletesebben

Szociális ellátások nyilvántartási rendszere CSTINFO Lekérdezői modul

Szociális ellátások nyilvántartási rendszere CSTINFO Lekérdezői modul Szociális ellátások nyilvántartási rendszere CSTINFO Lekérdezői modul Békéscsaba, 2013.május 1 A települési önkormányzatok jegyzői, a közös önkormányzati hivatalok jegyzői, a kormányhivatalok járási hivatalai,

Részletesebben

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.4. Relációs algebra (áttekintés) 5.1.

Részletesebben

Adatbázis használata PHP-ből

Adatbázis használata PHP-ből Adatbázis használata PHP-ből Adatbázis használata PHP-ből...1 Nyílt forráskódú adatbázisok...1 A mysql függvények...2 A mysqli függvények...4 Bináris adatok adatbázisban való tárolása...8 Adatbázis csatoló

Részletesebben

Bevezetés a programozásba

Bevezetés a programozásba Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit

Részletesebben

Órarendkészítő szoftver

Órarendkészítő szoftver SchoolTime Órarendkészítő szoftver 2.0 verzió Tartalomjegyzék: 1., Belépés a programba...3 2., Órarend főtábla...3 3., Tanátok...4 3.1., Új tanár felvitele, módosítása...4 3.2., Tanár törlése...4 3.3.,

Részletesebben

II. év. Adatbázisok és számítógépek programozása

II. év. Adatbázisok és számítógépek programozása II. év Adatbázisok és számítógépek programozása A programozási ismeretek alapfogalmai a) algoritmus b) kódolás c) program a) algoritmus: elemi lépések sorozata, amely a következı tulajdonságokkal rendelkezik:

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 1 I. HALmAZOk 1. JELÖLÉSEk A halmaz fogalmát tulajdonságait gyakran használjuk a matematikában. A halmazt nem definiáljuk, ezt alapfogalomnak tekintjük. Ez nem szokatlan, hiszen

Részletesebben

Nagy HF u tmutato 2011/2012 II. fe le v

Nagy HF u tmutato 2011/2012 II. fe le v A programozás alapjai 1. BMEVIHIA106 Nagy HF u tmutato 2011/2012 II. fe le v Analízis (Nyelv független) 1. A Házi feladat téma szöveges leírása. 2. A feladat résztvevőinek azonosítása 3. A résztvevők tulajdonságai

Részletesebben

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

XML alapú adatbázis-kezelés. (Katona Endre diái alapján) XML alapú adatbázis-kezelés Adatstruktúrák: Digitális kép, hang: teljesen strukturálatlan A web (linkek): részben strukturált Relációs: teljesen strukturált Motiváció: (Katona Endre diái alapján) Ismeretlen

Részletesebben

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 a TávTagTár programhoz Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43 Tartalomjegyzék Futási feltételek... 3 Telepítés... 3 Indítás... 3 Főablak... 4 Új személy felvétele...

Részletesebben

4. Javítás és jegyzetek

4. Javítás és jegyzetek és jegyzetek Schulcz Róbert schulcz@hit.bme.hu A tananyagot kizárólag a BME hallgatói használhatják fel tanulási céllal. Minden egyéb felhasználáshoz a szerző engedélye szükséges! 1 Automatikus javítás

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlaton a következőket fogjuk gyakorolni:

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlaton a következőket fogjuk gyakorolni: 1 Adatbázis kezelés 4. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlaton a következőket fogjuk gyakorolni: Adatlekérdezés Tábla létrehozása,

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

1. kép. A Stílus beállítása; új színskála megadása.

1. kép. A Stílus beállítása; új színskála megadása. QGIS Gyakorló Verzió: 1.7. Wroclaw Cím: A Print composer használata és a címkézés. Minta fájl letöltése innen: http://www.box.net/shared/87p9n0csad Egyre több publikációban szerepelnek digitális térképek,

Részletesebben

Adatbázis fejlesztés és üzemeltetés II. Szabó Bálint

Adatbázis fejlesztés és üzemeltetés II. Szabó Bálint Adatbázis fejlesztés és üzemeltetés II. Szabó Bálint MÉDIAINFORMATIKAI KIADVÁNYOK Adatbázis fejlesztés és üzemeltetés II. Szabó Bálint Eger, 2013 Korszerű információtechnológiai szakok magyarországi adaptációja

Részletesebben

Kincskereső Könyvelő Klub. Moodle felhasználói kézikönyv

Kincskereső Könyvelő Klub. Moodle felhasználói kézikönyv Kincskereső Könyvelő Klub Moodle felhasználói kézikönyv TARTALOMJEGYZÉK 1. Kincskereső Könyvelő Klub bemutatása... 3 2. Belépés az oldalra... 3 3. Kincskereső Könyvelő Klub oldala... 4 3.1 Kincskereső

Részletesebben

KERESÉS A NETEN DR. KÓNYA LÁSZLÓ: KERESÉS A NETEN KERESÉS MÓDSZERE, KERESŐPROGRAMOK 2004.04.20

KERESÉS A NETEN DR. KÓNYA LÁSZLÓ: KERESÉS A NETEN KERESÉS MÓDSZERE, KERESŐPROGRAMOK 2004.04.20 INTERNET 1/42 KERESÉS A NETEN DR. KÓNYA LÁSZLÓ: KERESÉS A NETEN KERESÉS MÓDSZERE, KERESŐPROGRAMOK 2004.04.20 FORRÁS: TARR BENCE : KERESÉS AZ INTERNETEN PANEM KIADÓ, 2001 ISBN 963 545 326 4 INTERNET 2/42

Részletesebben

Adatbáziskezelés - SQL. Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks 2004 www.mysql.

Adatbáziskezelés - SQL. Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks 2004 www.mysql. Adatbáziskezelés - SQL Forrás: dr. Kovács László: Adatbázisok tervezésének és kezelésének módszertana Computerbooks 2004 www.mysql.com Miért fontos az adatbáziskezelés a kontrollernek? Bonyolultabb kapcsolatú

Részletesebben

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. május 17. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add

Részletesebben

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba Inheritance beállítás Ez egy olyan beállítás, amely a modell alapján

Részletesebben

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba

Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve. Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba Ügyviteli rendszerek hatékony fejlesztése Magic Xpa-val mobilos funkciókkal kiegészítve Oktatók: Fülöp József, Smohai Ferenc, Nagy Csaba Programozás alapjai Ha egy adott adattáblára Ctrl + G t nyomunk,

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ

KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ Mi az OPAC? Az OPAC az Online Public Access Catalogue rövidítése. Jelentése olyan számítógépes katalógus, mely nyilvános, bárki számára közvetlenül, általában ingyen

Részletesebben

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 3. Előadás Az SQL adatbázisnyelv (Tartalom) Az SQL története Az SQL felépítése Adattípúsok SQL utasítások 1 Sapientia - Erdélyi Magyar TudományEgyetem

Részletesebben

1. fejezet Bevezetés a web programozásába (Balássy György munkája)... 11 Az internet működése... 11

1. fejezet Bevezetés a web programozásába (Balássy György munkája)... 11 Az internet működése... 11 Tartalomjegyzék 1. fejezet Bevezetés a web programozásába (Balássy György munkája)... 11 Az internet működése... 11 Géptől gépig... 11 Számok a gépeknek... 13 Nevek az embereknek... 14 Programok egymás

Részletesebben

Téradatokkal kapcsolatos elemzések és fejlesztések a FÖMI Térinformatikai Igazgatóságán

Téradatokkal kapcsolatos elemzések és fejlesztések a FÖMI Térinformatikai Igazgatóságán Téradatokkal kapcsolatos elemzések és fejlesztések a FÖMI Térinformatikai Igazgatóságán Dr. Kristóf Dániel Képes Attila GISOpen 2013 NyME GEO, Székesfehérvár, 2013.03.12-14. Földmérési és Távérzékelési

Részletesebben

ADATBÁZISKEZELÉS ADATBÁZIS

ADATBÁZISKEZELÉS ADATBÁZIS ADATBÁZISKEZELÉS 1 ADATBÁZIS Az adatbázis adott (meghatározott) témakörre vagy célra vonatkozó adatok gyűjteménye. - Pl. A megrendelések nyomon követése kereskedelemben. Könyvek nyilvántartása egy könyvtárban.

Részletesebben

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István (viczus@freemail.hu) Viczián István

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István (viczus@freemail.hu) Viczián István Java objektumok leképzése relációs adatbázisokra -vel Viczián István (viczus@freemail.hu) Előszó E cikk olyan haladó programozóknak nyújt segítséget, kik tisztában vannak a Java nyelvvel, és többször is

Részletesebben

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos PASzSz Kilencedik témakör: Lazarus-Firebird Készítette: Dr. Kotsis Domokos Az SQLdb fülön IBConnection Kapcsolat A Data Access fülön Az SQLdb fülön... Select 1. Az SQLQuery lezárása. (Active := false,

Részletesebben

w w w. h a n s a g i i s k. h u 1

w w w. h a n s a g i i s k. h u 1 w w w. h a n s a g i i s k. h u Adatbázis-kezelés Adatbázisok Az adatbázisok rendezett adatok halmaza. Rendezett adatok közt sokkal gyorsabban lehet keresni! Napjainkban a relációs típusú adatbázis terjedt

Részletesebben

Reguláris kifejezések 1.

Reguláris kifejezések 1. Reguláris kifejezések 1. A nyelvtechnológia eszközei és nyersanyagai 1. gyakorlat A beadandó feladatok be vannak keretezve! 1.1. Miért hívják reguláris kifejezésnek? (!) Az elméleti és a gyakorlati reguláris

Részletesebben

Adatbázisok biztonsága

Adatbázisok biztonsága Adatbázisok biztonsága 13 1 Célkitőzések 1. Titoktartás (Secrecy): olyan felhasználó, akinek nincs joga, ne férjen hozzá az információkhoz. pl. egy diák ne láthassa más diák kreditjeit. 2. Sértetlenség

Részletesebben

Kiskunmajsa és környéke turisztikai térinformatikai alkalmazás

Kiskunmajsa és környéke turisztikai térinformatikai alkalmazás Kiskunmajsa és környéke turisztikai térinformatikai alkalmazás Tartalomjegyzék 1. A RENDSZER RÖVID LEÍRÁSA...3 1.1. Elvárt funkciók:...3 1.2. Specifikáció...3 1.3. Funkciók ismertetése...3 2. RÉSZLETES

Részletesebben