Home ] Vorstellung ] Inhalt ] Aufgaben ] Download ] Fehler ] Links ]

 

Aufgabe 4:  Eine Tankstellenkette

 

 

Struktur dieser Seite:

4.1   Beschreibung des Gegenstandsbereichs

4.2   Konzeptionelles Datenmodell

4.3   Transformation in das logische Datenschema

4.4   Physisches Datenmodell des PowerDesigner 16.5

4.5   Datenbank-Struktur für Access 2016

 

 

4.1      Beschreibung des Gegenstandsbereichs

 

Eine Tankstellenkette möchte in allen größeren Orten der Region Tankstellen einrichten und die relevan­ten Daten in einer Daten­bank speichern.

 

In Kleinkennstenich (Kreis Hintermberg, 2.000 Einwohner) gibt es noch keine Tankstelle, in Benzhausen (Kreis Mobilland, 75.000 Einwohner) bereits drei Tankstellen. Eine dieser Tank­stel­len befindet sich in der Rennstraße 77 (PLZ 98765); sie hat eine Fläche von 3.700 m2 und 13 Mitarbeiter, über die Per­sonal­num­mer, Name und Adresse gespeichert werden. Ein Mit­arbeiter kann mehreren – höchstens drei – Tank­stellen zugeord­net sein. Mitar­beiter können andere Mitar­beiter anleiten, wobei ein Mitar­beiter mehrere Chefs haben kann und ein Chef min­destens 3 Mit­arbei­ter anleitet.

 

Jede Tankstelle der Kette kann selbst wählen, von welchem Groß­händler sie den Kraftstoff be­zieht. Der Großhändler „Peter Petrolius AG“ ist für die Kette von großem Interesse, auch wenn er noch mit keiner Tankstelle zusammenarbeitet. Für jeden Groß­händler wird – über dessen unikalen Firmennamen hinaus – noch die Anschrift des Hauptsitzes gespeichert.

 

Die oben genannte Tankstelle hat 8 Kraftstofftanks, wobei der Tank mit der Nummer 3 ein Fas­sungs­ver­mögen von 70.000 l und einen Füllstand von 35 % hat. Er enthält den Kraftstoff mit der Be­zeichnung „Superben­zin bleifrei“. Der Kraftstoff „Superbenzin bleifrei“ hat eine Oktanzahl von 95 und ko­stet heute an allen Tankstellen der Kette 1,36 Euro. Die Tankstelle verfügt über 12 Zapfsäulen. Eine Zapf­säule ist jeweils mit genau 4 Kraftstofftanks verbunden, ein Tank kann mehrere Zapfsäulen speisen. Der Tank 9 ist vorübergehend stillgelegt: Er enthält keinen Kraftstoff und versorgt keine Zapfsäule.

 

Es werden Angaben über die Tankvorgänge gespeichert. Zu je­dem Tankvorgang muss ersicht­lich sein, an welcher Zapfsäule welcher Kraftstoff in welcher Menge getankt wurde und wie hoch der Tankpreis war. Gegebenenfalls kann dem Tankvorgang auch das betankte Fahrzeug zugeordnet werden – jedoch nur dann, wenn das Bezahlen „vergessen“ wurde. So wurde bei­spiels­weise in der betrachteten Tank­stelle am 06.06.2016 um 06:06 Uhr an der Zapf­säule 6 ein blauer VW Golf mit dem poli­zeilichen Kenn­zeichen „GAUN ER 006“ betankt, ohne dass be­zahlt wurde. Das ist besonders ärgerlich, weil dieses Fahr­zeug schon zum drit­ten Mal einem Tankvorgang zugeordnet wurde.

 

Weiterhin ist zu beachten:

 

·       Die Tankstellen der Kette werden nur in Orten und nicht auf freier Strecke eingerichtet.

·             

·        Eine neu eingerichtete Tankstelle hat noch keinen Mitar­beiter eingestellt und hat noch zu keinem Großhändler Kon­takt. Spä­ter kann sie dann aber nur von einem Großhändler den Kraftstoff beziehen.

 

·       Die Kraftstofftanks und die Zapfsäulen werden innerhalb einer Tankstelle jeweils durchnumme­riert. Es gibt somit in der Tank­stellenkette sehr viele Tanks bzw. Zapfsäulen mit der Nummer 1.

·             

·       Eine Tankstelle hat mindestens 4 Kraftstofftanks und minde­stens 2 Zapfsäulen. Kraftstoff einer Sorte kann sich in mehre­ren Tanks befinden. Ein Kraftstoff ist in wenigstens einem Tank vorhanden.

·             

·       An einer Zapfsäule kann zu einem Zeitpunkt nur ein Tank­vor­gang stattfinden. Einer gerade erst installierten Zapfsäule wurde noch kein Tankvorgang zugeordnet.

·             

·       Es werden nur solche Fahrzeuge gespeichert, die wenigstens einem „finanzierungsfreien“ Tankvor­gang zugeordnet wur­den.

 

 

4.2      Konzeptionelles Datenmodell

 

Bemerkungen:

 

·       Da nicht gesichert ist, dass es in einem Postleitzahl-Bezirk nur eine einzige Tankstelle gibt, wird der Objekttyp „Tank­stel­le“ durch die Kombination aus den Eigenschaften „PLZ“ und „Straße/Hausnr“ identifiziert.

 

·        Die Kraftstofftanks und die Zapfsäulen werden jeweils inner­halb einer Tankstelle durchnumme­riert. Deshalb erfolgt die Iden­tifi­zierung des Objekttyps „Kraftstofftank“ (bzw. „Zapf­säule“) durch die Kombination aus der Beziehungstyp-Rich­tung „Kraftstofftank gehört zu Tankstelle“ (bzw. „Zapf­säule gehört zu Tankstelle“) und der Eigenschaft „Tank-Nr“ (bzw. „Säulen-Nr“).

 

·       An einer Zapfsäule kann zu einem Zeitpunkt nur ein Tank­vor­gang stattfinden. Deshalb ist der Objekttyp „Tank­vor­gang“ durch die Kombination aus der Beziehungstyp-Rich­tung „Tankvorgang erfolgt an Zapfsäule“ und der Eigen­schaft „Zeit­punkt“ identifizierbar.

 

·       Die Speicherung des Tankpreises im Objekttyp „Tankvor­gang“ bringt keine Redundanz mit sich. Der aktuelle Preis des Kraftstoffs ändert sich nämlich häufig, sodass sich aus der Kenntnis des Kraftstoffs und der getankten Menge später der Tankpreis nicht mehr rekonstruieren lässt.

 

·       Ein und dasselbe Fahrzeug kann mehreren „finanzierungs­freien“ Tankvorgängen zugeordnet werden. Deshalb muss die Bezie­hungstyp-Richtung „Fahrzeug wird zugeordnet zu Tankvorgang“ die Kardinalität N aufweisen.

 

·       Es wird angenommen, dass eventuell ein neuer Kraftstoff ge­speichert werden muss, der noch für keinen Tankvorgang verwendet wurde. Deshalb ist die Beziehungstyp-Richtung „Kraftstoff wird verwendet für  Tankvorgang“ optional.

 

 

4.3      Transformation in das logische Datenschema

 

Zunächst werden die Objekttypen in Tabellen transformiert (Transformationsregel T01). Danach erfolgt die Transformation der Beziehungstyp-Richtungen, die als identifizierende Elemente für die „schwachen“ Objekttypen verwendet wurden (Transforma­tionsregel T02). Im Ergebnis dieser beiden Transformationen ergeben sich die folgenden vorläufigen Tabellen-Typbeschreibun­gen:

 

Ort ( Ortsname+Kreis,Einwohnerzahl )

Tankstelle ( PLZ+Straße/Hausnr,Fläche )

Mitarbeiter ( Personal-Nr,Name,Adresse )

Großhändler ( Firmenname,Hauptsitz )

Kraftstofftank ( ÝPLZ+Straße/HausnrÝ+Tank-Nr,Fassungsvermögen,Füllstand )

Kraftstoff ( Kraftstoff-Bez,Oktanzahl,Aktueller Preis )

Zapfsäule ( ÝPLZ+Straße/HausnrÝ+Säulen-Nr )

Tankvorgang ( ÝPLZ+Straße/Hausnr+Säulen-NrÝ+Zeitpunkt,Menge,Tankpreis )

Fahrzeug ( Pol. Kennzeichen,Typ,Farbe )

 

Dabei wurden folgende Fremdschlüssel in die Primärschlüssel aufgenommen:

 

Primärschlüssel

des Objekttyps

wird aufgenommen in

Primärschlüssel von

PLZ+Straße/Hausnr

Tankstelle

Þ

Kraftstofftank

PLZ+Straße/Hausnr

Tankstelle

Þ

Zapfsäule

PLZ+Straße/Hausnr+Säulen-Nr

Zapfsäule

Þ

Tankvorgang

 

 

Im nächsten Schritt werden die dualen Beziehungstypen in das relationale Datenbank-Modell transformiert (Transformations­re­geln T03 bis T12). Dann erfolgt die Transformation des CM:CN‑Rekursiv-Beziehungstyps von „Mitarbeiter“ gemäß der Trans­­for­mationsregel T19. Die veränderten Tabellen-Typ­be­schreibungen sind jeweils durch einen Stern gekennzeichnet:

 

    Ort ( Ortsname+Kreis,Einwohnerzahl )

*  Tankstelle ( PLZ+Straße/Hausnr,ÝFirmennameÝ,ÝOrtsname+KreisÝ,Fläche )

*  Personal-Zuordnung ( ÝPLZ+Straße/HausnrÝ+ÝPersonal-NrÝ )

    Mitarbeiter ( Personal-Nr,Name,Adresse )

*  Anleitung ( ÝPersonal-NrÝ+ÝChef-Personal-NrÝ )

    Großhändler ( Firmenname,Hauptsitz )

*  Kraftstofftank ( ÝPLZ+Straße/HausnrÝ+Tank-Nr,ÝKraftstoff-BezÝ, Fassungsvermögen,Füllstand )

*  Rohrverbindung ( ÝPLZ+Straße/Hausnr+Säulen-NrÝ+Ý[PLZ+Straße/Hausnr+] Tank-NrÝ )

    Kraftstoff ( Kraftstoff-Bez,Oktanzahl,Aktueller Preis )

    Zapfsäule ( ÝPLZ+Straße/HausnrÝ+Säulen-Nr )

*  Tankvorgang ( ÝPLZ+Straße/Hausnr+Säulen-NrÝ+Zeitpunkt,ÝKraftstoff-BezÝ,Menge,Tankpreis )

*  Unbezahlter Tankvorgang ( ÝPLZ+Straße/Hausnr+Säulen-Nr+ZeitpunktÝ,ÝPol. KennzeichenÝ )

    Fahrzeug ( Pol. Kennzeichen,Typ,Farbe )

 

 

Bemerkungen:

 

·       Die folgenden 1:N‑Beziehungstypen können lediglich unter Seman­tikverlust als 1:CN‑Beziehungstypen – also gemäß der Trans­forma­tionsregel T09 – repräsentiert werden:

 

Tankstelle

ßà

Kraftstofftank

Tankstelle

ßà

Zapfsäule

 

Die Kardinalitäts-Beschränkungen lassen sich erst recht nicht durchsetzen. Es kann also durch die Tabellen-Typbe­schrei­bun­gen nicht gesichert werden, dass

 

Ø   eine Tankstelle mindestens 4 Kraftstofftanks hat,

Ø   eine Tankstelle über wenigstens 2 Zapfsäulen verfügt.

·       Der C:N‑Beziehungstyp zwischen „Kraftstoff“ und „Kraftstoff­tank“ lässt sich nur als C:CN-Bezie­hungs­typ re­präsentieren. Die Tabellen-Typbeschrei­bung kann also nicht garantieren, dass sich jeder Kraftstoff in min­de­stens einem Kraftstofftank be­findet.

 

Für den C:CN-Beziehungstyp stehen zwei Transforma­tions­regeln zur Verfügung:

 

a)   Transformationsregel T10 (die meisten Kraftstofftanks enthalten einen Kraftstoff),

b)  Transformationsregel T11 (die meisten Kraftstofftanks sind leer).

 

Natürlich kann sich eine Tankstelle nur den Fall a) leisten. Deshalb wurde keine Koppel-Tabelle eingeführt. Stattdessen wurde in die Tabelle „Kraftstofftank“ ein nicht-eingabe­pflich­tiger  Verweis auf den „Kraftstoff“ aufgenommen (des­halb der Kursivdruck !).

·          Der C:N‑Beziehungstyp zwischen „Fahrzeug“ und „Tank­vor­gang“ lässt sich wiederum nur als C:CN-Bezie­hungstyp re­prä­sentie­ren. Die Tabellen-Typbeschrei­bung lässt dann un­sin­ni­ger­weise die Speicherung eines Fahr­zeugs zu, das kei­nem einzi­gen Tank­vorgang zugeordnet wurde.

Für den C:CN-Beziehungstyp stehen wiederum zwei Trans­formationsregeln zur Verfügung:

a)       Transformationsregel T10 (den meisten Tankvorgängen wird ein Fahrzeug zugeordnet, d. h.: fast alle Kunden der Tank­stellenkette „vergessen“ das Bezahlen),

b)      Transformationsregel T11 (den meisten Tankvorgängen wird kein Fahrzeug zugeordnet, weil die meisten Kun-   den ehr­lich sind und ordnungsgemäß bezahlen).

Im Interesse der Tankstellenkette und im Glauben an das Gute im Menschen wollen wir annehmen, dass der Fall b) vorliegt. Deshalb wurde – gemäß der Transforma­tions­regel T11 – eine Koppel-Tabelle „Unbe­zahlter Tankvor­gang“ ein­ge­führt, durch die die wenigen „finanzierungs­freien“ Tank­vor­gänge mit dem jeweiligen Fahr­zeug in Ver­bin­dung ge­bracht werden – im Unterschied zum PowerDesigner, der die Transformationsregel T10 verwendet (s. Abschnitt 4.4).

·          Für den C:CN-Beziehungstyp zwischen „Groß­händler“ und „Tankstelle“ stehen ebenfalls die beiden Transformations­re­geln zur Verfügung:

a)     Transformationsregel T10 (die meisten Tankstellen bezie­hen Kraftstoff von einem Großhändler),

b)    Transformationsregel T11 (die meisten Tankstellen stehen noch mit keinem Großhändler in Kontakt).

Sicherlich wird der Fall a) vorliegen. Deshalb wurde keine Koppel-Tabelle eingeführt. Stattdessen wurde in die Tabelle „Tankstelle“ ein nicht-eingabepflichtiger Verweis auf den „Großhändler“ aufgenommen (deshalb der Kursivdruck !).

 

·          Die folgenden M:CN-Beziehungstypen können nur unter Se­man­­tikverlust als CM:CN‑Beziehungstypen, also gemäß der Trans­forma­tionsregel T12, repräsentiert werden:

 

Tankstelle

ßà

Mitarbeiter

Kraftstofftank

ßà

Zapfsäule

 

Die Kardinalitäts-Beschränkungen lassen sich erst recht nicht durchsetzen. Es kann also durch die Tabellen-Typbe­schrei­bun­gen der beiden Koppel-Tabellen „Personal-Zuordnung“ bzw. „Rohr­ver­bindung“ nicht gesichert werden, dass

 

Ø   ein Mitarbeiter mindestens einer und höchstens 3 Tank­stellen zugeordnet ist,

Ø   eine Zapfsäule mit genau 4 Kraftstofftanks verbunden ist.

 

·          Im Primärschlüssel der Tabelle „Rohrverbindung“ müsste der Primärschlüssel der Tankstelle PLZ+Straße/Hausnr eigent­lich zweimal auf­tauchen:

a)       im Verweis auf die Zapfsäule, die über die Tankstelle identifiziert wird:

      ÝPLZ+Straße/Hausnr+Säulen-NrÝ

b)      im Verweis auf den Kraftstofftank, der ebenfalls über die Tankstelle identifiziert wird:

      ÝPLZ+Straße/Hausnr+Tank-NrÝ.

Da jedoch die Zapfsäule und der Kraftstofftank sicherlich zur selben Tankstelle gehören, muss deren Primärschlüssel nicht dop­pelt aufgeführt werden. Er wurde deshalb beim Verweis auf den Kraftstofftank in eckige Klammern gesetzt:

 

Ý [PLZ+Straße/Hausnr+] Tank-NrÝ

 

Als zusätzliches Attribut wird lediglich die Tank-Nr auf­ge­nommen. Diese bildet gemeinsam mit den beiden Attribu­ten PLZ+Straße/Hausnr aus dem Verweis auf die Zapfsäule den Verweis auf den Kraftstofftank.

·          Der CM:CN‑Rekursiv-Beziehungstyp des Objekttyps „Mitar­beiter“ wird gemäß der Transformationsregel T19 durch die Kop­pel-Tabelle „Anleitung“ repräsentiert. Allerdings lässt sich die Kardi­nalitäts-Beschränkung nicht darstellen. Es kann also durch die Typbeschreibung der Koppel-Tabelle nicht durch­gesetzt werden, dass ein Chef mindestens 3 Mitarbeiter an­leitet.

 

 

4.4      Physisches Datenmodell des PowerDesigner 16.5

 

 

 

 

Bemerkung:

 

Der PowerDesigner „weiß“ nicht, wie oft die Optionalität einer Beziehungstyp-Richtung realisiert wird. Er kann deshalb bei der Reprä­sentation des C:N-Beziehungstyps zwischen den Objekt­ty­pen „Fahrzeug“ und „Tank­vor­gang“, der als C:CN-Bezie­hungs­typ dargestellt werden muss, keine Entscheidung für eine der beiden Trans­for­ma­tionsregeln T10 (sel­ten rea­li­sierte Optionalität) und T11 (häufig realisierte Optio­na­lität) treffen: Er repräsentiert den C:CN-Bezie­hungstyp immer gemäß der Transformations­regel T10. Deshalb wurde im „phy­si­schen“ Daten­modell in die Tabelle „Tankvor­gang“ ein nicht-ein­gabe­pflichtiger Verweis auf das „Fahrzeug“ auf­genom­men. Das führt jedoch dazu, dass der Fremd­schlüssel ÝPol. KennzeichenÝ extrem häufig mit der NULL-Marke belegt wird:

 

„automatisierte“ Transformation:

 

Tankvorgang (ÝPLZ+Straße/Hausnr+Säulen-NrÝ+Zeitpunkt,ÝPol. KennzeichenÝ,
   
ÝKraftstoff-BezÝ,Menge,Tankpreis)

 

 

Wir haben dagegen beim Aufstellen der Tabel­len-Typ­beschrei­bun­gen – bei der Transformation des konzeptio­nel­len Da­tenmo­dells in das logische Datenschema „von Hand“ – den C:N-Bezie­hungstyp zwi­schen den Objekt­typen „Fahr­zeug“ und „Tank­­­vor­gang“ gemäß der Transforma­tionsregel T11 dar­ge­stellt: Wir ha­ben eine Koppel-Tabelle „Unbe­zahlter Tank­vor­gang“ einge­führt, durch die die wenigen „finanzierungs­freien“ Tankvor­gänge mit dem jeweiligen Fahr­zeug in Ver­bin­dung ge­bracht werden:

 

Transformation „von Hand“:

 

Unbezahlter Tankvorgang (ÝPLZ+Straße/Hausnr+Säulen-Nr+ZeitpunktÝ,ÝPol. KennzeichenÝ )

 

 

Der Fremdschlüssel ÝPol. KennzeichenÝ ist eingabepflichtig, so­dass keine NULL-Marken auftreten und die unsinnige Spei­cher­platz-Vergeudung vermieden wird.

 

Das Beispiel zeigt, dass man vor der „Absegnung“ des endgül­ti­gen logi­schen Datenschemas die „automatisiert“ getroffenen Ent­schei­dun­gen unbedingt überprüfen sollte.

 

 

4.5      Datenbank-Struktur für Access 2016

 

 

 

Home ] Vorstellung ] Inhalt ] Aufgaben ] Download ] Fehler ] Links ]