WebShop építése PHP-MySQL alapokon
 
Általános információk
Tanfolyamok ismertetése
Próba
Regisztráció
Belépés a rendszerbe
1. fejezet: A program tervezése, Mysql alapok

Bevezető:

Egy webshop rendszert fogunk felépíteni a tanfolyam tíz leckéjén keresztül. Az első lecke témája a program tervezése és a mysql alapok áttekintése lesz. A mai rohamosan fejlődő internetes piac egyre jobban terjedő és gyakorlatias terjesztési és termékmenedzselési formája a webshop. A mai online áruházak ősei eleinte csak megjelenítették a különböző árucikkeket és esetenként azokról valamilyen formában információkat közöltek, esetleg árakat is. A vásárló ezután elment az üzletbe és megvásárolta a terméket. A kényelmi szempontok azonban további fejlesztésekre sarkallták a szakembereket, és létrejött a webshop. Az ősökhöz hasonlóan itt is megjelennek az árucikkek, leírások, ismertetők, de ebben a rendszerben már lehetősége van a látogatóknak a vásárlásra.

Természetesen a fizetés és a termék eljuttatása a felhasználókhoz már az üzletek beállítottságától függ és változik. Az ideális megoldásnak ma már azt tekintik, ha a felhasználó a webshop-ban vásárol, majd csengetnek a lakásában és megkapja a terméket. Fizetés a kézbesítőnek, vagy bankkártyával a weben keresztül. Mi is egy ehhez hasonlót fogunk felépíteni. A program kódjának elkészítéséhez mindenki tetszőlegesen használhat bármilyen szerkesztői felületet, akár egy Notepad-del is el lehet készíteni az egészet. Én a szemléltetések alatt a Dreamweaver nevezetű Macromedia programot fogom használni és javaslom azoknak, akik rendelkeznek vele.

A program tervezése:

Egy összetett alkalmazás elkészítésénél nélkülözhetetlen lépés a tervezés. Természetesen vannak, aki spontán készítik el a kódokat, de ennek nagy hátránya, hogy a folyamat során fellépő módosítások kihatással lehetnek a már meglévő kódrészekre, így módosítani kell mindent, ami addig elkészült. Ezért javasolt a tervezés. Átgondoljuk, hogy mit is szeretnénk készíteni. A programnak milyen funkciói lesznek és ezeket hogyan jelenítjük meg. Milyen kapcsolat és összefüggés lesz az egyes programrészek között és ezeket a kapcsolatokat hogyan fűzzük össze.

A tervezéshez tudnunk kell előre, hogy mit is várunk el a kész programtól. Azt szeretnénk, ha a shop két felhasználói csoportot különböztetne meg egymástól. Az első csoport a látogatók, akik megnézhetik a termékeket, adatokat, de nem vásárolhatnak. A második csoport, akik regisztráltak, és meg is vásárolhatják a termékeket. Ezen kívül szeretnénk, ha a termékek megjelennének, szelektív szűrők alapján lehetne választani az egyes csoportok között és a regisztrált felhasználók egy kosár rendszeren tudjanak vásárolni. Készítettem egy kis grafikus vázlatot a könnyebb áttekinthetőség érdekében.

Ahogy az az ábrán is látható, a látogatók nem tudnak vásárolni, csak akkor, ha előtte regisztráltak, majd belépnek a programba. Így oszlik két részre a felhasználók csoportja. A termékek listáját és a leírásokat, árakat mindkét csoport el tudja érni, de vásárolni már csak a belépett felhasználónak van lehetősége.

A belső részben található a kosár, amiről szintén érdemes egy rövid vázlatot készíteni. A termékek listájában minden áruhoz tartozik egy 'Kosárba Teszem' gomb, ami a kiválasztott terméket a felhasználó saját kosarába teszi. Ez még nem egyenlő a vásárlással, mindössze egy kiválasztás. Amikor a felhasználó a kosár menübe lép, még szelektálhatja az általa összegyűjtött termékeket. Törölheti azt, amire nincs szüksége, megnézheti az összesített árakat, beállíthatja a darabszámot és ha minden rendben van, akkor leadhatja a rendelését.



Természetesen a leadott rendelések teljesítésében a regisztrációkor begyűjtött adatok szolgálnak segítségül. Törekedni kell arra, hogy a regisztrációnál csak a legfontosabb adatokat kérjük el, de legyen meg minden ahhoz, hogy a rendelést teljesíteni lehessen. Erről bővebben majd a regisztrációról szóló leckében beszélünk.

A webszerver:

A webshop program alkalmazásához, futtatásához szükség van bizonyos szerver oldali összetevőkre. Jelen esetünkben kell egy webszerver (Apache), egy php értelmező környezet és egy adatbázis (Mysql). A bemutató fejezetben leírtuk egy helyi gépre telepíthető komplett rendszer beszerzési lehetőségét. A gyakorlást és a teszteléseket végezhetjük saját gépünkön, ha a leírásokat követve telepítjük a mellékelt összetevőket. Természetesen nem mindenkinek adott a lehetőség arra, hogy a gyakorlatokat saját gépén végezze. Regisztrálhatóak különböző ingyenes szolgáltatóknál tárhelyek (pl.: http://uw.hu/ vagy http://www.cjb.hu/ stb...), ahol lehetőség van php-mysql használatára. A webszerver, jelen esetünkben az Apache, teszi hozzáférhetővé a látogatók számára, a webshop oldalait. A webszerver kijelölt könyvtárában (alap esetben : c:\Program Files\Apache Grup\Apache\htdocs) másoljuk azokat a fájlokat, amelyeket a látogatók számára is elérhetővé szeretnénk tenni.

Természetesen alap könyvtárnak bármi mást is megadhatunk. A webszerver tartalmát a látogatók böngészők segítségével tudják megtekinteni. Minden szerver rendelkezik valamilyen elérési úttal, címmel, domain-el és a tartalom ezek alapján lesz elérhető (ez lehet a kiszolgáló gép ip címe is). A szerveren lévő tartalomra ezután már a hagyományos módon hivatkozhatunk, a tároló alkönyvtárakat is belefűzve az elérési útvonalba (pl.: http://www.valami.hu/webshop/index.html). Természetesen ez még magában kevés, hiszen a program nagy részét php-ban írjuk meg, így szükséges egy php értelmező program (pl: PHP 4.3.4). A php értelmező automatikusan lefut, ha a webszerveren php fájlt futtatnak és végrehajtja, értelmezi a php kódokat. A harmadik összetevőnk az adatbázis. Jelen esetünkben a Mysql nevezetű adatbázis programot fogjuk használni. Az adatbázisban tároljuk el a webshop által használt összetevőket és adatokat. Az adatok bevitele, kiolvasása, módosítása vagy éppen törlése php segítségével fog történni. A mysql és a mysql-php alapjairól bővebben is szót ejtünk.

A MySql és a parancsok áttekintése:

A webshop működéséhez szükséges adatokat egy adatbázisban tároljuk. Az adatbázis adatainak karbantartásához a MySql adatbázis kezelő programot használjuk. A MySql az egyik legszélesebb körben alkalmazott ingyenes adatbázis kezelő program. Az adatbázisban tárolt adatok tárolási struktúrája a táblázat. A táblázat azonos típusú és azonos szerkezetű dolgok halmaza. A táblázat sorokból és oszlopokból áll. A sor vagy másképpen rekord egy konkrét dologra vonatkozó, azonos struktúrájú, szerkezetű adatokból áll. Az oszlop a dolgokra vonatkozó azonos típusú, tulajdonságú adatok halmaza. A fent említett típusok közül a leggyakrabban használt adattípusok a következők:

DEFINÍCIÓ TULAJDONSÁG
   
TINYINT Kis méretű egész számok tárolására alkalmas. Kijelölt tartomány: -128-tól 127-ig. Szinonímái: BIT és BOOL .
SMALLINT Kis méretű egész számok tárolására alkalmas. Kijelölt tartomány: -32768-tól 32767-ig.
MEDIUMINT Közepes méretű egész számok tárolására alkalmas. Kijelölt tartomány: -8388608-tól 8388607-ig.
INT Normál méretű egész számok tárolására alkalmas. Kijelölt tartomány: -2147483648-tól 2147483647-ig. Szinonímája: INTEGER .
BIGINT Nagy méretű egész számok tárolására alkalmas. Kijelölt tartomány: -9223372036854775808-tól 9223372036854775807-ig.
FLOAT Lebegőpontos (tizedes) számok tárolására alkalmas. A megjelenési méret és a tizedesek száma nincs definiálva.
DOUBLE Normál méretű lebegőpontos (tizedes) számok tárolására alkalmas.
DATE Dátum tárolására alkalmas, év-hónap-nap formában, stringként vagy számként (YYYY-MM-DD , 2004-01-25).
TIME Idő paraméter tárolására alkalmas, óra:perc:másodperc formában, stringként vagy számként (HH:MM:SS , 15:22:35).
DATETIME Dátum és idő paraméterek kombinált tárolására alkalmas, év-hónap-nap óra:perc:másodperc formában, stringként vagy számként (YYYY-MM-DD HH:MM:SS , 2004-01-25 15:22:35).
VARCHAR Meghatározott hosszúságú string tárolására alkalmas. Kijelölt tartomány: 0-255 karakter. Szinonímája: CHAR .
BLOB Szöveges állományok tárolására alkalmas (string), maximum 65535 karakterig. Szinonímája: TEXT .
MEDIUMBLOB Szöveges állományok tárolására alkalmas (string), maximum 16777215 karakterig. Szinonímája: MEDIUMTEXT .
LONGBLOB Szöveges állományok tárolására alkalmas (string), maximum 4294967295 karakterig. Szinonímája: LONGTEXT .

Az adatbázist SQL utasításokkal kezelhetjük. Minden műveletnek megvan a saját utasítása, amiket akár kombinálhatunk is a helyzettől függően. Egyszerű gyakorlati példákon keresztül fogjuk átnézni a leggyakrabban használt utasításokat. Az utasításokat egy mysql terminálban (dos jellegű ablak) alkalmazzuk. A terminál elindítására leginkább saját szerveren (localhost) van lehetőség. Keressük meg a mysql/bin/mysql.exe fájlt és indítsuk el. Ha a terminál nem jelenik meg, akkor a mysql szerver nem fut, a telepítési leírásnak megfelelően indítsuk el. Azok, akik nem saját szerveren gyakorolnak, kipróbálhatják az utasításokat bármilyan mysql admin program segítségével (lásd később mysql front).

A következő rész független a webshop feladattól, az SQL utasítások ismertetése a cél egyszerű példákon keresztül. Az SQL utasításokat, parancsokat négy csoportba foglalva nézzük át.

  • DDL parancsok (Data Definition Language), adat definiáló,
    adatszerkezet módosító parancsok -> CREATE, ALTER, DROP
  • DML parancsok (Data Manipulation Language), adat módosító
    parancsok -> SELECT, UPDATE, INSERT, DELETE
  • DCL parancsok (Data Control Language) adat felügyelő,
    felhasználókat és a jogokat kezelő parancsok -> GRANT, REVOKE
  • Egyéb parancsok -> SHOW, USE, CLOSE
  • A MySql terminál parancsai a \h begépelése után a láthatók:

    A MySql terminál ablakban hozzunk létre egy proba nevű adatbázist! A parancsokat mindig ';' karakterrel zárjuk le az előtt!

    Nézzük meg a MySql által kezelt adatbázisokat!

    Látható, hogy a proba adatbázison kívül további két adatbázist is kezel a MySql:
  • - a mysql adatbázisban, különféle táblákban tartja nyilván az adatbázis felhasználókat, tábla neveket és a hozzájuk rendelt jogosultságokat, pl. a root nevű adatbázis-adminisztrátornak teljes jogköre van az adatok és jogosultságok manipulálására
  • - a test adatbázis tesztelési célokat szolgál

    Vegyük használatba a proba adatbázist és vizsgáljuk meg a tárolt adatokat!

    A proba adatbázis üres, nem tartalmaz sem adattáblát, sem adatot, ezért hozzunk létre egy telefon táblát, melyben telefonszámokat és címeket tartunk nyilván!

    Listázzuk ki a telefon tábla adatait!

    Miután látjuk, hogy a telefon tábla üres, töltsük fel adatokkal!

    INSERT INTO telefon VALUES("Elso Elelemer", "Bp", "2234567");
    INSERT INTO telefon VALUES("Masodik Mihaly", "Vac", "26123456");
    INSERT INTO telefon VALUES("Harmadik Henrik", "Vac", "26234567");
    INSERT INTO telefon VALUES("Negyedik Nora", "Bp", "3456789");
    INSERT INTO telefon VALUES("Otodik Odon", "God", "23345678");
    INSERT INTO telefon VALUES("Hatodik Hugo", "Bp", "4567891");

    A fenti SQL parancsok kimenthetők egy SQL script-be, pl. a vágólap és a notepad segítségével (fájlnév.sql).
    Mentsük ki egy inserttel.sql fájlba a c:\httpd:\htdocs útvonalra! Ezt követőleg adjuk ki az Execute SQL script file parancsot (\.) a fenti paraméterekkel!

    Majd listázzuk ki a telefon tábla minden adatát!

    Módosítsuk Hatodik Hugó címét Bp-ről Vac-ra, majd listázzuk ki a nevét és címét!

    Listázzunk ki minden budapesti adatot, majd listázzunk ki minden vidéki adatot!

    Listázzuk ki, milyen városok szerepelnek a telefonjegyzékben (csak egyszer szerepeljen a listában)!

    Töröljük ki azokat a személyeket (rekordokat), akik God-ön laknak, majd kontrolláljuk az eredményt!

    Készítsünk összesítő lekérdezéseket! Ehhez ismerni kell az aggregát függvényeket:

  • - COUNT megszámlálás valamilyen tulajdonság szerint
  • - SUM összegzés (csak szám adattípusokat)
  • - AVG átlagszámítás (csak szám adattípusokat)
  • - MIN, MAX szélsőértékek (csak szám adattípusokat)


  • Számláljuk meg a budapesti adatokat, majd a vidékieket!

    A fenti lekérdezésben a '%' jel helyettesítő karakter szerepét tölti be, ha pl. a budapestieket 'Bp'-, vagy 'Bp.' jelsorozattal írtuk volna, mindkettőre szűri.

    A telefon táblánk struktúrájával van egy alapvető gond, hogy bármelyik oszlopot nézzük, mindegyikben előfordulhatnak adatismétlődések. Például ha több Nagy Lajos nevű ismerősünk van, vagy két ismerősünknek azonos a telefon elérhetősége. Szükség van a rekordok egyértelmű meghatározásához egy olyan oszlopra, amelyben minden adat biztosan különböző. (pl. sorszám, személyi szám, TB szám, vagy hasonló logika alapján bármilyen más algoritmussal képzett, a feltételnek megfelelő adat)

    Az ilyen tulajdonsággal rendelkező jellemzőt (mezőt, oszlopnevet) kulcsnak, vagy elsődleges kulcsnak nevezzük. A kulcs lehet több mező összevonása is. A következő részben módosítsuk a tábla struktúráját, azaz definiáljunk egy újabb oszlopot, amit elsődleges kulcsnak definiálunk és az egyszerűség kedvéért legyen sorszám!

    A NOT NULL tulajdonság azt jelenti, hogy az adatfeltöltés során ez az adat soha nem lehet kitöltetlen. Elsődleges kulcsot természetesen a tábla létrehozásakor a CREATE TABLE parancsban is definiálhattunk volna.

    Módosítsuk a telefon tábla struktúráját, töröljük ki a cim oszlopot!

    A rendszergazda adatbázis felhasználókat hozhat létre, különféle adatkezelési jogosultságokkal. Hozzunk létre egy Panni nevű felhasználót, Pannika jelszóval, a telefon táblára olvasási joggal!



    A megadható jogok listája:
  • Select
  • Insert
  • Update
  • Delete
  • Create
  • Drop
  • References
  • Index
  • Alter,
  • illetve az összes jog ALL


  • Adjunk Panni-nak minden jogot, a jogok továbbadásának lehetőségével!

    Vonjuk vissza Panni-tól a CREATE, DROP és ALTER jogokat!

    Vonjunk vissza Pannitól minden jogot!

    Végezetül semmisítsük meg minden eddigi munkánkat, töröljük ki a telefon táblát!

    A következőkben több tábla közötti kapcsolatokkal, azok fajtáival foglalkozunk. Nézzük meg a következő táblázatot, ahol különféle munkahelyeken dolgozó személyeket tartunk nyilván.

    Látható, hogy az azonos munkahelyen dolgozók munkahelyi adatok ismétlődnek, redundánsak, így az adatkarbantartása ezeknek körülményessé válik. A tábla is tervezési hibás, mert egyszerre tartalmazza az emberek jellemzőit (oszlopokat) és a munkahelyek jellemzőit (oszlopait). A helyes tervezési módszer, két külön táblába tervezni a személyeket a jellemző tulajdonságaikkal (oszlopokkal) és a munkahelyeket a jellemző tulajdonságaikkal (oszlopokkal), valamint kapcsolatot kell biztosítanunk a két tábla között. Ezt a folyamatot normalizálásnak hívjuk.

    A fenti ábrán a két normalizált táblát és a nyíllal jelölt kapcsoló mezőket (oszlopokat) láthatjuk. A munkahely táblában az mkod jellemző (mező, oszlop) alkalmas elsődleges kulcsnak. A személy táblában a szemelyisz jellemző (mező) alkalmas elsődleges kulcsnak. A kapcsolatot vonallal jelöltük, megvalósítása az munkahely tábla mkod mezőjén és a személy tábla munkahely mezőjén keresztül valósul meg. A kapcsolat típusát a munkahely és személy tábla között egy a többhöz (1:N) típusúnak nevezzük, mert a munkahely oldalon elsődleges kulcs a kapcsolatot megvalósító mező, a személy oldalon lévő kapcsolatban résztvevő mezőt idegen kulcsnak nevezzük. Ebben az oszlopban a munkahely tábla kulcsértékei ismétlődésekkel szerepelnek. (feltételezzük, hogy egy embernek csak egy munkahelye lehet).

    A táblák tervezésekor törekednünk kell arra, hogy közöttük a kapcsolatok típusa 1:N legyen. Ha két tábla között a kapcsolat több a többhöz (M:N) típusú (pl. egy személy több munkahelyen is dolgozhat), akkor egy közvetítő, az M:N kapcsolatot feloldó táblát is kell definiálnunk (pl. munkaszerződés táblát). Így az M:N kapcsolat két tábla között feloldható három tábla közötti két 1:N típusú kapcsolatra.

    Hozzuk létre a két táblát és töltsük fel adatokkal! Mentsük el az alábbi CREATE ill. INSERT INTO parancsokat "*.sql" típusú fájlokba, majd ezt követőleg adjuk ki az Execute SQL script file parancsot, paraméterként a létrehozott script fájlokat adjuk meg!

    Tábla létrehozás (create.sql)

    DROP TABLE IF EXISTS szemely;
    CREATE TABLE `szemely` (
    `nev` varchar(25) NOT NULL default '',
    `szemelyisz` varchar(11) NOT NULL default '',
    `helyseg` varchar(25) NOT NULL default '',
    `mkod` varchar(10) NOT NULL default '',
    `fizetes` int(6) NOT NULL default '0'
    ) TYPE=MyISAM;

    DROP TABLE IF EXISTS munkahely;
    CREATE TABLE `munkahely` (
    `mkod` varchar(10) NOT NULL default '',
    `megnev` varchar(30) NOT NULL default '',
    `irszam` smallint(4) NOT NULL default '0',
    `helyseg` varchar(20) NOT NULL default '',
    `cim` varchar(30) NOT NULL default '',
    PRIMARY KEY (`mkod`)
    ) TYPE=MyISAM;


    Feltöltés adatokkal (insert.sql)

    INSERT INTO szemely VALUES("Aba Samu", "15602111234", "Budapest", "BBRT", "54800");
    INSERT INTO szemely VALUES("Atzél Károly", "14811232222", "Érd", "PB", "22000");
    INSERT INTO szemely VALUES("Baló Tamásné", "27408283777", "Százhb", "KHB", "53800");
    INSERT INTO szemely VALUES("Búzás Erika", "26412118765", "Érd", "KHB", "56200");
    INSERT INTO szemely VALUES("Dobos Ildikó", "25610175466", "Kálóz", "PB", "53700");
    INSERT INTO szemely VALUES("Drexler István", "16310245673", "Érd", "KHB", "22700");
    INSERT INTO szemely VALUES("Erős Elek", "14812138822", "Csömör", "KHB", "60700");
    INSERT INTO szemely VALUES("Halász Mihály", "17107302239", "Ercsi", "PB", "52800");
    INSERT INTO szemely VALUES("Hegedűs Róbert", "17208136634", "Ercsi", "KHB", "68000");
    INSERT INTO szemely VALUES("Herendi Ágnes", "26312277791", "Budapest", "PB", "38000");
    INSERT INTO szemely VALUES("Józsa Tamás", "16210293309", "Budapest", "BBRT", "35100");
    INSERT INTO szemely VALUES("Karsai Judit", "27010203217", "Budapest", "KHB", "20600");
    INSERT INTO szemely VALUES("Kovács Csaba", "17503232444", "Budapest", "BBRT", "46500");
    INSERT INTO szemely VALUES("Kun Tibor", "13912045508", "Göd", "KHB", "57900");
    INSERT INTO szemely VALUES("Lehel László", "15205056060", "Vác", "PB", "65300");
    INSERT INTO szemely VALUES("Molnár Tamás", "15304281132", "Budapest", "KHB", "66600");
    INSERT INTO szemely VALUES("Náday Zsolt", "14411227720", "Tura", "KHB", "35000");
    INSERT INTO szemely VALUES("Nagy Anna", "25101032405", "Budapest", "BBRT", "48600");
    INSERT INTO szemely VALUES("Németh Judit", "25409184377", "Isaszeg", "KHB", "36500");
    INSERT INTO szemely VALUES("Papp Géza", "16910085538", "Budapest", "PB", "56200");
    INSERT INTO szemely VALUES("Révész László", "15606178888", "Budapest", "BBRT", "34200");
    INSERT INTO szemely VALUES("Rózsa Béla", "17512087325", "Budapest", "KHB", "41300");
    INSERT INTO szemely VALUES("Simon Gábor", "14907149955", "Bugyi", "KHB", "27600");
    INSERT INTO szemely VALUES("Szabó Vilmos", "17011182855", "Budapest", "BBRT", "36500");
    INSERT INTO szemely VALUES("Tasnádi Ágnes", "26907093305", "Vác", "PB", "45800");
    INSERT INTO szemely VALUES("Tordai Edit", "25904072311", "Budapest", "KHB", "23400");
    INSERT INTO szemely VALUES("Tóth Gábor", "16709135533", "Dunakeszi", "KHB", "66100");
    INSERT INTO szemely VALUES("Urbán Imre", "15912166655", "Göd", "KHB", "68800");
    INSERT INTO szemely VALUES("Varga György", "16408307793", "Budaörs", "PB", "23800");
    INSERT INTO szemely VALUES("Wéber József", "15812307758", "Budapest", "KHB", "47800");
    INSERT INTO szemely VALUES("Zilahi Ágota", "27007051999", "Budapest", "PB", "34500");
    INSERT INTO szemely VALUES("Zima Imre", "17311153556", "Budapest", "BBRT", "38400");


    INSERT INTO munkahely VALUES("BBRT", "Budapest Bank Rt", "1051", "Budapest", "Nádor u. 1.");
    INSERT INTO munkahely VALUES("KHB", "Kereskedelmi és Hitelbank Rt", "1062", "Budapest", "Anker köz 2.");
    INSERT INTO munkahely VALUES("PB", "Postabank Rt", "2003", "Vác", "Duna sétány 3.");

    mysql>execute sql create.sql
    mysql> execute sql insert.sql

    Készítsünk lekérdezést a személyek neve, munkahelyük pontos megnevezése, és fizetésük legyen a listában!

    Ebben az SQL lekérdezésben a kapcsolatot a 'WHERE munkahely.mkod = szemely.mkod' mezők egyenlősége adja meg.

    Ha egyéb szűrőfeltételeket is meg szeretnénk adni, akkor azokat AND logikai művelettel kell a kapcsolat megadásához fűznünk.

    A fenti lekérdezés az 50000 Ft felett kereső személyeket listázza ki a munkahelyük pontos megnevezésével.

    Számoljuk ki munkahelyenként az átlagfizetést!

    A gyakorlatban egy egyszerű feladatnál is öt-tíz tábla és a közöttük definiált kapcsolatrendszer szükséges. A következő leckében a php-mysql kapcsolatát vesszük át, majd megtervezzük a webshop adatbázist és értelmezzük a szükséges műveleteket.



        Feladatok:

    1. Mi a szerepe, előnye a program és az adatbázis előre tervezésének?
    2. Mi a feladata az adatbázis kezelő programnak (MySql)?
    3. Hogyan csoportosíthatjuk az SQL parancsokat?
    4. Hogyan hozunk létre egy adatbázis (MySql) felhasználót?
    5. Mi a redundancia jelentése és mik a redundáns adattárolás hátrányai?
    6. Mi az elsődleges kulcs szerepe egy adattáblában?
    7. Mit jelent két adattábla között az 1:N kapcsolat?
    8. Gyakorlat 1: Készítsd el a lecke során látott adatbázist és táblákat
      és végezd el a látott műveleteket.
    9. Gyakorlat 2: Az adatbázis elemek létrehozását és az elvégzett
      műveleteket archiváld egy teszt.sql fájlban!
    10. Személyes kérdés: Zavaró-e a tegező hangnem az oktatás alatt?



    A Pentaschool Oktatási Központ bármely dokumentumának vagy dokumentum
    részletének másolása kizárólag a tulajdonos írásos engedélyével történhet!

    Copyright 2002-2003 Pentaschool Bt.
    Minden jog fenntartva.

     
    Címünk: 1051 Budapest, Sas utca 25. VI. em. Telefon/Fax: (1) 472-0679 E-mail nekünk