Groepswerk Technieken voor Datamodellering

Vergelijkbare documenten
SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

[TOETS SQL INLEIDING]

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Het omzetten van een ER-diagram naar SQL

SQL & Relationele datamodellen in interactieve media

Pazaak PROJECTWERK. Opleidingsonderdeel Projecten Workshops I. Faculteit Bedrijf en Organisatie Valentin Vaerwyckweg GENT

SQL datadefinitietaal

Sparse columns in SQL server 2008

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

12. Meer dan één tabel gebruiken en sub-queries

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

Zelftest DB2 for z/os basiscursus

SQL & Datamodelleren

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Handleiding configuratie en gebruik tekenmodule

SQL.

Inleiding Databases en Data Base Management Systems Tabellen Wat is SQL?... 5

Het toepassen van een gelaagde architectuur

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

Bibliotheek in ProcessMaker

Informatica toets vwo 6 Databases

Zorg ervoor dat je een database hebt aangevraagd op Open daarna het volgende adres in je browser:

DATAMODEL GAME EVENT DATABASE ELTON GONÇALVES GOMES V1-10

Hoe bouw ik een component? Drs. Arjan Burger

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Correctievoorschrift VWO NederlandsNederl. Informatica. Tijdvak 1 Woensdag 17 mei uur. College-examen schriftelijk.

Databases - Inleiding

8. De invoer van gegevens

Feestmenu s 2019, Uit deze gerechten kan u zelf een menu samenstellen, Voorgerechten,

Datamodelleren en databases 2011

6. Het maken van een database

Query SQL Boekje. Fredrik Hamer

Secure Application Roles

Zaalhuur. page 1 / 5. Prijsoverzicht

Inhoud. Pagina 2 van 13

Les 2 Eenvoudige queries

Introductie (relationele) databases

Redundancy Normaalvormen

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Databases en SQL Foundation (DBSQLF.NL)

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen

Automatische Installatie op IIS server

voorbeeldexamen I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006

= > >= < <= BETWEEN IS NULL IS NOT NULL

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Proeftentamen ISO (2R290), query-gedeelte, Oktober 2006

SQL SERVER Werking van Database Snapshots

Van een ER-diagram naar een database specificatie in SQL

Inhoudsopgave. Theorie Praktijk Gegevens uit Database halen DML commando s... 14

Uitwerking opdracht 10.4 Functioneel ontwerp kassasysteem voor een restaurant

1. * Database worden vaak gebruikt in Client-Server architectuur.

Project PiggyBank 2014

Information Retrieval.

MENU 29,50. een hoofdgerecht en een dessert. Aperitief Glas cava of een alcoholvrij aperitief

ID DAG_NR DAG_LANG MAAND_NR MAAND_LANG JAAR_NR FRIDAY 1 JANUARY 2009

Data Manipulatie. Query Talen. / Informatica

Hoofdstuk: 1 Principes van databases

EXPLORING DB2 IN DIT NUMMER: OPEN CURSOR CLOSE CURSOR ABIS NIEUWSBRIEF VOOR DB2 PROFESSIONALS JAARGANG 1 - NUMMER 2, OKTOBER 2002

Vragen hoofdstuk 1: Resultaat

Data Definition Language

OP ZOEK NAAR EEN CULINAIRE TOPERVARING VOOR AL UW EVENEMENTEN?

Reizen Uit Eten. Uit Eten - Bij de ingang. Uit Eten - Eten bestellen

Zelftest SQL Workshop

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

EXIN Databases en SQL Foundation

Wijzigingen Universe OSIRIS Manager versie /01 mei 2012

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Release Notes. Afdrukdatum: 2008/10/06

Zonnepanelen Hoe krijg je de data op je website?

Databanken - les 2.

Release Notes. Afdrukdatum: 2008/09/18

Je eigen potje koken: VOEDING Leerkrachtenbundel

Data Warehouse Script Generator Doel

COMPUTERWOORDEN.NL SQL - basis

Digitaal Staatsexamen VWO 2010

Databanken - les 2.

Errata en opmerkingen Relationele Databases en SQL 1e druk

Handleiding Great Front-office

Puzzelen met SQL DBA. De muzieklijst, deel 1. De tabellen De tabellen die we gaan gebruiken in deze puzzel zijn weergegeven in afbeelding 1.

EXIN Databases en SQL Foundation

OLAP.

Vragenlijst tevredenheidsonderzoek bij Restaurants, Tavernes en Brasseries

Data Manipulation Language

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank

SQL. Datamodellering 2008

SQL. Wat is SQL? Geschiedenis SQL SQL DMO Datamodellering 2008

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Wiki on Wheels. -Wikipedia on your personal SQL server. Door Anton Kirschhock

oefeningen TOP2000 antwoorden

Medical Intelligence in de praktijk

Handleiding Project OCMW Beerse.

Zelftest SQL Workshop

SQL opgaven. Relationele model: Opgaven:

Transcriptie:

Groepswerk Technieken voor Datamodellering Verbinnen M. & Vanhuysse R. 2013-2014

Overzicht project management Logboek 2/4/14 team gevormd, onderwerp vastgelegd; 7/4/14 Inzending definitiestudie; 23/4/14 opstellen en normaliseren van conceptueel ERD 30/4/14 opstellen CREATE en INSERT statements 7/5/14 afwerken INSERT statements, opstellen queries en verslag Zelfevaluatie team De samenwerking verliep vlot. We twijfelden in het begin over een geschikt onderwerp, maar Maxime kwam al snel met het simpele idee om een database voor een restaurant te maken. Samen bepaalden we een eenvoudige inhoud in de definitiestudie. Het normaliseren on opstellen van het ERD verliep vlot door de keuze van dit onderwerp. In de oefenzittingen splitsten we onze aandacht: Robrecht schreef de CREATE statements en het verslag en Maxime schreef de INSERT en SELECT statements. We zijn beiden tevreden over het resultaat en appreciëren de wederzijdse input in het project. We denken dat we door dit project voldoende hebben bijgeleerd om de leerstof onder de knie te krijgen. We zijn overeengekomen dat onze inspanning gelijk liggen en hebben daarom de verdeling van de punten gedaan door te tossen. Maxime krijgt 5 punten en Robrecht 6.

Definitiestudie Restaurant case study Probleemstelling Definitie studie Het doel van dit project is het opzetten van een restaurant. Ons doel is het uiteenzetten van het beheer om de werking van het restaurant zo efficiënt mogelijk te maken en het restaurant zo winstgevend mogelijk. Interviews Wat is de richting die u uit wilt met het restaurant (sterrenzaak of brasserie, etc.)? Wij willen een eenvoudig restaurant opzetten zoals er velen zijn in de Muntstraat in Leuven. Dit zijn gezellige niet al te grote restaurants met een hele goede prijs/kwaliteit verhouding die zeer budgetvriendelijke is zodat alle soorten groepen van mensen bij ons kunnen komen tafelen. Studenten en werkende mensen zijn onze doelgroep. Hoe gaat de bediening geregeld worden? Ons opzet is het restaurant opdelen in verschillende zones van tafels. Per zone van tafels worden er dan 1 of meerdere obers aangewezen zodat de bediening heel vlot gaat en de wachttijden miniem zijn. Werken jullie met een reservatie systeem? Wij hebben besloten om te werken met een systeem waarin het mogelijk is om te reserveren maar waar het ook mogelijk is om binnen te stappen en te vragen voor een tafel. Dit is heel flexibel en zorgt voor een lage drempel om bij ons te komen dineren. Studenten leven in een hels tempo waarbij reserveren voor een restaurant meestal niet past. Zij stappen een restaurant naar keuze binnen en wij staan open voor hun komst. Hoe wordt er afgerekend? De rekening wordt opgemaakt per tafel op het einde van het diner. Hier zijn de maaltijden en de bestelde dranken inbegrepen.

Situatieschets Dit restaurant is een zaak die staat op zichzelf. De situering is de Muntstraat in Leuven, waar tevens nog andere restaurants gevestigd zijn. Op dit moment is de gehele boekhouding nog op papier: reservaties worden locaal of telefonisch doorgegeven en bijgehouden in een agenda, bestellingen worden per tafel neergeschreven door het personeel en de rekeningen worden bij het verlaten van het restaurant opgesteld. De menu s zijn opgebouwd als volgt: er is een ruime keuze tussen voorgerechten, hoofdgerechten, desserts en dranken. Probleemomschrijving De restauranthouder beseft dat het huidige systeem niet mee is met de tijd. Dit blijkt uit de trage bediening en kleine fouten die gemaakt worden bij het opdienen. Om de situatie te verbeteren wil hij een digitaal systeem met bijhorende database opstellen. Per voorgerecht, hoofdgerecht of dessert worden een ID, een prijs, al dan niet seizoensmaaltijd, aantal personen en al dan niet behorende tot een menu bij gehouden. Voor de dranken wordt er een ID, een prijs, een hoeveelheid van de drank(cl of l) en een eventueel alcohol percentage bijgehouden. De dranken, voorgerechten, gerechten en desserts worden dan via hun ID gekoppeld tot 1 bestelling. De bestelling bestaat uit een bestelnummer, een totaal prijs, een tafelnummer, een klantnummer (in dien dat bestaat voor de klant; dit staat de restauranthouder toe om trouwe klanten te belonen met korting op volgende rekeningen). Er wordt ook bijgehouden welke ober welke bediening verzorgt, om bij de verloning de fooi te berekenen.

Conceptueel Ontwerp

Logisch Ontwerp

Technisch Ontwerp CREATE statements CREATE TABLE groepswerk_vanhuysse_verbinnen.bestellingen (bestellingsid int not null, klantid tafelid int, int, aantal_personen_bediend int not null, CONSTRAINT bestellingen_pkey PRIMARY KEY (bestellingsid) ) ---------------------------------------------- CREATE TABLE groepswerk_vanhuysse_verbinnen.tafels (tafelid int not null REFERENCES groepswerk_vanhuysse_verbinnen.bestellingen, aantal_personen int not null, reservatie boolean not null, CONSTRAINT tafels_pkey PRIMARY KEY (tafelid) ) ---------------------------------------------- CREATE TABLE klanten (klantid int not null REFERENCES groepswerk_vanhuysse_verbinnen.bestellingen, naam char(45) not null, voornaam char(45) not null, korting int, CONSTRAINT klanten_pkey PRIMARY KEY (klantid) )

---------------------------------------------- CREATE TABLE bestellingen_has_consumpties (bestellingsid int consumptieid int not null REFERENCES groepswerk_vanhuysse_verbinnen.bestellingen, not null REFERENCES groepswerk_vanhuysse_verbinnen.consumpties, CONSTRAINT bestellingen_has_consumpties_pkey PRIMARY KEY (bestellingsid, consumptieid) ) ------------------------------------------ CREATE TABLE consumpties (consumptieid INT not null, naam VARCHAR(45), prijs FLOAT not null, voor_aantal_personen INT, CONSTRAINT consumpties_pkey PRIMARY KEY(consumptieID) ) ---------------------------------------------- CREATE TABLE dranken (consumptieid INT not null REFERENCES groepswerk_vanhuysse_verbinnen.consumpties, hoeveelheid_drank FLOAT not null, alcoholpercentage INT, CONSTRAINT dranken_pkey PRIMARY KEY(consumptieID) ) ------------------------------------------ CREATE TABLE voorgerechten

(consumptieid INT not null REFERENCES groepswerk_vanhuysse_verbinnen.consumpties, seizoen VARCHAR(45), menu VARCHAR(45), CONSTRAINT voorgerechten_pkey PRIMARY KEY(consumptieID) ) ------------------------------------------ CREATE TABLE hoofdgerechten (consumptieid INT not null REFERENCES groepswerk_vanhuysse_verbinnen.consumpties, seizoen VARCHAR(45), menu VARCHAR(45), CONSTRAINT hoofdgerechten_pkey PRIMARY KEY(consumptieID) ) ------------------------------------------ CREATE TABLE desserten (consumptieid INT not null REFERENCES groepswerk_vanhuysse_verbinnen.consumpties, seizoen VARCHAR(45), menu VARCHAR(45), CONSTRAINT deserten_pkey PRIMARY KEY(consumptieID) ) INSERT statements INSERT INTO CONSUMPTIES (consumptieid,naam,prijs,voor_aantal_personen) VALUES (0001,'plat_water',2,1),

(0002,'bruis_water',2,1), (0003,'cola',2,1), (0004,'sprite',2,1), (0005,'rode_wijn',3,1), (0006,'witte_wijn',3,1), (0007,'champagne',3,1), (0008,'wisky',7,1), (0009,'wodka',7,1), (0011,'kaaskroketten',8,1), (0012,'garnaalkroketten',8,1), (0013,'tapas',12,2), (0014,'scampi_met_look',9,1), (0015,'noorse_schotel',10,1), (0016,'bruschetta',13,2), (0017,'kippensoep',7,1), (0018,'tomaat_garnaal',14,2), (0021,'garnaalkroketten_met_frietjes',15,1), (0022,'entrecôte_met_peperroomsaus',18,1), (0023,'kaaskroketten_met_frietjes',14,1), (0024,'kabeljauwhaasje_met_prei_en_kroketten',19,1), (0025,'varkenskarbonade_met_frietjes',15,1), (0026,'pasta_al_carbonara',15,1), (0027,'pad_thai_kip',11,1), (0028,'babi_pangang',13,1), (0031,'dame_blanche',5,1), (0032,'damme_noire',5,1),

(0033,'suikertaart',4,1), (0034,'moelleux',6,1), (0035,'chocolademousse',4,1), (0036,'tiramisu',5,1), (0037,'créme_brulé',4,1), (0038,'fruitsalade',3,1), (0039,'chocoladebrownie',3,1); INSERT INTO DRANKEN (consumptieid,hoeveelheid_drank,alcoholpercentage) VALUES (0001,25,DEFAULT), (0002,25,DEFAULT), (0003,25,DEFAULT), (0004,25,DEFAULT), (0005,10,12), (0006,10,12), (0007,10,12), (0008,4,40), (0009,4,40); INSERT INTO VOORGERECHTEN (consumptieid,seizoen,menu) VALUES (0011,'winter',null), (0012,'zomer',null), (0013,null,null), (0014,'zomer',null),

(0015,'lente',null), (0016,'lente',null), (0017,'herfst',null), (0018,'zomer',null); INSERT INTO HOOFDGERECHTEN (consumptieid,seizoen,menu) VALUES (0021,'zomer','zeevruchten'), (0022,null,'genieter'), (0023,null,null), (0024,'zomer','vis'), (0025,'winter',null), (0026,null,'italiaans'), (0027,null,'oosters'), (0028,null,'chinees'); INSERT INTO desserten (consumptieid,seizoen,menu) VALUES (0031,null,null), (0032,null,null), (0033,null,'belgische keuken'), (0034,null,'franse keuken'), (0035,null,null),

(0036,null,'italiaans'), (0037,null,null), (0038,'zomer',null), (0039,'zomer',null); INSERT INTO bestellingen (bestellingsid, klantid, tafelid, aantal_personen_bediend) VALUES (1, null, 1, 1), (2, null, 1, 2), (3, 1, 2, 2), (4, null, 3, 3), (5, null, 4,4); INSERT INTO tafels (tafelid,aantal_personen,reservatie) VALUES (1,2,FALSE), (2,2,FALSE), (3,4,TRUE), (4,4,FALSE), (5,8,FALSE), (6,8,FALSE); INSERT INTO klanten (klantid, naam, voornaam, korting) VALUES (1, 'Verbinnen', 'Maxime', 10), (2, 'Vanhuysse', 'Robrecht', 10),

(3, 'Willis', 'Bruce', 90), (4, 'Van Pee', 'Jo', null); Queries Query 1: selecteer alle hoofdgerechten voor tafel 3 SELECT * FROM ((((groepswerk_vanhuysse_verbinnen.tafels INNER JOIN groepswerk_vanhuysse_verbinnen.bestellingen ON groepswerk_vanhuysse_verbinnen.bestellingen.tafelid = groepswerk_vanhuysse_verbinnen.tafels.tafelid) INNER JOIN groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties ON groepswerk_vanhuysse_verbinnen.bestellingen.bestellingsid = groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties.bestellingsid) INNER JOIN groepswerk_vanhuysse_verbinnen.consumpties ON groepswerk_vanhuysse_verbinnen.consumpties.consumptieid = groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties.consumptieid) INNER JOIN groepswerk_vanhuysse_verbinnen.hoofdgerechten ON groepswerk_vanhuysse_verbinnen.hoofdgerechten.consumptieid = groepswerk_vanhuysse_verbinnen.consumpties.consumptieid) WHERE tafels.tafelid = 3 Query 2: selecteer alle bestellingids voor tafel 1 SELECT bestellingen.bestellingsid FROM (groepswerk_vanhuysse_verbinnen.tafels INNER JOIN groepswerk_vanhuysse_verbinnen.bestellingen ON groepswerk_vanhuysse_verbinnen.bestellingen.tafelid = groepswerk_vanhuysse_verbinnen.tafels.tafelid) WHERE tafels.tafelid = 1 Query 3: bereken de korting voor klant 1 SELECT klanten.korting*(sum(consumpties.prijs)/100) FROM ((((groepswerk_vanhuysse_verbinnen.tafels INNER JOIN groepswerk_vanhuysse_verbinnen.bestellingen ON

groepswerk_vanhuysse_verbinnen.bestellingen.tafelid = groepswerk_vanhuysse_verbinnen.tafels.tafelid) INNER JOIN groepswerk_vanhuysse_verbinnen.klanten ON groepswerk_vanhuysse_verbinnen.bestellingen.klantid = groepswerk_vanhuysse_verbinnen.klanten.klantid) INNER JOIN groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties ON groepswerk_vanhuysse_verbinnen.bestellingen.bestellingsid = groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties.bestellingsid) INNER JOIN groepswerk_vanhuysse_verbinnen.consumpties ON groepswerk_vanhuysse_verbinnen.consumpties.consumptieid = groepswerk_vanhuysse_verbinnen.bestellingen_has_consumpties.consumptieid) WHERE bestellingen.bestellingsid = 3 GROUP BY klanten.korting, consumpties.prijs