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



Hasonló dokumentumok
Adatbázis használat I. 1. gyakorlat

Adatbázis használat I. 5. gyakorlat

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis rendszerek SQL nyomkövetés

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

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

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

Adattípusok. Max. 2GByte

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

Adattípusok. Max. 2GByte

ADATBÁZIS RENDSZEREK I BEADANDÓ

Adatbázis Rendszerek II. 8. Gyakorló környezet

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

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

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

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

Bevezetés: az SQL-be

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

BEVEZETÉS Az objektum fogalma

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

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

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

SQL DDL-1: táblák és megszorítások

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

SQL parancsok feldolgozása

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

Java és web programozás

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

Adatbázisok elmélete 10. előadás

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Adatbázisok elmélete 9. előadás

Adatbázisok elmélete 9. előadás

Adatbázis rendszerek tervezése

Az SQL adatbázisnyelv: DML

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

Adatbázis tartalmának módosítása

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

Vizuális programozás gyakorlat

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

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

SQL DDL-2 (aktív elemek) triggerek

Adatbázis alapú rendszerek

Adatbázisok* tulajdonságai

Adatbázis Rendszerek II. 3. SQL alapok

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

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:

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

Készítette: Szabóné Nacsa Rozália

Java és web programozás

Kidolgozott példák. E-K diagram. Tánc egyednek csak egyetlen attribútuma van. Most a megoldás úgy is helyes lenne,

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

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

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázis használat I. 2. gyakorlat

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Tranzakciókezelés PL/SQL-ben

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Adatbázis Rendszerek II. 2. Gyakorló környezet

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

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

BEVEZETÉS Az objektum fogalma

Spatial a gyakorlatban

Adatbázis, adatbázis-kezelő

A könyv tartalomjegyzéke

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

NORMALIZÁLÁS. Funkcionális függés Redundancia 1NF, 2NF, 3NF

Adatbázisok elmélete 11. előadás

1.óra. Bevezetés. Adatmodellezés, elméleti háttér

Alkalmazói rendszerek ACCESS ZH - javítókulcs Informatika tanár MSC, levelező tagozat, január 06.

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

Webfejlesztés 4. alkalom

11. Gyakorlat Adatbázis-tervezés, normalizálás. Redundancia: egyes adatelemek feleslegesen többször is le vannak tárolva

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Elemi alkalmazások fejlesztése IV.

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

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:

Adatbázis-kezelés. alapfogalmak

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

LBRA6i integrált rendszer

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely. ABR ( Adatbázisrendszerek) 12. Előadás:

Adatmodellezés. 1. Fogalmi modell

Adatbázisok gyakorlat

ADATBÁZISOK. 3. gyakorlat E-K modell

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

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

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

Átírás:

Ó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 KÖVETELMÉNYEK: Készítse el az Oracle adatbázis-kezelő rendszerben a Jani bácsi székgyártó kisiparos ügyfélmegrendelés nyilvántartását. 1. Tárolnánk a székek megnevezését, típusát, színét, méretét, árát, a készlet nagyságot. 2. Tároljuk a vásárlók adatait is: név, cím, telefonszám, törzsvásárló-e. 3. Nyilvántartjuk a rendeléseket: ki, mikor, mit rendelt. A dolgozatnak tartalmaznia kell az alkalmazási környezet bemutatását, az elkészített rendszer tervét, az adatmodellt az algoritmus ismertetését, mellékletként pedig a kifejlesztett program forrásnyelvű, magyarázatokkal ellátott listáját, a tesztfutások jegyzőkönyvét, valamint CD-n a dolgozat dokumentum-állományát, továbbá az elkészített, működő program forrásnyelvű és a futtatáshoz szükséges állományait (például a feltöltött adattáblákat) is. 2010. február... Mák Virág Nagy Gabriella

Tartalomjegyzék Tartalomjegyzék...2 Normalizálás...3 Az ősmodell relációsémája...3 Függőségek:...3 Függőségek normalizálása:...4 Az eredmény adatmodell...5 Az adatbázis létrehozása...7 Az adatbázis feltöltése...9 Adattáblák...10 Lekérdezések...11 DML utasítások...17 DDL utasítások...20 2

Normalizálás Feltételezzük, hogy: A megnevezés, a szín és a típus együtt azonosítja a széket. A név és a telefonszám együtt azonosítja a vásárlót. Adott típusú szék többféle színben kapható, de ezek mérete és ára megegyezik. Az ősmodell relációsémája Székvásárlás <megnevezés, típus, szín, méret, ár, készlet, név, cím, telszám, törzsvásárló, dátum, mennyiség> ahol: megnevezés: a termék neve típus: a termék típusa szín: a termék színe méret: a termék mérete ár: 1 db termék ára készlet: a raktáron lévő mennyiség az adott termékből név: a vásárló neve cím: a vásárló címe telszám: a vásárló telefonszáma törzsvásárló: a vásárló törzsvásárló-e dátum: a vásárlás dátuma mennyiség: vásárolt mennyiség az adott termékből Függőségek: F vásárló = {név, telszám} => {cím, törzsvásárló} F termék = {megnevezés, típus} => {méret, ár} F készlet = {megnevezés, típus, szín} => {méret, ár, készlet} F vásárlás = {név, telszám, megnevezés, típus, dátum} => {mennyiség, szín, méret, ár, készlet, cím, törzsvásárló } 3

Függőségek normalizálása: a) F vásárló 1NF-ben van, mert nincs összetett attribútum. 2NF-ben van, mert 1NF-ben van és minden jobb oldalon álló attribútum függ az elsődleges attribútumoktól, és nem függ az elsődleges attribútumok egy részhalmazától. 3NF-ben van, mert 2NF-ben van és a másodlagos attribútumok között nincs függés (nincs tranzitív függés). BCNF-ben van, mert 3NF-ben van és nincs kulcstörés. b) F termék 1NF-ben van, mert nincs összetett attribútum. 2NF-ben van, mert 1NF-ben van és minden jobb oldalon álló attribútum függ az elsődleges attribútumoktól, és nem függ az elsődleges attribútumok egy részhalmazától. 3NF-ben van, mert 2NF-ben van és a másodlagos attribútumok között nincs függés (nincs tranzitív függés). BCNF-ben van, mert 3NF-ben van és nincs kulcstörés. c) F készlet 1NF-ben van, mert nincs összetett attribútum. A 2NF-et sérti, mert a "méret" és "ár" attribútumok csak az elsődleges attribútumok egy részhalmazától függnek. Dekompozíció: {megnevezés, típus} => {méret, ár} {megnevezés, típus, szín} => {készlet} Ezután: 3NF-ben van, mert 2NF-ben van és a másodlagos attribútumok között nincs függés (nincs tranzitív függés). BCNF-ben van, mert 3NF-ben van és nincs kulcstörés. d) F vásárlás 1NF-ben van, mert nincs összetett attribútum. A 2NF-et sérti, mert bizonyos másodlagos attribútumok csak az elsődleges attribútumok egy részhalmazától függnek. 4

Dekompozíció: {név, telszám, megnevezés, típus, szín, dátum} => {mennyiség} {megnevezés, típus} => {méret, ár} {megnevezés, típus, szín} => {készlet} {név, telszám} => {cím, törzsvásárló} Ezután: 3NF-ben van, mert 2NF-ben van és a másodlagos attribútumok között nincs függés (nincs tranzitív függés). BCNF-ben van, mert 3NF-ben van és nincs kulcstörés. Az eredmény adatmodell vásárlás<név, telszám, megnevezés, típus, szín, dátum, mennyiség> szék<megnevezés, típus, méret, ár> raktár<megnevezés, típus, szín, készlet> vásárló<név, telszám, cím, törzsvásárló> Idegen kulcsok: A "vásárlás" táblában a "név" és "telszám" a "vásárló" táblára nézve, a "megnevezés", "típus" és "szín" a "raktár" táblára nézve. A táblák attribútumai típussal: VÁSÁRLÁS név telszám megnevezés típus szín dátum mennyiség VARCHAR2(30) VARCHAR2(15) VARCHAR2(20) VARCHAR2(20) VARCHAR2(15) DATE NUMBER(3) megnevezés típus méret ár SZÉK VARCHAR2(20) VARCHAR2(20) NUMBER(3) NUMBER(5) 5

megnevezés típus szín RAKTÁR VARCHAR2(20) VARCHAR2(20) VARCHAR2(15) név telszám cím VÁSÁRLÓ VARCHAR2(30) VARCHAR2(15) VARCHAR2(50) készlet NUMBER(3) törzsvásárló NUMBER(1) 6

Az adatbázis létrehozása SET FEEDBACK OFF; ALTER SESSION SET NLS_DATE_LANGUAGE=ENGLISH; ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'; DROP TABLE vásárló; CREATE TABLE vásárló (név VARCHAR2(30), telszám VARCHAR2(15), cím VARCHAR2(50), törzsvásárló NUMBER(1), CONSTRAINT vásárló_pk PRIMARY KEY (név, telszám), CONSTRAINT törzs_ck CHECK (törzsvásárló IN (0,1))); DROP TABLE szék; CREATE TABLE szék (megnevezés VARCHAR2(20), típus VARCHAR2(20), méret NUMBER(3), ár NUMBER(5) NOT NULL, CONSTRAINT szék_pk PRIMARY KEY (megnevezés, típus)); DROP TABLE raktár; CREATE TABLE raktár (megnevezés VARCHAR2(20), típus VARCHAR2(20), szín VARCHAR2(15), készlet NUMBER(3), CONSTRAINT készlet_pk PRIMARY KEY (megnevezés, típus, szín), 7

CONSTRAINT szék_fk FOREIGN KEY (megnevezés, típus) REFERENCES szék(megnevezés, típus)); DROP TABLE vásárlás; CREATE TABLE vásárlás (név VARCHAR2(30), telszám VARCHAR2(15), megnevezés VARCHAR2(20), típus VARCHAR2(20), szín VARCHAR2(15), dátum DATE, mennyiség NUMBER(3) NOT NULL, CONSTRAINT vásárlás_pk PRIMARY KEY (név, telszám, megnevezés, típus, szín, dátum), CONSTRAINT vásárló_fk FOREIGN KEY (név, telszám) REFERENCES vásárló(név, telszám), CONSTRAINT raktár_fk FOREIGN KEY (megnevezés, típus, szín) REFERENCES raktár(megnevezés, típus, szín)); 8

Az adatbázis feltöltése INSERT INTO vásárló VALUES ('Farkas Piroska','20/123-4567','Erdőalja, Házikó utca 1',0); INSERT INTO vásárló VALUES ('Nemoda Buda','30/123-1234','Budapest, Budai vár',0); INSERT INTO vásárló VALUES ('Mezei Virág','70/987-6543','Mezőtúr, Virág utca 12',1); INSERT INTO szék VALUES ('Marcsa néni kedvence','hokedli',30,2500); INSERT INTO szék VALUES ('Gyermekszék','szék',50,3000); INSERT INTO szék VALUES ('Hármas sztár','háromlábú szék',70,5500); INSERT INTO szék VALUES ('Ebédlői szék','szék',80,7000); INSERT INTO raktár VALUES ('Marcsa néni kedvence','hokedli','fehér',10); INSERT INTO raktár VALUES ('Marcsa néni kedvence','hokedli','barna',15); INSERT INTO raktár VALUES ('Gyermekszék','szék','kék',24); INSERT INTO raktár VALUES ('Gyermekszék','szék','rózsaszín',43); INSERT INTO raktár VALUES ('Gyermekszék','szék','sárga',11); INSERT INTO raktár VALUES ('Hármas sztár','háromlábú szék','fekete',5); INSERT INTO raktár VALUES ('Ebédlői szék','szék','krémszínű',12); INSERT INTO vásárlás VALUES ('Farkas Piroska', '20/123-4567', 'Gyermekszék', 'szék', 'kék', '2010-02-03', 2); INSERT INTO vásárlás VALUES ('Farkas Piroska', '20/123-4567', 'Marcsa néni kedvence', 'hokedli', 'fehér', '2010-02-23', 1); INSERT INTO vásárlás VALUES ('Nemoda Buda', '30/123-1234', 'Ebédlői szék', 'szék', 'krémszínű', '2010-03-30', 4); INSERT INTO vásárlás VALUES ('Mezei Virág', '70/987-6543', 'Gyermekszék', 'szék', 'sárga', '2010-01-03', 20); INSERT INTO vásárlás VALUES ('Mezei Virág', '70/987-6543', 'Hármas sztár', 'háromlábú szék', 'fekete', '2010-04-15', 1); 9

Adattáblák Vásárlás Raktár Vásárló Készlet 10

Lekérdezések 1. Listázzuk ki a 3500 Ft-nál olcsóbb székek nevét, típusát és méretét. SELECT FROM WHERE megnevezés AS Név, típus AS Fajta, méret AS Mekkora szék ár<3500; Eredmény: NÉV FAJTA MEKKORA -------------------- -------------------- ---------- Marcsa néni kedvence hokedli 30 Gyermekszék szék 50 11

2. Jelenítsük meg a vásárlók adatait; ha nincs cím megadva, akkor helyette írjuk ki, hogy Hiányzó cím. SELECT FROM név AS "Vásárló neve", telszám AS Telefonszám, NVL(cím, 'Hiányzó cím') AS Cím, törzsvásárló AS "Törzsvásárló-e" vásárló; Eredmény: Vásárló neve TELEFONSZÁM CÍM Törzsvásárló-e ------------------------------ ------------------------------------------------------------------------------- Farkas Piroska 20/123-4567 Erdőalja, Házikó utca 1 0 Nemoda Buda 30/123-1234 Budapest, Budai vár 0 Mezei Virág 70/987-6543 Mezőtúr, Virág utca 12 1 12

3. Kérdezzük le a 2010-es évben eddig eladott székek összes értékét. SELECT FROM WHERE SUM(mennyiség*ár) AS Összesen vásárlás NATURAL JOIN szék EXTRACT(YEAR FROM dátum)=2010; Eredmény: ÖSSZESEN ----------------- 102000 13

4. Kérdezzük le típusonként a vásárolt székek átlagos darabszámát, amennyiben ez nagyobb, mint 5. SELECT FROM GROUP BY HAVING típus AS Típus, AVG(mennyiség) AS Átlag vásárlás NATURAL JOIN szék típus AVG(mennyiség)>5; Eredmény: TÍPUS ÁTLAG --------------- ---------- szék 8,66666667 14

5. Jelenítsük meg típusonként és azon belül színenként a székek átlagos készletmennyiségét. SELECT típus AS Típusa, szín AS Színe, AVG(készlet) AS Készletmennyiség FROM raktár GROUP BY ROLLUP (típus, szín); Eredmény: TÍPUSA SZÍNE KÉSZLETMENNYISÉG ------------------------- ----------------- ---------------- szék kék 24 szék sárga 11 szék krémszínű 12 szék rózsaszín 43 szék 22,5 hokedli barna 15 hokedli fehér 10 hokedli 12,5 háromlábú szék fekete 5 háromlábú szék 5 17,1428571 15

6. Rangsoroljuk a vásárlásokat az eladott mennyiség szerinti csökkenő rendben. Csak a vásárló nevét, a termék nevét és a mennyiséget listázzuk. SELECT FROM név, megnevezés, mennyiség, DENSE_RANK() OVER (ORDER BY mennyiség DESC) AS Rang vásárlás; Eredmény: NÉV MEGNEVEZÉS MENNYISÉG RANG -------------------------- ---------------------------------- -------------------------- ---------- Mezei Virág Gyermekszék 20 1 Nemoda Buda Ebédlői szék 4 2 Farkas Piroska Gyermekszék 2 3 Mezei Virág Hármas sztár 1 4 Farkas Piroska Marcsa néni kedvence 1 4 16

DML utasítások 1. Beszúrás: Mezei Virág vásárolt 3 db fehét hokedlit 2010. május 3-án. INSERT INTO vásárlás VALUES ('Mezei Virág', '70/987-6543', 'Marcsa néni kedvence', 'hokedli', 'fehér', '2010-05-03', 3); Ellenőrzés: SELECT FROM WHERE ORDER BY név, megnevezés, dátum, mennyiség vásárlás név='mezei Virág' AND telszám='70/987-6543' dátum DESC; Eredmény: NÉV MEGNEVEZÉS DÁTUM MENNYISÉG -------------------------- ---------------------------------- ----------------- ---------- Mezei Virág Marcsa néni kedvence 2010-05-03 3 Mezei Virág Hármas sztár 2010-04-15 1 Mezei Virág Gyermekszék 2010-01-03 20 17

2. Módosítás: Az előző feladatban megvásárolt termékeket vonjuk le a készletről. UPDATE SET WHERE raktár készlet=készlet-3 megnevezés='marcsa néni kedvence' AND típus='hokedli' AND szín='fehér'; Ellenőrzés: SELECT * FROM raktár WHERE megnevezés='marcsa néni kedvence' AND típus='hokedli' AND szín='fehér'; Eredmény: MEGNEVEZÉS TÍPUS SZÍN KÉSZLET ---------------------------------- ----------------- ---------------- ---------- Marcsa néni kedvence hokedli fehér 7 18

3. Törlés: Mezei Virág nem volt megelégedve a hokedlikkel, ezért visszahozta őket. Töröljük a vásárlást. DELETE FROM vásárlás WHERE név='mezei Virág' AND telszám='70/987-6543' AND megnevezés='marcsa néni kedvence' AND típus='hokedli' AND szín='fehér' AND dátum='2010-05-03'; Ellenőrzés: SELECT FROM WHERE ORDER BY név, megnevezés, dátum, mennyiség vásárlás név='mezei Virág' AND telszám='70/987-6543' dátum DESC; Eredmény: NÉV MEGNEVEZÉS DÁTUM MENNYISÉG ------------------------- -------------------------- ----------------- ---------- Mezei Virág Hármas sztár 2010-04-15 1 Mezei Virág Gyermekszék 2010-01-03 20 19

DDL utasítások 1. Oszlop beszúrás: Adjunk a "raktár" táblához egy új oszlopot, amely azt jelzi, hogy kell-e gyártani az adott termékből. ALTER TABLE ADD raktár (KellGyártaniMég NUMBER(1)); 2. Oszlop átnevezés: Nevezzük át a "KellGyártaniMég" oszlopot "Gyártandó"-ra. ALTER TABLE raktár RENAME COLUMN KellGyártaniMég TO Gyártandó; 3. Megszorítás hozzáadás: Gondoskodjunk róla, hogy a "Gyártandó" oszlopba csak 0 vagy 1 értéket lehessen beszúrni. ALTER TABLE raktár ADD CONSTRAINT gyárt_ck CHECK (Gyártandó IN (0,1)); Ellenőrzés: UPDATE SET raktár Gyártandó=2; Eredmény: Hiba a(z) 1. sorban: ORA-02290: ellenőrző megszorítás (SCOTT.GYÁRT_CK) megsértése 20