Brauche Hilfe Bei Normalisierung einer (einfachen) Datenbank

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von amx, 29. Mai 2006 .

  1. 29. Mai 2006
    Hi Leute,

    Als erstes : ich hab keine Ahnung in welchen Bereich ich das hier sonst hätte schreiben sollen darum hab ichs einfach hier rein geschrieben ^^ da es ja irgentwo was mit dem entwickeln von software zu tun hat ^^ wenn das Thema hier fehl am Platz ist bitte verschieben !!!

    erstmal zu mir ^^ ich bin 17 Jahre alt und mach ne schulische Ausbildung als Kaufm. Assist. f. Wirtschaft / Informatik und ich hab ein Problem mit einem Schulprojekt und hoffe dass mir vielleicht jemand von euch bei diesem Problem behilflich sein könnte. Mein Problem dreht sich um die Normalisierung einer Datenbank (in Acces). Ich habe unten mal alle meine Relationen aufgeschrieben villeicht könnte mir die ja jemand in die 2 und 3NF bringen ?!. Die 1. NF is selbst für mich kein Problem (lol) aber ich bekomme meine Tabellen einfach nicht in die 2. geschweigeden in die 3 NF

    Ich währ euh für eure Hilfe echt Dankbar.


    Die Aufgabenstellung
    Erstellen Sie im Rahmen dieses Projektes eine Datenbank, die die LAgerverwaltung der XY GmbH automatisiert. Imeinzelnen hat die Datenbank folgende Funktionen bereitzustellen:


    - Erfassung und Verwaltung der Lagerstammdaten
    - Erfassung und Verwaltung von Material zu und Abgängen
    - Wertmäßige erfassung der Verbräuche je Kostenstelle
    ( ich habe keine Ahung was ich mit ner Kostenstelle verbinden soll... eine kostenstelle is z.b. Stromverbrauch oder Papierverbrauch und soll einer abteilung zugeordnet sein)

    - Meldesystem bei Unter- bzw. überschreitung von Lagerkenngrößen (Mindest,Höchstbest etc)
    - Automatische generierung eines Bestellvorgangs bei Unterschreitung der oben genannten LAgerkenngrößen
    - Einfache und benutzerfreundliche Programmführung ( das schaff ich sogar) ^^
    - Verhinderung von Integrietätsverletzungen der Datenbank (z.b.Mehrfachabspeicherung eines Materialentnahmescheins)

    das is im groben Alles was wir als Aufgabenstellung bekommen haben dem Liegt ein Pflichtenheft zugrunde das ich hier aber nich posten will ^^ ich denke mann benötigt nur die Objegte wie ich sie unten aufgeführt habe.







    Hier Meine Objekte (Tabellen:


    Artikel
    Art-nr
    Art-bez
    Art-einheit
    Art-ek-preis
    Art-vk-preis
    Art-größe
    Art-lagerort
    Meldebestand
    Sicherheitsbestand
    Aktualbestand
    Höchstbestand


    Kostenstellen
    Kstst-nr
    Kstst-bez


    Passwort
    Benutzername
    Passwort


    Mitarbeiter
    Mit-nr
    Mit-name


    Abteilung
    Abt-nr
    Abt-name


    Ein-Ausgangs-Lager
    Vorgangs-nr
    Vorgangs-eigenschaft (Zu/Abgang)
    Vorgangs-dat
    Vorgans-art-menge
    Vorgangs-art-preis


    Lieferanten
    Lief-nr
    Lief-name
    Lief-strasse
    Lief-plz
    Lief-ort
    Lief-telephon
    Lief-e-mail

    edit: ein mitschüler hat mir seine fertigen bezihungen in acces geschickt... sind diese in der 3 NF oder gibt es auch da noch Probleme ??? (siehe Anhang)
     
  2. 29. Mai 2006
    wow das er-diagramm sieht echt gut aus.


    werd mich mal ransetzten!!!



    EDIT: kannst du vllt mal die aufgabenstellung mit reinstellen???

    so ihr ist ein vorschlag. ich habe die tabelle mitarbeiter und passwort zusammengefasst, da nur ein mitarbeiter auch nur ein passwort bzw benutzername haben kann (siehe 3 NF). leider weiss ich nix´s mit der tabelle ein-ausgangs-lager anzufagen. deshalb habe ich sie erstmal ignoriert.
     
  3. 29. Mai 2006
    Nur ein paar kurze Bemerkungen von mir:

    - In der Access Abbildung dürfte wohl sogar (ist immer ein bisschen eine Auslegungssache) die 1 NF verletzt sein. Da es ein Attribut "Adresse" gibt, was in der Regel nicht atomar ist. Müsste man in Strasse, PLZ und Ort aufteilen, wie es Harry schon gemacht hat.

    - Bei der Abbildung von harry ist die 3. NF verletzt, da Ort von dem Nichtschlüssel-Attribut PLZ abhängig ist und sich somit eine transitive Abhängigkeit ergibt.

    - Bei der Kostenstelle bin ich mir auch nicht ganz sicher, ich würde eine Tabelle "Kostenstelle" mit Kostenstelle_nr und bezeichnung einfügen und eine Zwischentabelle zwischen Kostenstelle und Abteilung, in der Kostenstelle_nr, Abteilungs_nr und Kosten stehen.

    Dadurch könnte man sagen: Abteilung 3 hat 160EUR für Papier ausgegeben, 38EUR für Wasser etc.
    (Falls ich den Sinn dieser Kostenstelle jetzt richtig verstanden habe)
     
  4. 29. Mai 2006
    genau sowas hab ich gebraucht =) ich danke euch für eure Antworten ich werd sie so schnell es geht versuchen umzusetzen ^^
     
  5. 30. Mai 2006
    @ResusPos:
    kannst du mich bitte mal genau aufklären??? meinst du, dass es zu einem ort eine oder mehrere plz gibt???

    schönen abend noch!!!


    nice day
     
  6. 30. Mai 2006
    ^^ Moin

    Also *tief luft hol*

    Die PLZ ist ja von der Lieferanten_nr abhängig, da Lieferant A eine andere PLZ als Lieferant B haben kann. Der Ort ist allerdings von der PLZ abhängig, da sinngemäß jeder Ort eine eigene PLZ hat und jede PLZ einen eigenen Ort (du siehst, man kann das Spiel auch andersrum spielen, sodas PLZ von Ort abhängig ist, das ist egal). Wenn die PLZ 74632 ist, dann ist der Ort zwangsläufig (was weiß ich) Buxtehude.

    Somit ergibt sich die (transitive) Abhängigkeit: Lief_nr -> PLZ -> Ort

    Und das darf es per Definition der 3. NF nicht geben.

    Man kann ganz einfach folgende Anomalie daraus erstellen: Ich update Ort von Köln auf Düsseldorf where Lieferanten_nr = 3. Somit ist nur bei Lieferant 3 der Ort mit der PLZ 11111 Düsseldorf, bei allen anderen mit der PLZ 11111 ist es weiterhin Köln....somit haben wir Inkonsistenz in der DB.

    Das vermeidet man dann ganz einfach, indem in Lieferanten nur die PLZ steht und in einer separaten Tabelle "Orte" oder so die PLZ und der Ort steht.

    So, ich hoffe das war halbwegs verständlich erklärt =)
     
  7. 30. Mai 2006
    mmhh okay.

    aber wie sieht es mit der performance aus??? *klugscheiss* war nur spass!!!

    aber das würde auch bedeuten, wenn man in der tabelle mitarbeiter seine adresse angibt, würde ja dann auch wieder eine neue tabelle entstehen!!! oder sehe ich das falsch???


    nice day!!!
     
  8. 30. Mai 2006
    so ich hab hier mal ein "vorzeigebeispiel" einer meiner Mitschüler... also wenns daran was zu mekern gibt weiss ich mir echt nich merh zu halfen ^^


    Das mit der PLZ versteh ich nich... ich glaub nich das es moeglich ist/war/sein wird einer plz nen anderen ort zuzuweisen oder andersrum.
     
  9. 30. Mai 2006
    @harry
    nö, wenn bei Mitarbeitern jetzt noch die Adresse eingefügt wird kann man dieselbe Tabelle benutzten, die auch Lieferant benutzt. Die PLZ und ORT unterscheiden sich ja nicht bei Lieferanten und Mitarbeitern. (Also sie unterscheiden sich natürlich in den Werten, aber nicht im Aufbau)

    @amx
    Wieso meckern? Du wolltest doch hilfe, oder?! Das nennt sich dann "konstruktive Kritik"

    Doch glaub mir, man wird das so ändern können, wie ich es beschrieben habe, warum sollte man es auch nicht so ändern können? Verbietet einem doch keiner. Vom Prinzip her ist's ja egal, aber dann ist das Modell eben nicht in 3. NF.

    Die letzte Version sieht doch ganz gut aus! Auch wenn ich nicht weiß was tab_lager2 sein soll??? Macht es irgendeinen Unterschied, wenn ich tab_Kostenstelle und tab_Artikel direkt mit tab_lager in beziehung setze? hmmm....hä?...öhhh..... entweder habe ich das falsch verstanden, oder... wofür soll tab_lager denn überhaupt gut sein? Was würde dagegen sprechen alle Attribute von tab_lager in tab_vorgang zu übernehmen, wenn ein Vorgang nur einen Artikel enthalten darf und nur einer kostenstelle zugeordnet ist? Also, wenn schon ein Lager da sein muss, dann gehört doch sowas wie aktueller Bestand und so da rein und nicht in Artikel....?!

    Ich würd ja gern ein eigenes Diagramm machen, anstatt nur rum zu mäckeln, wenn ich nur nicht sowas von gar keinen Bock darauf hätte...
     
  10. 30. Mai 2006
    na gut!!!


    wenn du uns genau die aufgabenstellung geben könntest, bzw. du uns sagen kannst für was welche tabelle da ist können wir dir auch weiterhelfen.
    eine genauere definition für die tabellen wäre nit schlecht.



    schönen abend noch!!!
     
  11. 30. Mai 2006
    Jo, ich habe mich gerade mal aufgerafft und ein Diagramm erstellt, doch mir fiel auf, dass ich es nicht vernünftig machen kann, da ich nicht weiß, was genau gemeint ist.

    So pauschal würde ich es wie folgt verstehen: Dir Abteilungen der Firma verbrauchen Materialien (wie Papier, Heftzwecken was weiß ich). Diese Materialien sind vorrätig auf Lager. Ein Lagerabgang bedeutet, dass eine Abteilung das Material verbraucht und es soll erfasst werden, wieviel von diesem Material (artikel) pro Abteilung verbraucht wird. Ein Lagerzugang bedeutet es wird wieder neu angeliefert, da der Bestand im Lager nicht mehr groß genug ist.

    Verstehe ich das jetzt richtig, oder bedeutet ein Lagerabgang, dass es irgendwohin ausgeliefert wird und nicht in der Firma selbst verbraucht wird??
    Soviel musst du schon sagen/erklären, sonst klappt das nicht...

    Gruß Resus
     
  12. 31. Mai 2006
    Das is genau richtig udn ein Lagerausgang beudeuted das aus dem Lager Materialien an eine Andere Abteilung (die Produktion) weitergeleited wird.

    und nochmals Danke für eure super vorschläge =)

    MfG AMX


    ps: so hier meine neue (hoffentlich fertige) version ^^ und ich wollt mich noch mal ganz herzlich bei euch für eure Hilfe bedanken =)
     
  13. 1. Juni 2006
    Nabend,
    also, ich habe auf Grundlage der "Vorzeigerversion eines Mitschülers" mal das gebastelt, was du im Anhang findest.
    Meiner Ansicht nach müsste es komplett in 3. NF sein und nach meinem Verständnis der Aufgabe auch alles enthalten was nötig ist, aber möglichst wenig Redundanz.

    Bei Fragen: einfach melden ^^
     
  14. 5. Juni 2006
    Hilfe bei Nortmalisierung

    Danke für die Normalisierung habs grad mal mit deiner versucht da miene nicht zu klappen scheint...
    nun hab ich doch wieder ein Problem unzwar weiss ich nich genau wo ich in deiner Zeichung die primärschluessel vergeben soll und welche mit Dubliketen sind und welche nicht ich hab alles versucht aber manche bezihungen bekomm eich einfach nicht hin.

    Ich währ dir für ne schenlle Antwort dankbar ^^
     
  15. 5. Juni 2006
    Gott, wie ich Access hasse...

    So, ich habe jetzt die Vorgangsnr. als Primärschlüssel in Lagereingang und -ausgang gewählt. Die tab_lager habe ich einfach mal eliminiert, da es eine 1:1 Beziehung zwischen lager und artikel wäre, die man bekanntlich immer eliminieren kann. Eine weitere 1:1 Bez. gibt es dann noch zwischen Vorgang und den Ein- und Ausgängen. Natürlich könnte man das jetzt auch alles nur in Vorgang stopfen und z.b. bei einem Lagerausgang die Lieferantennr gleich 0 setzen usw. aber so finde ich es etwas übersichtlicher. Mögliche Inkonsistenz: ein Vorgang könnte sowohl in Lagerausgang, wie auch im Eingang vorkommen...

    Naja, hier mal meine Access-Implementierung (aber alles ohne Gewähr )
     
  16. 5. Juni 2006
    da kann ich dir nur zustimmen!!!

    sieht aber richtig gut aus.

    nice day!!!
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.