Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Kernquali 2005/06: Datenbank 3. Normalform

Empfohlene Antworten

Veröffentlicht

Hallo leute,

ich verzweifle gerade an der folgenden Datenbankaufgabe:

http://img280.imageshack.us/img280/121/db5wa.jpg

Jemand n Vorschlag wie man diese löst?

Du könntest ja mal beschreiben, warum du daran verzweifelst.

Da ist ein Beleg angegeben, der zu einem bestimmten Gerät (Gerätenummer) gehört. Folglich musst du die verschiedenen Tabellen (Gerät, Zubehör, Zähler, Kosten, Störungen) bilden und diese von der Gerätenummer abhängig machen (Primärschlüssel setzen). Beziehungen mit Kardinalitäten sind geschenkt.

Du könntest ja mal beschreiben, warum du daran verzweifelst.

Da ist ein Beleg angegeben, der zu einem bestimmten Gerät (Gerätenummer) gehört. Folglich musst du die verschiedenen Tabellen (Gerät, Zubehör, Zähler, Kosten, Störungen) bilden und diese von der Gerätenummer abhängig machen (Primärschlüssel setzen). Beziehungen mit Kardinalitäten sind geschenkt.

oh stimmt, vergessen zu schreiben... also ich weiss nicht wie die kardinalitäten aussehen... die tabellen hab ich schon mal, nämlich beleg, gerät, zubehör, zähler, kosten und störungen....

Also hier mal ein Lösungsversuch:

1. NF

-----

Erfassungsbeleg: GeräteID, Lieferdatum, Einkaufspreis, Kundennummer,

Standort,Wartungsvertrag, Datum_letze_Wartung,

Zubehörnummer, Zählerdatum, Zählerstand

Kosten_datum, Kostenart, Kostenbetrag,

Bemerkung, Störung ID, Störung_Datum, Störung_Art

_______________________________________________________________

Erste NF besagt, jedes Feld muss atomar sein - keine berechenbaren Felder

_______________________________________________________________

2. NF

-----

Gerät: GeräteID, Lieferdatum, Einkaufspreis, Kundennummer,

Standort,Wartungsvertrag, Datum_letze_Wartung,

Zubehör: GeräteID,Zubehörnummer

Zähler: GeräteID, Zählerdatum, Zählerstand

Kosten: GeräteID, Kosten_datum, Kostenart, Kostenbetrag,

Bemerkung

Störung GeräteID, Störung ID, Störung_Datum, Störung_Art

_______________________________________________________________

Zweite NF

Alle nicht primären Attribute (nicht Teil des Schlüssels) sind vom ganzen Schlüssel abhängig, nicht von nur einem Teil des Schlüssels.

________________________________________________________________

3. NF

Gerät: GeräteID, Lieferdatum, Einkaufspreis, Kundennummer,

Standort,Wartungsvertrag, Datum_letze_Wartung,

Zubehör: ZubehörID

Zähler: ZählerID, Zählerdatum, Zählerstand

Kosten: KostenID, Kosten_datum, Kostenart, Kostenbetrag,

Bemerkung

Störung Störung ID, Störung_Datum, Störung_Art

Zwischentabelle: GeräteID, ZubehörID, ZählerID, KostenID, Störung ID

Stimmt das alles ?

@ Patrick hab die Lösungen von dieser Prüfung leider nicht aber ich hätte das auch so gemacht :D

mag sein dass der Lösungsvorschlag anders ist (wahrscheinlich) aber trotzdem wäre das richtig und dann kommt es halt aufn Prüfer drauf an.

BTW: nen lehrer von mir hatte bei einen Lösungsvorschlag mal entdeckt dass der Falsch ist :rolleyes: kein Kommentar....

Und bei solchen Aufgaben Datenbanken, struktogramme usw. bloß nicht zu komplioziert denken

@Patrik_Erlangen

Die Zwischentabelle kannst du dir hier sparen wenn du in jede Tabelle die GeräteNummer aufnimmst

@tg

Fehler in den Lösungsvorschlägen kommen häufig vor... hab auch schon ein paar entdeckt ;)

Sind ja zum Glück nur 'Vorschläge' :mod:

So würde meine Antwort aussehen, aufgeteilt auf 6 Tabellen. Ich habe eine zusätzlich noch eine Kundentabelle erstellt, da es u.U. auch mal vorkommen kann, das ein Kunde mehrere Geräte besitzt, oder sich die Daten des Kunden ändern, etc. . Ist einfach sauberer Kunden und Geräte zu trennen ;-) . Bei Fragen oder Verbesserungen einfach melden.

MfG Pello

Anhang:

http://img454.imageshack.us/img454/7619/dsc001193bz.jpg

Also ich würde zwar auch eine Kundentabelle machen, aber die Kundennummer nur einmal als ForeignKey in der Gerätetabelle einsetzen.

Somit spart man sich die Aufnahme einer Kundennummer in fast jeder anderen Tabelle und das sogar als PK.

Da alle anderen Tabellen mit der Gerätetabelle verbunden sind, kann damit auch zu jeder Störung, jedem Zählerstand usw. auch ein Kunde zugeordnet werden.

Wenn interesse besteht kann ich meine Lösung mal einscannen...

Grüsse Espresso

Ja, das habe ich, nennt sich SuperKey (http://de.wikipedia.org/wiki/Prim%C3%A4rschl%C3%BCssel#Superschl.C3.BCssel)

MfG pello

wenn du pech hast und einen prüfer erwischt, der nicht über viel technischem wissen besitzt, dann wird es ziemlich riskant werden... wir haben noch nie was von superkey gehört... ich machst sicherheitshalber einfach als foreign key... trotzdem thx für lösungsvorschlag!

Viele Wege führen nach Rom und einer ist kürzer, der andere länger :). Stimmt natürlich, es wäre viel sauberer wenn man die Kd_Nr als Foreign_Key setzen würde, dann gäbe es in den anderen Tabellen maximal 3 PKs. Der Managementaufwand ist in meiner Lösung auch viel höher, da die Kd_Nrn in allen Tabellen verwaltet werden wollen. Also meine Lösung ist unsauber *g*. Danke für den Hinweis, das nächste Mal (sicherlich in der Prüfung) werde ich mehr als 3 Min in das Diagramm investieren.

MfG Pello

P.S.: Super-Keys sind eigentl. Gang und Gebe und wenn sich ein Prüfer Querstellen sollte (werde meine Prüfung anfordern), gibts ne Beschwerde seitens meiner Firma. Also von daher :floet: . Du musst trotzdem einen eindeutigen Schlüssel haben, also brauchst du Zwangsläufig entweder Super-Keys, oder eine Zählvariable in der Kostentabelle, der Zaehlertabelle, der Zubehörtabelle,... . Ein Super-Key kann sich auch aus 1 PK und mehreren FKs zusammensetzen.

Moinsen!

Also ich hab ne GANZ andere Lösung:

Kunden (KdNr, ...)

Geräte (GerätID, ...)

Kunde_Gerät (KdNr, GerätID, Lieferdatum, EK-Preis, Standort, Wartungsvertrag, letzte_Wartung)

Zubehör (ZID, ...)

Gerät_Zubehör (GerätID, ZID)

Kunde_Gerät_Kosten (KostenID, KdNr, GerätID, Datum, KostenartID, Betrag, Bemerkung)

Kostenarten (KostenartID, Name)

Kunde_Gerät_Störung (StörungID, KdNr, GerätID, Datum, StörungsartID )

Störungsarten (StörungsartID, Beschreibung)

Primärschlüssel sind unterstrichen und Fremdschlüssel kursiv. Über die Existenz der Tabellen "Kostenarten" und "Störungsarten" kann man streiten; ich find es sauberer, sie zu benutzen. Hätte gern Feedback zu meiner Lösung!

Gute Nacht und frohes Gelingen in der Prüfung!

wenn du pech hast und einen prüfer erwischt, der nicht über viel technischem wissen besitzt, dann wird es ziemlich riskant werden... wir haben noch nie was von superkey gehört... ich machst sicherheitshalber einfach als foreign key... trotzdem thx für lösungsvorschlag!

Also ich hab grad unseren Programmierer gefragt: Dem ist nix von Superkey bekannt.

Also ich hab grad unseren Programmierer gefragt: Dem ist nix von Superkey bekannt.

wem sagst du das? ich schrieb ja, das die meisten dies gar net kennen.. nicht mal die datenbanklehrer an unserer berufschule haben je was davon gehört...

@ boxi:

hätt ich auch so ähnlich gemacht; auf jeden Fall müssen n-m-Beziehungen (Zischentabellen!) zwischen Störung/Gerät und Kosten/Gerät, aber den Kunden brauchst da nicht mehr reinbringen, der ist ja schon über die 1n Beziehung mit Gerät verbunden

gut, ich wollte betonen, dass die kundennummer ein fremdschlüssel ist. vollständigerweise habe ich dann eine kundentabelle angedeutet.

Also ich weiß ja nicht, was ihr für Lehrer habt, aber Super-Key sollte eigentlich jedem etwas sagen, da dies ein anderer Begriff ist für "zusammengesetzter Prmärschlüssel". "Zusammengesetzter Prmärschlüssel" ist auch mehr die Deutsche Übersetzung als ein anderes Wort. Also Super-Key merken, oder bei der deutschen Fassung bleiben :). Sollte die IHK dies dann als Fehler anstreichen, werde ich wie gesagt Widerspruch einlegen und Recht bekommen, da eine deutsche Übersetzung für einen englischen Fachbegriff <b>niemals</b> als einzig richtige Lösung gewertet werden darf. Wäre ja noch schöner, wenn wir gezwungen werden würden statt Motherboard nurnoch Hauptplatine zu schreiben oder sowas in der Art. So hoffe niemanden allzusehr verwirrt zu haben. Viel Glück und noch nen schönen Tag.

MfG Pello

@ pello. Ich verstehe was du mit deinem Superkey meinst aber das wäre dann meiner Meinung nach nicht die 3. Normalform, da du nur einen zusammengesetzen PrimaryKey z.B. in der Tabelle Zubehör hast.

Meiner Meinung nach müßte man um die 3. Normalform zu erreichen eine Extra Tabelle wie z.B. Geräte_Zubehör erzeugen was dann eine n:m beziehung zur folge hätte. Diese lösung wurde hier schon vorgeschlagen und ist wohl auch richtig....

Gruß

wettmasta

Edit: habe gerade nochmal nachgeschaut. Es muß Quasi eine dritte Tabelle (Geräte_Zubhör) usw. esrtellt werden um die 3. Normalform zu erreichen. http://de.wikipedia.org/wiki/3NF#Erste_Normalform_.281NF.29

@boxi:

die kundennummer als fremdschlüssel würd ich in die gerätetabelle tun

@wettmasta: guckst du meine lösung, erste seite.

@darkghost:

nein, eben nicht: ein gerät hat in erster linie nichts mit einem kunden zu tun. das gerät enthält nur eigenschaften, welche direkt mit dem gerät zu tun haben (--> 3. normalform), also z.b. bezeichnung, maße etc.

ein gerät (kein konkretes exemplar, sondern z.b. "hp deskjet 1234") kann durch viele kunden benutzt werden und ein kunde benutzt u.U. viele geräte, also eine n:m-beziehung.

also:

kunden (kundennummer, name, .....)

geräte (gerätenummer, weitere_eigenschaft, ....)

n:m -->

kunden_geräte (kundennummer, gerätenummer, datum, persönlicher-ek-preis, .....)

gell?

@boxi06

Dein Vorschlag war ja auch richtig, deshalb hatte ich ja auch geschrieben

"Diese lösung wurde hier schon vorgeschlagen und ist wohl auch richtig...."

Ich wollte halt nur Pello darauf hinweisen, das seine Lösung mit dem "SuperKey" so gesehen falsch ist, weil keine 3.Normalform.

--- GEÄNDERT ---

Kommando zurück, sehe gerade meinen Fehler, in der Tabelle Kunden kommt es zu Mehrfachnennungen eines Kunden beim Besitz mehrerer Geräte (keine Redundanz durch PKs, aber keine richitge 3. Normalform). Also n:m auf Zusatzgerätetabelle, dann stimmts wieder. Danke für den Hinweis.

MfG Pello

P.S.: So werde mir jetzt noch einwenig was zu HTT (Hyper-Threading-Technologie) und SATA anschauen gehen.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.