Datamodellering en –verwerking 8C020 college 6
Terugblik college 5 Normalisatie 1ste, 2de, 3de normaal form Aspecten van SQL Join Subqueries Oefeningen SQL Oefeningen ER, RM, SQL
Onderwerpen college 6 Oefeningen SQL Procesmodelleren Klassieke Petri-netten Gedrag van een Petri-net Voorbeelden
Procesmodelleren Processgericht benadering richt zich op de dynamiek van een systeem We beschouwen discrete dynamische systemen Voorbeeld: Lift Gaat stapsgewijs van de ene naar de andere verdieping Discrete toestandsovergangen De lift blijft niet in een toestand maar springt van de ene naar de andere toestand Dynamisch systeem
Toestanden en transities Toestand van de lift Die kunnen we weergeven als een getal de verdieping waar de lift is Toestandsruimte De verzameling van alle mogelijke toestanden Voor de lift S = {0, 1, 2, 3, 4} Transitie Een sprong van de ene toestand naar de andere Transitierelatie Opsomming van alle mogelijke teostandsovergangen T = {(0,1), (1,2), (2,3), (3,4), (4,3), (3,2), (2,1), (1,0)} T S X S
Transitiesysteem Transitiesysteem Beschrijving van een discreet dynamisch systeem in termen van een toestandsruimte S en een transitierelatie T Transitiesysteem M = (S, T) Toestandsdiagram Eigenlijk een graaf Toestand – knoop Transitie - kant Praktisch alleen voor ”kleine” systemen
Klassiek Petri-net Petri-netten [C.A. Petri, 1962] Modelleringstechniek Onder andere gebruikt voor informatiesystemen Recentelijk ook voor biologische systemen/processen In dit college bepreken we ons tot klassieke Petri-netten Voor complexere informatiesystemen uitbreidingen ontwikkeld Hoog-niveau Petri-netten
Kanalen en processoren Een Petri-net is opgebouwd uit Kanalen Processoren Verbindingen van een kanaal naar een processor Verbindingen van een processor naar een kanaal
Kanalen en processoren (voorbeeld Lift) kanaal p34 p43 processor k3 p23 p32 k2 token p12 k1 p21 p01 p10 k0
Tokens, toestanden en vuren Kanalen kunnen tokens bevatten om aan te geven welke toestand actueel is De toestand van een Petri-net wordt bepaald door het aantal tokens dat in elk kanaal aanwezig is De netwekstructuur van een Petri-net is vast De verdeling van de tokens kan veranderen door vuren
Kanalen en processoren (voorbeeld Lift)
Vuringsregel Inputkanalen Kanalen die via een ingaande pijl met een processor verbonden zijn Outputkanalen Kanalen die via een uitgaande pijl met een processor verbonden zijn Een processor mag alleen dan vuren als er tokens in elk van de inputkanalen liggen Een processor die vuurt consumeert tokens van zijn inputkanalen en produceert tokens voor zijn outputkanalen
Voorbeeld binnenkomst foto_maken vertrek wacht voor na klaar
Voorbeeld vrij binnenkomst foto_maken vertrek wacht voor na klaar bezet
Multipliciteit Er mogen meerdere pijlen lopen van een kanaal naar een vrij binnenkomst foto_maken vertrek wacht voor na klaar Er mogen meerdere pijlen lopen van een kanaal naar een processor en omgekeerd
Formele beschrijving van de structuur De kanalen in een Petri-net kunnen we omschrijven door de verzameling kanaalnamen K K = {wacht, voor, na, klaar, vrij} De processoren door de verzameling processornamen P P = {binnenkomst, foto_maken, vertrek} Processoren zijn actief: de naam is vaak een werkword Kanalen zijn passief: de naam is vaak een zelfstandig naamwoord, bijvoegelijk naamwoord of bijwoord
Formele beschrijving van de structuur Multipliciteit I en O Verbinding I O (wacht, binnenkomst) 2 (vrij, binnenkomst) 1 (voor, foto_maken) 2 (na, vertrek) 2 (binnenkomst, voor) 2 (foto_maken, na) 2 (vertrek, klaar) 2 (vertrek, vrij) 1
Formele beschrijving van de structuur K en P worden beschreven met verzamelingen I en O kunnen worden beschreven als functies I: K X P -> N O: P X K -> N Een Petri-net is een 4-tupel (K,P,I,O) met K een eindige verzameling kanalen P een eindige verzameling processoren I een functie (KXP)->N voor de bepaling van de inputmultipliciteit O een functie (PXK)-> voor de bepaling ven de outputmultipliciteit
Gedrag van een Petri-net De toestand van ee Petri-net wordt bepaald door de verdeling van tokens over de kanalen Toestandsovergangen zijn slechts onder bepaalde voorwaarden mogelijk Een processor moet enabled zijn om te vuren Een processor is enabled op het moment dat er in elk van de inputkanalen voldoende tokens aanwezig zijn afhankelijk van de multipliciteit Als een processor p vuurt, verwijdert p van elk van zijn inputkanalen tokens en voegt tokens toe aan zijn outputkanalen
Non-determinisme Wanneer meerdere processoren op hetzelfde moment enabled zijn, is niet bepaald welke van deze processoren zal vuren In principe blijven processoren vuren tot er geen enkele processor meer enabled is: dan is een eindtoestand bereikt