De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Fysiek databaseontwerp en SQL Hoofdstuk 6 Database, Document and Content Management.

Verwante presentaties


Presentatie over: "Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Fysiek databaseontwerp en SQL Hoofdstuk 6 Database, Document and Content Management."— Transcript van de presentatie:

1 Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Fysiek databaseontwerp en SQL Hoofdstuk 6 Database, Document and Content Management

2 Vakgroep Telecommunicatie en Informatieverwerking 2 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

3 Vakgroep Telecommunicatie en Informatieverwerking 3 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

4 Vakgroep Telecommunicatie en Informatieverwerking 4 Fysieke ontwerp van databases Overzicht informatie- vergaring domeinanalyse functionele analyse behoefteanalyse conceptueel ontwerp logisch ontwerp fysieke ontwerp databasemodel- onafhankelijk dbms- onafhankelijk conceptueel model (bijvoorbeeld EER-diagram) functionele beschrijving logisch databaseschema (bijvoorbeeld relationeel) gedragspecificaties DDL-scripts implementatie van gedrag

5 Vakgroep Telecommunicatie en Informatieverwerking 5 Fysieke ontwerp van databases fysiek relationeel databaseontwerp DDL-scripts logisch relationeel databaseontwerp gedragspecificaties relationeel databaseschema reverse engineering extern te implementeren gedragspecificaties EER-diagram cataloog

6 Vakgroep Telecommunicatie en Informatieverwerking 6 DDL-script ‘forward engineering’ ‘reverse engineering’ Fysieke ontwerp van databases

7 Vakgroep Telecommunicatie en Informatieverwerking 7 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

8 Vakgroep Telecommunicatie en Informatieverwerking 8 SQL –DDL –DML SQL/PSM Praktijk: SQL-dialecten SQL SQL in Oracle SQL in MSAccess SQL in SQLServer SQL-99

9 Vakgroep Telecommunicatie en Informatieverwerking 9 BNF-notatie Identificatoren Gereserveerde woorden SQL notatiebetekenis x yx wordt gevolgd door y x | yx of y (keuze) [ x ]x of ledig (x is optioneel) { x }x moet voorkomen (x is vereist) (…)eindig aantal keer herhalen van wat er tussen de haken staat Voorbeeld: a[b]{c|d}([*e…]) ‘ac’, ‘abd’, ‘ac*e’ en ‘abc*e*e*e*e’

10 Vakgroep Telecommunicatie en Informatieverwerking 10 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

11 Vakgroep Telecommunicatie en Informatieverwerking 11 Databases –Aanmaken CREATE SCHEMA naam [AUTHORIZATION maker] –Verwijderen DROP SCHEMA naam [RESTRICT|CASCADE] Domeinen –Aanmaken CREATE DOMAIN naam [AS] datatype [DEFAULT defaultwaarde] [CHECK (logische_expressie)] –Verwijderen DROP DOMAIN naam [RESTRICT|CASCADE] Datadefinitietaal

12 Vakgroep Telecommunicatie en Informatieverwerking 12 –Standaard atomaire datatypes van SQL Datadefinitietaal datatypebeschrijving booleanwaarheidswaarde uit driewaardige logica (true, false of null) char[(n)]karaktersequentie met vaste lengte n varchar[(n)]karaktersequentie met variabele lengte die maximaal n is numeric[(p[,s])]exact getal met p cijfers, waarvan s na de komma decimal[(p[,s])]idem als numeric[(p[,s])] integergrote gehele getallen smallintkleine gehele getallen (tussen en 32767) float[(p)]reëel getal in wetenschappelijke notatie van de vorm mEe; het getal wordt berekend uit m.10 e ; p is de precisie van m; voorbeelden zijn -5E9 en 3.2E-3 realreëel getal met enkele precisie double precisionreëel getal met dubbele precisie datedatum met jaar (year), maand (month) en dag (day) velden timetijd met uur (hour), minuut (minute) en seconde (second) velden timestampcombinatie van datum en tijd intervaltijdinterval

13 Vakgroep Telecommunicatie en Informatieverwerking 13 –Voorbeelden CREATE DOMAIN geslacht AS char DEFAULT ‘M’ CHECK (VALUE IN (‘M’, ‘V’)); CREATE DOMAIN hobby AS varchar CHECK (VALUE IN (SELECT Naam FROM Hobbies)); CREATE DOMAIN jaar AS integer CHECK (VALUE BETWEEN 0 AND 2100); Datadefinitietaal

14 Vakgroep Telecommunicatie en Informatieverwerking 14 Relaties –Aanmaken CREATE TABLE naam ( ({kolomnaam datatype [NOT NULL][UNIQUE] [DEFAULT defaultwaarde][CHECK(logische_expressie)]}[,…]) {PRIMARY KEY(lijst_van_kolomnamen)[,]} ([UNIQUE(lijst_van_kolomnamen)][,…]) ([FOREIGN KEY(lijst_van_kolomnamen) REFERENCES tabelnaam [ON DELETE actie][ON UPDATE actie]][,…]) ([CHECK(logische_expressie)][,…]) ) Datadefinitietaal

15 Vakgroep Telecommunicatie en Informatieverwerking 15 Datadefinitietaal Acties bij vreemde sleutels: Voor het verwijderen (ON DELETE) of aanpassen (ON UPDATE) van corresponderende primaire sleutelwaarden NO ACTION RESTRICT CASCADE SET NULL SET DEFAULT

16 Vakgroep Telecommunicatie en Informatieverwerking 16 –Voorbeeld CREATE TABLE Schilderij( S_ID char(3), Naam varchar NOT NULL, Artiest char(3), Periode jaar, Waarde real CHECK( VALUE > 0 ), Eigenaar varchar, PRIMARY KEY(S_ID), FOREIGN KEY(Artiest) REFERENCES Artiest, FOREIGN KEY(Eigenaar) REFERENCES Eigenaar) Datadefinitietaal

17 Vakgroep Telecommunicatie en Informatieverwerking 17 –Aanpassen ALTER TABLE naam {ADD [COLUMN] kolomnaam datatype [NOT NULL][UNIQUE] [DEFAULT defaultwaarde][CHECK(logische_expressie)] | DROP [COLUMN] kolomnaam [RESTRICT|CASCADE] | ADD [CONSTRAINT [restrictienaam]] restrictieoptie | DROP CONSTRAINT restrictienaam [RESTRICT|CASCADE] | ALTER [COLUMN] kolomnaam SET DEFAULT defaultoptie | ALTER [COLUMN] kolomnaam DROP DEFAULT} –Voorbeelden ALTER TABLE Schilderij ADD COLUMN Stijl varchar DEFAULT ‘Klassiek’ CHECK(VALUE IN (‘Klassiek’, ‘Modern’, ‘Eigentijds’)) ALTER TABLE Schilderij ALTER COLUMN Stijl SET DEFAULT ‘Eigentijds’ Datadefinitietaal

18 Vakgroep Telecommunicatie en Informatieverwerking 18 Indexen –Aanmaken CREATE [UNIQUE] INDEX indexnaam ON tabelnaam ((kolomnaam [ASC|DESC][,…])) –Verwijderen DROP INDEX indexnaam Views –Aanmaken CREATE VIEW viewnaam [((nieuwe_kolomnaam [,…]))] AS definiërende_expressie [WITH CHECK OPTION] –Verwijderen DROP VIEW viewnaam [RESTRICT|CASCADE] Datadefinitietaal

19 Vakgroep Telecommunicatie en Informatieverwerking 19 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

20 Vakgroep Telecommunicatie en Informatieverwerking 20 Instructies voor het toevoegen, aanpassen en verwijderen van data –Toevoegen van data Toevoeging van een tuple met expliciete opgave van de attribuutwaarden INSERT INTO naam [(kolomlijst)] VALUES (Lijst_met_attribuutwaarden) Voorbeeld INSERT INTO Schilderij (S_ID, Naam, Periode, Waarde) VALUES(‘S01’, ‘Vissershuis’, 1882, ) Toevoeging van tuples die afkomstig zijn van een andere relatie INSERT INTO naam [(kolomlijst)] (select_instructie) Voorbeeld INSERT INTO Schilderij (SELECT * FROM oud_schilderij WHERE Periode < 1800) Datamanipulatietaal

21 Vakgroep Telecommunicatie en Informatieverwerking 21 Toevoeging van data die afkomstig zijn uit een databestand LOAD FROM bestand [DELIMITER karakter] INSERT INTO naam [(kolomlijst)] Voorbeeld LOAD FROM ‘backup.csv’ DELIMITER ‘,’ INSERT INTO Schilderij –Aanpassen van data UPDATE naam SET ({kolomnaam=waarde}[,…]) [WHERE zoekconditie] Voorbeelden UPDATE Schilderij SET Waarde = WHERE S_ID = ‘S01’ UPDATE Schilderij SET Waarde = Waarde * 1.01 Datamanipulatietaal

22 Vakgroep Telecommunicatie en Informatieverwerking 22 –Verwijderen van data DELETE FROM naam [WHERE zoekconditie] Voorbeelden DELETE FROM Schilderij WHERE S_ID = ‘S01’ DELETE FROM Schilderij WHERE Eigenaar = ‘Boymans’ DELETE FROM Schilderij Datamanipulatietaal

23 Vakgroep Telecommunicatie en Informatieverwerking 23 Instructies voor het opzoeken van data SELECT [ALL|DISTINCT]{*|(kolomexpressie [AS nieuwe_naam][,…])} FROM ({naam}[alias][,…]) [WHERE zoekconditie] [{GROUP BY kolomlijst}[HAVING zoekconditie]] [ORDER BY kolomlijst] Datamanipulatietaal

24 Vakgroep Telecommunicatie en Informatieverwerking 24 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

25 Vakgroep Telecommunicatie en Informatieverwerking 25 Overzicht Verwerking van DML-instructies DML- instructies data DBMS gebruiker of toepassingsprogramma SQL-validatie algebraïsche expressie SQL-optimalisatie queryplan SQL-uitvoering resultaat

26 Vakgroep Telecommunicatie en Informatieverwerking 26 Validatie en omzetting van een DML-instructie –Vertalen Toevoeg- en verwijderinstructies Verwerking van DML-instructies INSERT INTO R 1 VALUES (v 1,v 2,…,v n ) unie: (R 1 UNION R 2 ) waarbij R 2 bestaat uit één tuple dat opgebouwd wordt uit v 1,v 2,…,v n INSERT INTO R 1 (R 2 ) unie: (R 1 UNION R 2 ) DELETE FROM R WHERE c verschil: R MINUS (R WHERE c) VertalingDML-instructie

27 Vakgroep Telecommunicatie en Informatieverwerking 27 Opzoekinstructies Verwerking van DML-instructies StapVertaling FROM R 1, R 2,…,R n Cartesisch product: Expressie1 = (R 1 TIMES R 2 TIMES … TIMES R n ) WHERE c 1 GROUP BY A 1, A 2,…,A m HAVING c 2 SELECT A 1, A 2,…,A p selectie: Expressie2 = (Expressie1 WHERE c 1 ) groeperen: (op basis van gelijke waarden voor A 1, A 2,…,A n ) Expressie3 = (Expressie2 GROUP (A 1, A 2,…,A n )) selectie: Expressie4 = (Expressie3 WHERE c 2 ) projectie: Expressie5 = (Expressie4 {A 1, A 2,…,A p })

28 Vakgroep Telecommunicatie en Informatieverwerking 28 Voorbeeld Verwerking van DML-instructies SELECT Schilderij.Naam, Artiest.Naam, Artiest.Voornaam FROM Schilderij, Artiest WHERE Schilderij.Artiest=Artiest.A_ID AND Schilderij.Periode BETWEEN 1800 AND 1899 Deze query wordt volgens de gegeven stapsgewijze vertaling omgezet naar de expressie: (((Schilderij TIMES Artiest) WHERE Schilderij.Artiest=Artiest.A_ID AND Schilderij.Periode BETWEEN 1800 AND 1899) {Schilderij.Naam, Artiest.Naam, Artiest.Voornaam})

29 Vakgroep Telecommunicatie en Informatieverwerking 29 Optimalisatie –Queryplan voorbeeld : (((Schilderij TIMES ARTIEST) WHERE Schilderij.Artiest=Artiest.A_ID AND Schilderij.Periode BETWEEN 1800 AND 1899) {Schilderij.Naam, Artiest.Naam, Artiest.Voornaam}) versus ((((Schilderij WHERE Periode BETWEEN 1800 AND 1899) TIMES ARTIEST) WHERE Schilderij.Artiest=Artiest.A_ID) {Schilderij.Naam, Artiest.Naam, Artiest.Voornaam}) Verwerking van DML-instructies

30 Vakgroep Telecommunicatie en Informatieverwerking 30 –Hints voor optimalisatie Het is belangrijk om de query goed te begrijpen en te weten wat de query verondersteld is te doen. Desnoods moet de query voor de analyse worden opgesplitst. Het is belangrijk om de relaties te kennen waarop de query inwerkt. Welke attributen zijn er? Welke datatypes worden gebruikt? Hoeveel tuples zijn er? Stel de query in vraag: Zijn alle gevraagde attributen nodig? Zijn er geen onnodige voorwaarden in de ‘WHERE’ en ‘HAVING’ gedeelten? Zijn er geen onnodige relaties opgenomen in het ‘FROM’ gedeelte? Moeten de resultaten wel worden gesorteerd? Verwerking van DML-instructies

31 Vakgroep Telecommunicatie en Informatieverwerking 31 Kan het ‘WHERE’-gedeelte optimaal gebruik maken van de beschikbare indexen? Bij sommige condities zoals ‘IS NULL’, ‘OR’, ‘<>’, ‘NOT’, ‘NOT IN’, ‘NOT EXISTS’, ‘NOT LIKE’ en ‘LIKE ‘%vrouw’’ kunnen indexen soms niet worden gebruikt. Herschrijven van de query kan performantiewinst opleveren. Tracht te achterhalen hoe belangrijk de query is. Hoe dikwijls wordt de query uitgevoerd? Als de query gewoonlijk heel veel resultaten teruggeeft, kan het nuttig zijn om te overwegen om het toepassing te herontwerpen. Analyseer het queryplan. Als blijkt dat bepaalde indexen niet worden gebruikt in het queryplan, kan het nuttig zijn om het gebruik ervan af te dwingen. Sommige systemen laten het (de DBA) toe om expliciet bij een query op te geven dat een index moet worden gebruikt. Een andere mogelijkheid is om de query-instructie te herschrijven. Verwerking van DML-instructies

32 Vakgroep Telecommunicatie en Informatieverwerking 32 Overzicht Fysieke ontwerp van databases SQL Datadefinitietaal Datamanipulatietaal Verwerking van SQL-instructies door een dbms “Query-by-Example”

33 Vakgroep Telecommunicatie en Informatieverwerking 33 Grafische templates Specificeren wat wordt gezocht, niet hoe het moet worden gezocht. “Query-By-Example” Tabel Schilderij primaire sleutel = {S_ID} vreemde sleutels = {Artiest} en {Eigenaar} Tabel Artiest primaire sleutel = {A_ID} Tabel Eigenaar primaire sleutel = {Naam} S_IDNaamArtiestPeriode Waarde Eigenaar: _ART > NaamVoornaamGeboren P. Gestorven NaamPlaatsLand A_ID _ART


Download ppt "Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Fysiek databaseontwerp en SQL Hoofdstuk 6 Database, Document and Content Management."

Verwante presentaties


Ads door Google