×
produktlogotitle

Seite: acd_mod2
Diese Seite wurde aktualisiert am 30.05.2021

LOGIN
Benutzer:
Passwort:
 
   if1.net-schulbuch.de

Nach - Modellierung 

Der Verein „Ceylon – Soforthilfe“ verkauft unter anderem Tee und Grußkarten aus Ceylon.

Der Sohn des langjährigen Vereinsvorsitzenden ist ganz stolz: "Ich habe die Zettelwirtschaft meines Vaters abgelöst und gebe die Daten für die zu  druckenden Rechnungen  in die Tabellenkalkulation ein!"

Hier sind ein paar Zeilen aus der ziemlich langen Tabelle abgedruckt:

 

Name

Straße

PLZ

Ort

Nr

Versand

Artikelbez

Einzel
preis

Anzahl

Gesamt
preis

Marlies Thebud

Nymphenweg 31

D-42719

Solingen

1

7,00 €

Taibun - Schal

12,00 €

4

48,00 €

 

 

 

 

 

 

Satz handgefertigter Ceylon - Grußkarten

30,00 €

2

60,00 €

 

 

 

 

 

 

Packung Ceylon - Tee à 100g

7,00 €

7

49,00 €

Christian Beier

Katernberge 215

D-07819

Pillingsdorf

2

5,00 €

Satz handgefertigter Ceylon - Grußkarten

30,00 €

1

30,00 €

Astrid + Harald Weber

Kiefernweg 1

D-80335

München

7

4,00 €

Satz handgefertigter Ceylon - Grußkarten

30,00 €

2

60,00 €

Marlies Thebud

Nymphenweg 31

D-42719

Solingen

8

6,00 €

Packung Bio - Tee im Holzkästchen

8,00 €

2

16,00 €

 

 

 

 

 

 

Satz handgefertigter Ceylon - Grußkarten

30,00 €

3

90,00 €

Dr. Olaf Hellberg

Wittkuller Str. 159

D-80335

München

9

7,00 €

Packung Ceylon - Tee à 100 g

6,00 €

2

12,00 €

 

 

 

 

 

 

Packung Bio - Tee im Holzkästchen

8,00 €

2

16,00 €

Um die Verwaltung zu automatisieren, wird eine Firma beauftragt, die aus der Tabelle eine Datenbank machen soll.

Was fällt an der Tabelle auf, was ist ggf. zu ergänzen?

Die freien Felder: Die Angaben gehören wohl zu der Zeile darüber.

Vorname und Nachname stehen in einem Feld, Suche und Sortierung nach Nachnamen sind so nicht möglich.

Die Kunden kommen mehrfach vor, die verkauften Artikel auch.

Schritt 1

Problem: Vorname und Nachname stehen zusammen in einem Feld. Man kann nicht nach Nachnamen sortieren.

Forderung: In jedem Feld darf nur eine Angabe stehen.

Lösung: Der Vorname bekommt eine eigene Spalte.

 

Schritt 2 

Problem: Die Kunden und ihre Adressen kommen in mehreren (vielen) Zeilen vor, Artikel und ihre Einzelpreise auch. Das führt zu Schwierigkeiten, wenn etwa ein Kunde umzieht und sich die Adresse ändert. Soll dann die gesamte Datei durchsucht werden, um die Änderung bei allen Vorkommen durchzuführen? Wenn man dabei etwas übersieht, hat man widersprüchliche Angaben und weiß schließlich nicht, was richtig ist.

Forderung: Doppelte Angaben sind zu vermeiden.

Lösung: Die Kunden und die Artikel bekommen jeweils eine eigenen Tabelle mit einem zusätzlichen Primärschlüssel Kundennummer bzw. Artikelnummer.

 Kunden

Nr

Name

Vorname

Straße

PLZ

Ort

1

Thebud

Marlies

Nymphenweg 31

D-42719

Solingen

2

Beier

Christian

Katernberge 215

D-07819

Pillingsdorf

3

Grabitz

Ulf

Lohmühler Weg 55

D-07819

Pillingsdorf

4

Weber

Astrid + Harald

Kiefernweg 1

D-80335

München

5

Hellberg

Dr. Olaf

Wittkuller Str. 159

D-80335

München

Artikel

Nr

Artikelbez

EPreis

1 Taibun - Schal 12,00 €
2 Satz handgefertigter Ceylon - Grußkarten 30,00 €
3 Packung Ceylon - Tee à 100g 7,00 €
4 Packung Bio - Tee im Holzkästchen 8,00 €

 

In die ursprüngliche Tabelle tragen wir jetzt anstelle der Kundenangaben den jeweiligen Primärschlüssel der Kundentabelle ein und anstelle von Artikelbez und Einzelpreis die ArtikelNr. Das noch fehlende Rechnungsdatum habe ich nachgetragen.

 

KundenNr

Nr

Datum

Versandkosten

ArtikelNr

Anzahl

GPreis

1

1

17.10.2020

7,00 €

1

4

48,00 €

1

1

17.10.2020

7,00 €

2

2

60,00 €

1

1

17.10.2020

7,00 €

3

7

49,00 €

2

2

21.10.2020

5,00 €

2

1

30,00 €

3

3

21.10.2020

4,00 €

2

2

60,00 €

1

8

03.11.2020

6,00 €

4

2

16,00 €

1

8

03.11.2020

6,00 €

2

3

90,00 €

5

9

05.11.2020

7,00 €

3

2

12,00 €

5

9

05.11.2020

7,00 €

4

2

16,00 €

Schritt 3

Es kommen immer noch Angaben mehrfach vor!
Und zwar Datum und Versandkosten. Die gibt es einmal je Rechnung. Die Rechnungen 1, 8 und 9 haben jeweils zwei bzw. 3 Rechnungsposten und deshalb stehen die Angaben hier noch mehrfach.  

Forderung: Doppelte Angaben sind zu vermeiden.

Lösung: Die Rechnungen bekommen eine eigene Tabelle.

Rechnungen

Nr

KundenNr

Datum

Versandkosten

1

1

17.10.2020

7,00 €

2

2

21.10.2020

5,00 €

3

3

21.10.2020

4,00 €

8

1

03.11.2020

6,00 €

9

5

05.11.2020

7,00 €

In der Detailtabelle verbleiben die Rechnungsposten; 

RePosten

RechnungsNr

ArtikelNr

Anzahl

GPreis

1

1

4

48,00 €

1

2

2

60,00 €

1

3

7

49,00 €

2

2

1

30,00 €

3

2

2

60,00 €

8

4

2

16,00 €

8

2

3

90,00 €

9

3

2

12,00 €

9

4

2

16,00 €

 

Schritt 4 

Ist das jetzt wirklich besser?

In der RePosten - Tabellestehenja nur noch Zahlen. Wie kommt man da wieder an Lesbare Informationen?

Antwort: Mit Abfragen.

 

In LibreOffice verbindet man im Fenster "Beziehungen" die Fremdschlüssel jeweils mit dem Primärschlüssel aus der bezogenen Tabelle. Bei einer Abfrage  werden diese Beziehungen dann übernommen.

Mit dieser Abfrage bekommen wir wieder die ursprüngliche Tabelle. 
Man kann nach allen Attributen suchen; es sind keine Angaben mehr doppelt gepeichert.

 

SQL

Das Datenbankschema

Kunden (Nr, Name, Vorname, Strasse, PLZ, Ort)

Artikel (Nr, Artikelbez, EPreis)

Rechnungen (Nr, ↑KundenNr, Datum, Versandkosten)

RePosten (↑RechnungsNr, ↑ArtikelNr, Anzahl, GPreis)

Die Abfrage: 

SELECT Kunden.Name, Kunden.Vorname, Kunden.Straße, Kunden.PLZ, Kunden.Ort, Rechnungen.Nr, Rechnungen.Datum, Rechnungen.Versandkosten, Artikel.Artikelbez, Artikel.EPreis, RePosten.Anzahl, RePosten.GPreis
FROM Rechnungen, Kunden, RePosten, Artikel
WHERE Rechnungen.KundenNr = Kunden.Nr AND RePosten.RechnungsNr = Rechnungen.Nr AND RePosten.ArtikelNr = Artikel.Nr

 (Die Joins sind hier durch WHERE - Klauseln wiedergegeben.)

Impressum
© 2023  Net-Schulbuch.de
10.00  0.1599  8.1.28