Normalform Aufgaben

hhbr89

Aktiver Benutzer
Beiträge
34
Hallo habe eine Aufgabe an meiner UNI gelöst wie ich meine, bräuchte aber nochmal eine kurze Bestätigung ob das so stimmt :) , damit ich später nicht falsch weiter lerne.

Übung und Lösung bfndt sich im Anhang als pdf (geht leider nicht) DB_uebung.pdf


Vielen Dank!
 
Werbung:
Okay, heute habe ich mich dann mal an etwas größeres rangewagt:

1. Stellen Sie ein vollständiges ER-Modell (Min-Max Kard., identifizierenden Eigenschaften, ein beschreibendes Attribut) für den Servicebereich eines Unternehmens dar, das hochwertige Kaffeemaschinen für die Gastronomie herstellt. Folgende Sachverhalte sind zu berücksichtigen: Verkauft werden Basismaschinen mit unterschiedlichem Zubehör. Die Maschinen haben eine Garantiezeit, zu deren Ende eine kostenfreie Inspektion durch den Kunden angefordert werden kann. Die Wartung der Maschinen erfolgt leistungsbezogen nach einer bestimmten Betriebszeit und wird durch einen Techniker des Unternehmens selbst oder eines Fremdunternehmens ausgeführt. Das Klassenmodell soll die Informationen liefern, um für jeden Gerät und seine Zusatzteile eine Historie vom Kauf und Käufer bis hin zur letzen Wartung (Arbeiten und Ersatzteile) und zum Wartungstechniker zu dokumentieren.


Habe ein Bild angehangen, was ich mit DB-Designer exportiert habe. Habe die Aufgabenstellung auch nicht zu 100% verstanden um ehrlich zu sein :/
 

Anhänge

  • Datenbank_Kaffee.png
    Datenbank_Kaffee.png
    94,7 KB · Aufrufe: 18
Genau genommen ist das kein ER-Modell.

Davon abgesehen habe ich ein paar Schwierigkeiten bei der Interpretation, da mir die Bedeutung der einzelnen Farben nicht ganz klar ist. Speziell diese weiß/schwarzen Rauten. Ich vermute 1:n auf schwarz/weiß bzw. n:m für weiß.
 
Genau genommen ist das kein ER-Modell.

Davon abgesehen habe ich ein paar Schwierigkeiten bei der Interpretation, da mir die Bedeutung der einzelnen Farben nicht ganz klar ist. Speziell diese weiß/schwarzen Rauten. Ich vermute 1:n auf schwarz/weiß bzw. n:m für weiß.

Geht mir ähnlich.

Garantiezeit TIME? In PG ist das Time of Day, von 00:00 bis 24:00 Uhr. Wäre wir a bissl kurz, wäre wohl eher INTERVAL. Aber ich weiß auch ned, was Du als DB nehmen willst.
Tabelle Bestellposition: mir ist unklar, was die 3 Bestell_Position_FKIndex? zu bedeuten haben.

Aber, wie gesagt, mit solchen Bildchen steh ich eh auf Kriegsfuß... CREATE TABLE - Anweisungen sind mir da lieber.
 
Ich dachte bevor ich es alles auf einem Blatt aufzeichne und es abfotografieren muss etc. mach ich es eben in DB-Designer. Die DB an sich müssen wir nicht anlegen, deshalb spielt der genaue Begriff keine Rolle, aber natürlich ist Time der falsche Datentyp.

Habe ich denn wenigstens die richtigen Relationen und Attribute gewählt? Ich werde es nachher noch einmal zu Papier bringen, denn das muss auf jeden Fall sitzen. Was meinst du mit es findet keine Normalisierung statt Hony% ? Ich kann keine Redundanzen oder transitive Relation sehen. (3NF)
 
Eben! Ein ER-Modell ist nicht normalisiert. Das kommt erst später.

Für ER-Diagramme finde ich Dia nicht mal schlecht.

Haha, jetzt habe auch ich es verstanden! Ich werde das mal ausprobieren und eine neue Version hochladen, sehe ein, dass das so nicht viel bringt.

@akretschmer
Code:
CREATE TABLE Bestellung (
  idBestellung INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Wartung_idWartung INTEGER UNSIGNED NOT NULL,
  Kunde_idKunde INTEGER UNSIGNED NOT NULL,
  Datum DATETIME NULL,
  PRIMARY KEY(idBestellung),
  INDEX Bestellung_FKIndex1(Kunde_idKunde),
  INDEX Bestellung_FKIndex2(Wartung_idWartung)
);

CREATE TABLE Bestell_positionen (
  Bestellung_idBestellung INTEGER UNSIGNED NOT NULL,
  Zubehör_idZubehör INTEGER UNSIGNED NOT NULL,
  Kaffeemaschine_idKaffeemaschine INTEGER UNSIGNED NOT NULL,
  INDEX Bestell_positionen_FKIndex1(Kaffeemaschine_idKaffeemaschine),
  INDEX Bestell_positionen_FKIndex2(Zubehör_idZubehör),
  INDEX Bestell_positionen_FKIndex3(Bestellung_idBestellung)
);

CREATE TABLE Ersatzteile (
  idErsatzteile INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  e_name VARCHAR(45) NULL,
  PRIMARY KEY(idErsatzteile)
);

CREATE TABLE Ersatzteile_has_Wartung (
  Ersatzteile_idErsatzteile INTEGER UNSIGNED NOT NULL,
  Wartung_idWartung INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY(Ersatzteile_idErsatzteile, Wartung_idWartung),
  INDEX Ersatzteile_has_Wartung_FKIndex1(Ersatzteile_idErsatzteile),
  INDEX Ersatzteile_has_Wartung_FKIndex2(Wartung_idWartung)
);

CREATE TABLE Kaffeemaschine (
  idKaffeemaschine INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Zubehör_idZubehör INTEGER UNSIGNED NOT NULL,
  k_name CHAR NULL,
  Garantiezeit TIME NULL,
  PRIMARY KEY(idKaffeemaschine),
  INDEX Kaffeemaschine_FKIndex1(Zubehör_idZubehör)
);

CREATE TABLE Kunde (
  idKunde INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  ku_name VARCHAR(45) NULL,
  adresse VARCHAR(45) NULL,
  PRIMARY KEY(idKunde)
);

CREATE TABLE Techniker (
  idTechniker INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Unternehmen_idUnternehmen INTEGER UNSIGNED NOT NULL,
  t_name VARCHAR(45) NULL,
  PRIMARY KEY(idTechniker),
  INDEX Techniker_FKIndex1(Unternehmen_idUnternehmen)
);

CREATE TABLE Unternehmen (
  idUnternehmen INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  u_name VARCHAR(45) NULL,
  PRIMARY KEY(idUnternehmen)
);

CREATE TABLE Wartung (
  idWartung INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Techniker_idTechniker INTEGER UNSIGNED NOT NULL,
  Arbeiten VARCHAR(255) NULL,
  PRIMARY KEY(idWartung),
  INDEX Wartung_FKIndex1(Techniker_idTechniker)
);

CREATE TABLE Zubehör (
  idZubehör INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  z_name VARCHAR(45) NULL,
  PRIMARY KEY(idZubehör)
);
 
Zuletzt bearbeitet:
Anbei das ERM mit Dia erstellt. Habe die nicht Schlüsselattribute bei Wartung etc. weggelassen, wichtig ist denke ich erstmal das ich die Beziehungen richtig setze.
 

Anhänge

  • Diagramm1.png
    Diagramm1.png
    67,7 KB · Aufrufe: 16
Anbei das ERM mit Dia erstellt. Habe die nicht Schlüsselattribute bei Wartung etc. weggelassen, wichtig ist denke ich erstmal das ich die Beziehungen richtig setze.
Jetzt kommen wir der Sache doch langsam näher.
1. Stellen Sie ein vollständiges ER-Modell (Min-Max Kard., identifizierenden Eigenschaften, ein beschreibendes Attribut)
Ich vermute, dass hier die ISO Notation verlangt wird:
https://de.wikipedia.org/wiki/Entity-Relationship-Modell#ER-Diagramme
https://de.wikipedia.org/wiki/Min-Max-Notation
304px-ERD_Darstellungen.png

By Frank Roeing (Own work) [Public domain], via Wikimedia Commons
 
Ja, dort war ich auch gerade. Allerdings vermute ich das nicht die ISO Notation verlangt wird, das ist immerhin nur eine Aufgabe in der Klausur und bei so vielen Entitätstypen ist das ja ein relativ großer Aufwand. Kann mich aber auch irren und werde mir das einprägen. Sind denn die Beziehungen zu den E.Typen wenigstens richtig, abgesehen von der Notation? Siehe Anhang.

PS: Ich finde es relativ verwirrend das man die "Seiten" bei der Chen und Min. & Max. Notation vertauscht was 1, N und so weiter angeht. Konnten die sich nicht entscheiden :D
 

Anhänge

  • Diagramm2.png
    Diagramm2.png
    82,5 KB · Aufrufe: 16
Allerdings vermute ich das nicht die ISO Notation verlangt wird, das ist immerhin nur eine Aufgabe in der Klausur und bei so vielen Entitätstypen ist das ja ein relativ großer Aufwand.
Da es bei dieser Aufgabe explizit dabei steht könnte es auch auch ein Einzelfall sein um genau den Sonderfall der vertauschten Kardinalitäten zu prüfen.

Ich finde es relativ verwirrend das man die "Seiten" bei der Chen und Min. & Max. Notation vertauscht was 1, N und so weiter angeht. Konnten die sich nicht entscheiden :D
Die haben sich entschieden. Chen zählt Entitäten und Min/Max die Relationen. Dadurch ergeben sich Unterschiede in der Ausdrucksstärke.

Ok. Schauen wir uns die Aufgabe an:

Verkauft werden Basismaschinen mit unterschiedlichem Zubehör.
Wenn wir von Zubehörsets ausgehen stimmt (1,n)/(1,1).

Ist das Zubehör aber einzeln wie "Automatischer Milchschäumer" oder "Kaffeemühle" wäre meiner Meinung nach (0,n)/(1,n) richtig um Basis- bis Luxuspaket abzubilden.

Die Maschinen haben eine Garantiezeit, zu deren Ende eine kostenfreie Inspektion durch den Kunden angefordert werden kann.
Die Garantiezeit willst du anscheinend über die Bestellung abbilden. Als Kardinalität gibst du zu Kaffeemaschiene und Zubehör je (1,n)/(1,n) an. Es gibt also immer mindestens eine Bestellung? Selbst für neue Artikel?

Die Wartung der Maschinen erfolgt leistungsbezogen nach einer bestimmten Betriebszeit und wird durch einen Techniker des Unternehmens selbst oder eines Fremdunternehmens ausgeführt.
Die kostenfreie Inspektion mag vom Vorgang her mit der Wartung identisch sein. Aber bezieht sich die Betriebszeit auch auf das Alter oder eher auf die Betriebsstunden die nicht zu Rechnung sondern zu Kaffeemaschine gehören? Selbst wenn wir von einer zyklischen Wartung ausgehen kann es aber pro Bestellung mehrere Maschinen geben. Auf welche bezieht sich die Wartung?

Das Klassenmodell soll die Informationen liefern, um für jeden Gerät und seine Zusatzteile eine Historie vom Kauf und Käufer bis hin zur letzen Wartung (Arbeiten und Ersatzteile) und zum Wartungstechniker zu dokumentieren.
Klassenmodell? Wie auch immer... Der Rest scheint soweit keine logischen Fehler zu enthalten.
 
Werbung:
Da es bei dieser Aufgabe explizit dabei steht könnte es auch auch ein Einzelfall sein um genau den Sonderfall der vertauschten Kardinalitäten zu prüfen.


Die haben sich entschieden. Chen zählt Entitäten und Min/Max die Relationen. Dadurch ergeben sich Unterschiede in der Ausdrucksstärke.

Ok. Schauen wir uns die Aufgabe an:

Verkauft werden Basismaschinen mit unterschiedlichem Zubehör.
Wenn wir von Zubehörsets ausgehen stimmt (1,n)/(1,1).

Ist das Zubehör aber einzeln wie "Automatischer Milchschäumer" oder "Kaffeemühle" wäre meiner Meinung nach (0,n)/(1,n) richtig um Basis- bis Luxuspaket abzubilden.

Die Maschinen haben eine Garantiezeit, zu deren Ende eine kostenfreie Inspektion durch den Kunden angefordert werden kann.
Die Garantiezeit willst du anscheinend über die Bestellung abbilden. Als Kardinalität gibst du zu Kaffeemaschiene und Zubehör je (1,n)/(1,n) an. Es gibt also immer mindestens eine Bestellung? Selbst für neue Artikel?

Die Wartung der Maschinen erfolgt leistungsbezogen nach einer bestimmten Betriebszeit und wird durch einen Techniker des Unternehmens selbst oder eines Fremdunternehmens ausgeführt.
Die kostenfreie Inspektion mag vom Vorgang her mit der Wartung identisch sein. Aber bezieht sich die Betriebszeit auch auf das Alter oder eher auf die Betriebsstunden die nicht zu Rechnung sondern zu Kaffeemaschine gehören? Selbst wenn wir von einer zyklischen Wartung ausgehen kann es aber pro Bestellung mehrere Maschinen geben. Auf welche bezieht sich die Wartung?

Das Klassenmodell soll die Informationen liefern, um für jeden Gerät und seine Zusatzteile eine Historie vom Kauf und Käufer bis hin zur letzen Wartung (Arbeiten und Ersatzteile) und zum Wartungstechniker zu dokumentieren.
Klassenmodell? Wie auch immer... Der Rest scheint soweit keine logischen Fehler zu enthalten.

1. Das nicht jeden Maschine Zubehör hat ergibt Sinn.
2. Zu jeden Bestellung gehört doch eine Kaffeemaschine, da der Hersteller nur diese anbietet. Die Kardinalität vom Zubehör habe ich auf (0,n)/(0,n) geändert, da nicht jede Bestellung Zubehör enthält.
3. Kann das durch ein einfaches Attribut Betriebszeit gelöst werden? Ich frage mich gerade ob ich das bei der Wartung mit einbinde, dort kann es ja erst ausgelesen werden.

Diagramm3.png
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben