Zum Inhalt springen

Hilfe: Redundanzen eliminieren bei bestimmter Aufgabe


Lucent

Empfohlene Beiträge

Hallo Jungs,

ich stehe hier vor einem kleinen Problem. Im folgenden Beispiel sollen alle Redundanzen eliminiert werden. Auch soll für eigentliche gleiche Felder kein neuer Name gewählt werden (z.B Name, Firmenname, Mitarbeitername usw.)

Folgende Datenbank liegt vor:

Kundendatei:

Kundennummer, Firma, Branche, Adresse, Telefon, Kunde seit, Bemerkung

Mitarbeiterdatei:

Mitarbeiternummer, Name, Adresse, Telefon, Gehaltstuffe, Ausbildung, PKW, Führerschein, Geb. Datum

Angebot:

Angebotsnummer, Bezeichnung, Preis, Kategorie, Gewicht, Zuschlag Express

Terminplan:

Datum, Kundennummer, Firma, Lieferanschrift, Mitarbeiter (Aufnahme Bestellung), Mitarbeiter (Fahrer), Art der Lieferung, Anzahl, Ausgeliefert, Beschädigt

Routenplanung:

Fahrer, Fahrzeugtyp, Firma, Lieferanschrift, PLZ-Bereich, Gewicht der Ladung

Rechnungswesen:

Rechnungsnummer, Rech. Datum, Kundenummer, Mitarbeiter (Fahrer), Art der Lieferung, Anzahl, Einzelpreis, Gesamtpreis, Mahnung.

Dies war die Datenbank.

Mir ist durchaus bewusst, dass sich hier einiges Zusammenfassen lässt und dass diese Aufteilung an sich weder verkehrt noch super toll ist, nur verstehe ich nicht, wie man hier ganz ohne Redundanzen arbeiten soll.

Das Feld Name, Adresse und Firma muss doch zwangsweise in mehreren Tabellen auftauchen...?!

Meine Überlegung wäre.

Jeder Tabelle eine ID zu geben und diese Tabelle dann mittels ID in eine andere Tabelle "einzubinden". Oder macht das keinen Sinn?

Ich bin für Vorschläge oder Gedankenanstöße sehr dankbar.

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das glaube ich dir.

Problem ist folgendes. Die Normalisierung usw. kommt erst viel später und es wird nicht davon ausgegangen, dass wir das benutzen.

Auch nach einer Nachfrage meinerseits war keine Rede davon. Es muss also eine andere Lösung geben.

Wäre nett wenn noch einer seinen Senf dazugeben kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Problem ist folgendes. Die Normalisierung usw. kommt erst viel später und es wird nicht davon ausgegangen, dass wir das benutzen.

Die Informationen, die Du aber hier lieferst reichen aber nicht aus. Du lieferst hier nur Tabellen und deren Spaltenbezeichnungen. Keine Verknüpfungen, keine Daten, die brauchst Du für die Normalisierung usw.

Ohne weitere Infos, ist keine Hilfe möglich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es soll auch keine Normalisierung angewendet werden. Desweiteren habe ich als Vorgabe auch nur diese Tabellen.

Die Aufgabe lautet einfach nur: Beseitigen Sie diese Redundanzen und dann sind dort die Tabellen gegeben. Normalisierung usw. kommt erst viel später und wir sollen das ohne diese machen.

Deswegen stehe ich auf dem Schlauch und komme nicht vorwärts.

Gibt es keine andere Lösung, hier die Redundanzen zu beseitigen bzw. zu verringern?

Grüße!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo sind denn bitte überhaupt Redundanzen !?

Nur weil zwei Spalten gleichen Namen haben, muss das nicht redundant sein.

Redundanzen entstehen dadurch, dass Daten als Kopie gespeichert werden und genau das beseitigt man durch die Normalisierung. Nur Du brauchst auch dafür überhaupt Beziehungen zwischen den Entities / Tabellen und die sehe ich nicht.

Ich will es mal so sagen, Du lieferst hier einzelne Textdateien, in denen Komma separiert Feldnamen stehen. Das reicht nicht an Informationen !

Link zu diesem Kommentar
Auf anderen Seiten teilen

is nicht ganz richtig.

Kundendatei:

Kundennummer, Firma, Branche, Adresse, Telefon, Kunde seit, Bemerkung

Terminplan:

Datum, Kundennummer, Firma, Lieferanschrift, Mitarbeiter (Aufnahme Bestellung), Mitarbeiter (Fahrer), Art der Lieferung, Anzahl, Ausgeliefert, Beschädigt

Da haben wir eine Redundanz imo.

Wenn ich die Kundennummer hab, brauch ich da die Firma nicht in der Terminplanung, da ich ja über die Kundennummer auf die Kundendatei join.

Die Aufgabe ist allerdings in der From schon reichlich dämlich muss man sagen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da haben wir eine Redundanz imo.

Wenn ich die Kundennummer hab, brauch ich da die Firma nicht in der Terminplanung, da ich ja über die Kundennummer auf die Kundendatei join.

Wo steht denn in Deinem Modell, dass die beiden Kundennummern identisch sind !? Das fällt im Moment einfach vom Himmel, dass Du annimmst, dass beide identisch sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo steht denn in Deinem Modell, dass die beiden Kundennummern identisch sind !? Das fällt im Moment einfach vom Himmel, dass Du annimmst, dass beide identisch sind.

Wenn ich dies wiederum garantieren möchte, muss ich mit Beziehungen arbeiten? Mich wundert das ganze nur - denn wir haben momentan weder was von Beziehungen noch von der Normalisierung kennengelernt. Das ich mir das natürlich schon angeschaut habe, sollte klar sein.

In dieser Aufgabe geht es ganz allein um den Aufbau der einzelnen Tabellen. Mit sinnvoller Einteilung und eben ohne Redundanzen.

Ich will es mal so sagen, Du lieferst hier einzelne Textdateien, in denen Komma separiert Feldnamen stehen. Das reicht nicht an Informationen !

Was braucht ihr noch? Ich habe zu dieser Aufgabe selbst nicht mehr, alles was ich habe steht hier.

Wir nehmen das o.g Beispiel:

Das Feld Firma; kommt sowohl in der Kundendatei als auch in der Routenplanung vor. Sollte sich der Firmenname jetzt ändern und wird in der Kundendatei geändert, heißt das noch lange nicht, dass dieser auch in der Routenplanung geändert wird/ist.

Und genau sowas sollen wir eben bedenken und es nicht dazu kommen lassen das sowas auftritt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich will es mal anders ausdrücken. Datenbanken sind im Grunde mengentheoretische Sachen. Eine Tabelle ist eine Menge.

Was Du hier ablieferst sind leere Tabellen. Redundanzen können entweder innerhalb einer Tabelle / Menge sein oder eben zwischen mehreren Tabellen / Mengen. Für erstes brauche ich Daten, für zweiteres Beziehungen + Daten. Beides lieferst Du nicht, somit ist die Aufgabe in meinen Augen fachlich unsinnig und formal somit auch falsch.

Genau diesen Zusammenhang hat man in der Normalisierung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay habe ich soweit verstanden, ist natürlich nachvollziehbar.

Aber wir bekommen eine solche Aufgabe auch nicht ohne Grund, schließlich soll ich mir dazu gedanken machen, eine neues Modell entwerfen und dieses auch erklären.

Gehen wir einmal von den einzelnen Datensätzen aus. Die enthalten ja eine Tabelle mit verch. Spalten.

Lassen sich diese Spalten nicht auch irgendwie so anordnen, dass sie in keiner Tabelle 2x vorkommen?

Ohne das jetzt sinnfreie Namen der Spalten vergeben werden. Zur Not können auch zusätzliche Tabellen erstellt werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Lassen sich diese Spalten nicht auch irgendwie so anordnen, dass sie in keiner Tabelle 2x vorkommen?

Mach kannst Du viel, nur fachlich ist es meiner Ansicht nach falsch. Denn wenn Du sagst, ich entferne aus einer Tabelle irgendwelche Spalten, weil sie gleichen Namen haben, dann impliziert das wiederum, dass Du zwischen den Tabellen eine Beziehung hast. Formal hast Du diese aber nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also eigentlich gibt es 2 möglichkeiten:

wie flashpixx sagte, genaugenommen ist die Aufgabe keine Aufgabe - das wird dein LEhrer/chef/whatthehell aber nicht hören wollen.

Was jeder Datenbank-Neuling zu Anfang machen muss ist:

er bekommt sowas wie du hier, allerdings mit den Informationen ob z.b Kundennr hier immer das selbe ist.

dann überlegt man sich anhand der Regeln der Normalisierung ein besseres Konzept, indem man z.b. alle Kundenbezogenen Daten aus den Datentabellen herausnimmt, dafür eine ID reinstellt und in eine neue Tabelle nur die Kundendaten und eben diese ID erzeugt.

dann verknüpft man überall wo man vorher die Kundendaten in den Tabellen hatte die ID mit der ID der Kundentabelle.

voila.

Wenn du etwas tun willst, dann tu sowas in die Richtung. Alles andere macht überhaupt keinen Sinn, aus Gründen die Fashpixx genannt hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo steht denn in Deinem Modell, dass die beiden Kundennummern identisch sind !? Das fällt im Moment einfach vom Himmel, dass Du annimmst, dass beide identisch sind.

Im mathematischen Sinne kann ich dir das nicht beweisen nein.

Und ja, irgendein hirnloser Affe, könnte völlig andere information in diese Spalte schreiben ja.

Gesunder Menschenverstand und die Praxis sagen mir, wenn eine Spalte kunde_id heist, steht da eine Kunden ID drin.

Nebenbei, welches "mein" Modell ? ich hab kein Modell, ich kann bei dem was an Information zur Verfügung steht lediglich logisch denken.

Nebenbei, du könntest etwas weniger "anfeindend" argumentieren.

Gruß

Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Annahmen solch optimistischer Art haben schon zu den wildesten Datenmodellen geführt. Nur weil ein Feld "KundeID" in zwei Tables steht und 2x 4711 als Inhalt, können JOINs darüber fehlschlagen - wo steht, dass die Datentypen identisch sind? (und das entspricht leider auch der Realität!)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Annahmen solch optimistischer Art haben schon zu den wildesten Datenmodellen geführt.

@streffin: und genau das habe ich Dir eben gesagt. Die Informatik ist eine mathematisch motivierte Wissenschaft, d.h. ich arbeite mit logischen Schlüssen und in Deinem Problem fehlt einfach die Information und Du kannst diese Dir eben nicht "vom Himmel" herholen.

Nebenbei, welches "mein" Modell ? ich hab kein Modell, ich kann bei dem was an Information zur Verfügung steht lediglich logisch denken.

Du musst eben "formal" logisch zeigen, wie eben so ein Schluss geführt wird. Verglichen mit dem Auto: Ohne Benzin kannst Du nicht fahren, auch wenn Du es schieben würdest.

Mir scheint und das siehst Du als Anfeindung, dass Dir nicht klar ist, worum es geht. Natürlich kann man sich irgendwas zu Deiner Aufgabe denken, aber das ist einfach falsch, denn die Aufgabenstellung ist unvollständig und es fehlen eben die relevanten Informationen. In allen Posts habe ich Dich immer darauf hingewiesen.

Ich kann das sogar mit Hilfe von Komposition (Mathematik) ? Wikipedia formal zeigen, d.h. ich kann Dir zwei Beispiel konstruieren, die genau widersprüchliche Ergebnisse liefern. Das hat allesweg mit seiner "optimistischer Art" gemeint. Aus diesen zwei Beispielen kann ich dann sogar formal den Schluss ziehen, dass das Modell nicht eineindeutig ist und damit folgt, dass eben die Grundlage mit der Du arbeitest eben so nicht korrekt ist.

Bei allen Dingen muss Du als Designer garantieren, dass immer deterministisch garantiert wird, wie die Zusammenhänge sind. Gerade bei Datenbanken musst Du garantieren, dass egal wie ich auf die Daten zugreife, das Ergebnis immer definiert ist und in Deinem Fall lässt sich eben zeigen, dass dies nicht der Fall ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Jungs,

hier ging es ja drunter und drüber. Ich habe mich nochmal ran gesetzt und die Aufgabe soweit gelöst, wie ich konnte.

Hier nun das Ergebnis. Schaut euch das bitte einmal und schreibt eure Kritik dazu. Noch einmal am Rande: Hier sollten nur die Redundanten Datensätze eliminiert werden. Auch spielen die einzelnen Beziehungen noch keine Rolle:

Kundendatei:

Kundennummer, Firma, Branche, Telefon, Kunde seit, Bemerkung

Kundendatei_Adressen:

Firma; Rechnungsadresse, Lieferadresse

Mitarbeiterdatei_Stammdaten:

Mitarbeiternummer, Name, Adresse, Telefon, Position, Postion seit; Gehaltstuffe, Ausbildung, Geburtsdatum, Bemerkung

Mitarbeiterdatei_Lieferung:

Name, PKW, Führerschein

Angebot:

Angebotsnummer, Bezeichnung, Kategorie

Angebot_Lieferkriterien:

Bezeichnung, Zuschlag Express, Gewicht, Anzahl, Preis

Terminplan:

Datum, Kundennummer; Kundendaten_Adressen, Mitarbeiterdatei_Lieferung, Angebot_Lieferkriterien

Terminplan_Status:

Kundenummer, Ausgeliefert, Abgabe bei Nachbar, Beschädigt

Routenplanung:

Mitarbeiterdatei_Lieferung, Kundendaten_Adressen, Angebot_Lieferkriterien

Rechnungswesen:

Rechnungsnummer, Rechnungsdatum, Kundennummer, Angebot_Lieferkriterien

Rechnungswesen_Status

Kundenummer, Bezahlt, Mahnung

Kann man das so machen?

Hier das Original:

Kundendatei:

Kundennummer, Firma, Branche, Adresse, Telefon, Kunde seit, Bemerkung

Mitarbeiterdatei:

Mitarbeiternummer, Name, Adresse, Telefon, Gehaltstuffe, Ausbildung, PKW, Führerschein, Geb. Datum

Angebot:

Angebotsnummer, Bezeichnung, Preis, Kategorie, Gewicht, Zuschlag Express

Terminplan:

Datum, Kundennummer, Firma, Lieferanschrift, Mitarbeiter (Aufnahme Bestellung), Mitarbeiter (Fahrer), Art der Lieferung, Anzahl, Ausgeliefert, Beschädigt

Routenplanung:

Fahrer, Fahrzeugtyp, Firma, Lieferanschrift, PLZ-Bereich, Gewicht der Ladung

Rechnungswesen:

Rechnungsnummer, Rech. Datum, Kundenummer, Mitarbeiter (Fahrer), Art der Lieferung, Anzahl, Einzelpreis, Gesamtpreis, Mahnung.

Bin für Hilfe dankbar.

Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier sollten nur die Redundanten Datensätze eliminiert werden. Auch spielen die einzelnen Beziehungen noch keine Rolle

Ich stell einfach mal die Frage, womit ich mich wieder an meinem letzten Post anschließen:

Wo sind hier bitte Datensätze ?

Wenn Beziehungen keine Rolle spielen, weshalb kannst Du dann einfach Spalten ändern?

Du hast nach meinem Verständnis keine Daten, jedenfalls hast Du keine gepostet. Und da Du hier keine Beziehungen genannt hast, kann ich das Problem wieder auf das zurückführen, dass Du nicht einfach hier in irgendwelchen Spalten nach Belieben ändern kannst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Datensätze habe ich noch keine angelegt, die jeweiligen Daten die dort reinkommen sind doch anhand der Bezeichnungen selbsterklärend. Desweiteren ist dafür gesorgt, dass bei Tel. Nr keiner sein Namen rein schreibt (anhand des Typs).

Beziehungen:

Alle Mitarbeiter sind aufeinander angewiesen. Fahrer verlassen sich auf die Mitarbeiter im Innendienst, die die Aufträge entgegennehmen. Fahrer verlassen sich auch darauf, dass die Touren ordentlich zusammengestellt werden; die Kunden warten auf die Lieferungen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...