#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) + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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) + Multi-Zitat Zitieren
#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 ^^ + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 =) + Multi-Zitat Zitieren
#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!!! + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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... + Multi-Zitat Zitieren
#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!!! + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 =) + Multi-Zitat Zitieren
#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 ^^ + Multi-Zitat Zitieren
#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 ^^ + Multi-Zitat Zitieren
#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 ) + Multi-Zitat Zitieren
#16 5. Juni 2006 da kann ich dir nur zustimmen!!! sieht aber richtig gut aus. nice day!!! + Multi-Zitat Zitieren