Datamodelleren en databases 2011

Vergelijkbare documenten
Normaliseren versie 1.1

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

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

ER-modeling. Datamodellering Wat is ER-modeling?

ER-modeling. Wat is ER-modeling? ERD & relationeel model. ER-benadering DMO Datamodellering 2008

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

Normaliseren. Methodisch modelleren. Normaliseren & DBMS-model. Normalisatie DMO Datamodellering Twee manieren: Deze week: normaliseren

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

SQL. Datamodellering 2008

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

F. TRUYEN - Informatiekunde QBE. MS Access

Relationele Databases 2002/2003

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

SQL & Datamodelleren

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

Structured Query Language

Relationele Databases 2002/2003

Relationele Databases 2002/2003

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

Introductie in flowcharts

Introductie (relationele) databases

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

[TOETS SQL INLEIDING]

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

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

Query SQL Boekje. Fredrik Hamer

Data Handling Ron van Lammeren - Wageningen UR

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

Databases - Inleiding

DMD-2011 Introductie. Introductie. Opzet van de cursus. Werkwijze per week. Datamodelleren en databases Twee hoorcolleges in totaal

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

TECHNISCHE UNIVERSITEIT EINDHOVEN. Faculteit Wiskunde en Informatica

2019 SUNEXCHANGE USER GUIDE LAST UPDATED

MyDHL+ Van Non-Corporate naar Corporate

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

Zelftest SQL Workshop

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

Preschool Kindergarten

LDAP Server on Yeastar MyPBX & tiptel 31xx/32xx series

Normaliseren voor Dummies

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010

Relationele databases

SQL.

General info on using shopping carts with Ingenico epayments

Les 2 Eenvoudige queries

Computerclub Volwassenen, Jeugd en Informatica vzw

(1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs. (2) Ons gezelschap is er om kunsteducatie te verbeteren

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT

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

Databank - Gevorderden 1

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

Data Definition Language

ALGORITMIEK: answers exercise class 7

After that, the digits are written after each other: first the row numbers, followed by the column numbers.

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

Informatie & Databases

Les 11 : Basis SQL (deel2).

Engels op Niveau A2 Workshops Woordkennis 1

CBSOData Documentation

Zelftest SQL Workshop

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

RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

Databases en SQL Foundation (DBSQLF.NL)

OPEN TRAINING. Onderhandelingen met leveranciers voor aankopers. Zeker stellen dat je goed voorbereid aan de onderhandelingstafel komt.

Four-card problem. Input

FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 25/2/2016. Biocide CLOSED CIRCUIT

Calculator spelling. Assignment

CBSOData Documentation

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

Zo kan je linken maken tussen je verschillende groepen van gegevens.

Dataconversie met Oracle Spatial

EXIN Databases en SQL Foundation

Les S-02: Meer geavanceerde SQL-instructies

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober A. Snippe ICT Lyceum 1

SQL & Relationele datamodellen in interactieve media

Data Warehouse Script Generator Doel

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

Tentamen Databases. 18 december :00-12:00, Educatorium Gamma

DATAMODELLERING ER DIAGRAM

SQL datadefinitietaal

Redundancy Normaalvormen

Quality of life in persons with profound intellectual and multiple disabilities. Marga Nieuwenhuijse maart 2016

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

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

L.Net s88sd16-n aansluitingen en programmering.

Databases (INFODB) 24 januari 2007

L.Net s88sd16-n aansluitingen en programmering.

Meetkunde en Lineaire Algebra

Databases (INFODB) 20 april 2010

Thinking of development

Relationele databases

2006 Volkswagen Jetta TDI

11. Het selecteren van gegevens deel II

01/ M-Way. cables

BIM-validatietool Toetst data bij aanlegprojecten

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information

Transcriptie:

Datamodelleren en databases 21 Capita selecta 1 In dit college Modelleren Normaliseren Functionele afhankelijkheid 1-3N M:N-relaties, associatieve entiteittypes, ternaire relaties Weak entiteittypes Multivalued attributes (implementatie) Implementatie super/subtypes Queries selectie, projectie en join 2/30 Wat is normaliseren? Data organiseren in tabelvorm, zó dat: er minimale redundantie is update-operaties (toevoegen, wijzigen, verwijderen) eenvoudig zijn uit te voeren records in een tabel te identificeren zijn m.b.v. een unieke sleutel (primary key) 3/30 DMO 2007 1

Redundantie: voorbeeld Suppliers-and-Parts: wat als een leverancier verhuist? S# City P# Qty S1 London P1 300 S1 London P2 200 S1 London P3 400 S2 Paris P1 100 S2 Paris P2 400 S3 Paris P2 100 S4 London P2 200 S4 London P4 300 4/30 Normaliseren als techniek Normaliseren: bottom-up datamodelleringstechniek vgl. ER-methode: top-down Omvat een aantal stappen (= normaalvormen): 1NF 2NF 3NF BCNF 4NF 5NF 6NF meestal voldoende: relatie is genormaliseerd 1NF 2NF 3NF BCNF 4NF 5NF 6NF 2NF veronderstelt, dat de dataset al in 1NF is, etc. 5/30 Functionele afhankelijkheid (vb) S# City P# Qty S1 London P1 300 S1 London P2 200 S1 London P3 400 S2 Paris P1 100 S2 Paris P2 400 S3 Paris P2 100 S4 London P2 200 S4 London P4 300 S# P# City Qty S# is de determinant van City City is functioneel afhankelijk van S# 6/30 DMO 2007 2

Functionele afhankelijkheid (def) Given a relation R: attribute Y of R is functionally dependent on attribute X if and only if each X-value in R has associated with it precisely one Y-value in R (at any one time). in symbols, R.X R.Y (read: R.X functionally determines R.Y ) Attributes X and Y may be composite. 7/30 Bedrijf & werknemers - start Een team kan verschillende projecten hebben, een werknemer kan in verschillende teams zitten, maar werkt maar aan één project tegelijk. Attributen in dit voorbeeld (t = team, p = project; telkosten: aantal eenheden gebeld op een bepaald toestel): team#, pers#, tbudget, tel#, telkosten, proj#, pbudget 8/30 Bedrijf & werknemers 1NF team# tbudget pers# tel# telkosten proj# pbudget 500 112 3456 0 10 200 500 113 4589 34 10 200 500 114 1267 12 20 100 700 112 3456 0 NULL NULL 700 115 2385 57 30 400 700 116 1467 25 30 400 de alles -relatie 1NF: All values are atomic (no repeating groups) BEDRIJF (team#, tbudget, pers#, tel#, telkosten, proj#, pbudget) 9/30 DMO 2007 3

Bedrijf & werknemers 2NF BEDRIJF (team#, tbudget, pers#, tel#, telkosten, proj#, pbudget) BEDRIJF heeft een composite PK testen op 2NF: 2NF: Every non-key column dependent on the entire PK Dit is niet het geval, dus 1NF 2NF: TEAM (team#, tbudget) WERKNEMER (pers#, tel#, telkosten, proj#) 10/30 Bedrijf & werknemers 3NF 3NF: no transitive dependency on PK Er is nu wel transitieve afhankelijkheid er zijn nog andere, directere determinanten, namelijk: proj# pbudget tel# telkosten Dus hiervoor aparte tabellen: 2NF 3NF: TEAM (team#, tbudget) WERKNEMER (pers#, tel#, proj#) tel# en proj# zijn FK PROJECT (proj#, pbudget, team#) team# is FK TELEFOON (tel#, telkosten) Wat overblijft is de tussentabel voor de veel-op-veel relatie TEAM- WERKNEMER: TAAK (team#, pers#) team# en pers# zijn FK 11/30 Bedrijf & werknemers - eind TEAM team# tbudget 500 700 pers# 112 113 114 tel# 3456 4589 1267 proj# 10 10 20 tel# 3456 4589 1267 telkosten 0 TELEFOON 34 12 WERKNEMER 115 116 2385 1467 30 30 3456 2385 0 57 1467 25 PROJECT team# 03 proj# 10 20 30 pbudget 200 100 400 team# pers# 112 113 114 TAAK 115 116 12/30 DMO 2007 4

Eindsituatie in ERD associatieve entiteit / weak 13/30 Weak (= dependent) entity can only exist in conjunction with an other entity. cannot be uniquely identified by its attributes alone; therefore, it must use a foreign key in conjunction with its attributes to create a primary key (Wikipedia). 14/30 Variant ERD Wat is het verschil? Welke oplossing is beter? associatieve entiteit in ternaire relatie 15/30 DMO 2007 5

We breiden het voorbeeld uit Multivalued attribute tools : Zó niet te implementeren als één tabel, waarom niet? 16/30 Multivalued attribute 1:N 17/30 Hoe gaat het in Ms. Access? Tabellen maken Tools Relationships Relationships window Slepen van PK naar andere tabel 18/30 DMO 2007 6

Supertype/subtype Supertype Drie implementaties: 3 tabellen 2 subtypetabellen 1 supertypetabel null values Subtype1 Subtype2 19/30 SQL: Selectie Selection operatie op een relationele tabel waarbij records worden geselecteerd die aan een bepaald criterium voldoen, en die samen worden opgeleverd als een nieuwe tabel. SQL SELECT * FROM Employee WHERE Age > 50 ORDER BY Age 20/30 SQL: ORDER BY The ORDER BY keyword is used to sort the result-set by a specified column. The ORDER BY keyword sort the records in ascending order by default. If you want to sort the records in a descending order, you can use the DESC keyword. 21/30 DMO 2007 7

SQL: GROUP BY The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns. 22/30 SQL: GROUP BY - voorbeeld SELECT Customer, SUM(OrderPrice) FROM Orders GROUP BY Customer resultaat: zonder group by: 23/30 SQL: Projectie Projection operatie op een relationele tabel waarbij kolommen worden geselecteerd, en die samen worden opgeleverd als een nieuwe tabel. SQL select Name, Age from Employee N.B. projectie gaat meestal samen met selectie 24/30 DMO 2007 8

SQL: Join Join is een zijdelingse verbinding van tabellen, waarbij eveneens een nieuwe tabel ontstaat Combineren van data uit verschillende tabellen onderling verbonden door PK-FK dezelfde tabel: self-referencing self-join Speciale joins als bij een 1:N-relatie aan de N-kant records ontbreken inner / outer join 1:N 25/30 SQL: Inner join Alleen matching records worden opgeleverd in de nieuwe tabel Als =-operator wordt gebruikt: equi-join SQL select T1.*, T2.Product from T1, T2 where T1.ID = T2.Cid of vanaf SQL92: select T1.*, T2.Product from T1 join T2 on T1.ID = T2.Cid (mag ook nog een where-clause hebben) 26/30 SQL: Outer join Alle records (van de linker en/of rechter tabel) worden opgeleverd in de nieuwe tabel NULL-waarden waar matching niet mogelijk is left outer join right outer join full outer join SQL select T1.*, T2.Product from T1 left join T2 on T1.ID = T2.Cid 27/30 DMO 2007 9

SQL: Union - 1 Union is een kop-staart verbinding van tabellen, waarbij eveneens een nieuwe tabel ontstaat Union combineert de resultaten van twee select-queries, waarbij duplicaat-records automatisch worden verwijderd (tenzij union all wordt gebruikt) Tabellen moeten wel overeenkomen in datastructuur! 28/30 SQL: Union - 2 union union all Gegeven tabel T1 en tabel T2 Gevraagd de totale verzameling T1 plus T2 SQL select * from T1 union select * from T2 order by Name select * from T1 union all select * from T2 order by Name 29/30 Vragen? 30/30 DMO 2007 10