Wie muß ich die DB normalisieren?

computerpap

Mitglied
Hallo

Ein blutiger DB-Anfänger bräuchte dringend Hilfe meim Erstellen einer DB.
Meine Aufgabe ist es, eine DB zu erstellen, in der alle Maschinen und Anlagen einer Firma plus deren spezielle "Eigenschaften" gespeichert werden. Alle Maschinen oder Anlagen gibt es nur einmal bzw. haben einmalig vergebene Namen. Die Maschinen od. Anlagen stehen in verschiedenen Abteilungen, mit entsprechenden Verantwortlichen. In den meisten Maschinen gibt es eine Batterie. Es gibt verschiedene Batterien mit entsprechenden Lagernummern. Einige Maschinen sind sogenannte "Meßmittel". Jedes Meßmittel hat eine eigene Meßmittelnummer. Außerdem hat jede Maschine einen eigenen Beschreibungstext. Abgefragt soll die DB nach allen genannten Eigenschaften der Maschine werden. Den Entwurf habe ich wie folgt geplant:

Tab. Anlagen:
AnlagenID
Anlagenname
Beschreibungstext

Tab. Batterie:
BatterieID
Batteriename
Lagernummer

Tab. Abteilung:
Abteilungsname
NameVerantwortlicher

Tab. Meßmittel:
MeßmittelID
Meßmittelnummer

Ist mein Entwurf soweit erstmal richtig und wie muß ich die einzelnen Tabellen verknüpfen? Für Eure Hilfe schon mal vielen Dank im voraus!

MfG
computerpap
 
Hallo

Ich hoffe es findet sich noch jemand, der mir sagen kann, ob ich meine DB richtig normalisiert habe, und wie ich die einzelnen Tabellen mit einander verbinden muß. Sollte ich mich unklar ausgedrückt haben, laßt es mich wissen, aber als Anfänger weiß ich nicht wie ich es anders hätte formulieren sollen.

Mfg
computerpap
 
Hallo,

wenn ich dich richtig verstanden habe, ist die Tabelle mit den Anlagen die zentrale Entität in deiner Datenbank und alle anderen nur Nachschlagetabellen. Dann würde ich dir empfehlen, in der Anlagen-Tabelle Fremdschlüsselfelder einzurichten, um die Relation zu den anderen Tabellen herzustellen.

Bei den Messmitteln hat ja jeder Datensatz schon eine eindeutige Messmittelnummer, da wäre ein zusätzliches Primärschlüsselfeld dann eigentlich überflüssig. Anders bei der Tabelle mit den Abteilungen, da würde ich an deiner Stelle ein Zahlenfeld als Primärschlüssel einfügen. Die Verantwortlichen für eine Abteilung könntest du evtl. auch noch in eine eigene Tabelle auslagern, falls da später mal jemand auf die Idee kommt, eine Person für zwei Abteilungen verantwortlich zu machen.

Anlagen
AnlagenID: int auto_increment primary key
Name: varchar(20) unique
Beschreibung: varchar(150)
Messmittel: int -> Messmittel.Messmittelnummer
Batterie: int -> Batterie.BatterieID
Abteilung: int -> Abteilung.AbteilungsID

Messmittel
Messmittelnummer: int primary key

Batterie
BatterieID: int auto_increment primary key
BatterieName: varchar(20) unique
Lagernummer: int -> Lager.Lagernummer (?)

Abteilung
AbteilungsID: int auto_increment primary key
Name: varchar(20) unique
Verantwortlicher: int -> Abteilungsverantwortlicher.AVID

Abteilungsverantwortlicher
AVID: int auto_increment primary key
Name: varchar(20) unique

Probier das am besten einfach mal aus und füll die Datenbank mit 20 bis 30 Datensätzen. Wenn du dann feststellst, dass da noch Redundanzen auftreten, solltest du das Design nochmal überdenken und dir überlegen, wie du diese am besten heraus bekommst. Wobei da der Aufwand den Nutzen nicht übersteigen sollte...

Hoffe, das hilft dir erstmal etwas weiter. :)

Grüße, D.
 
Hallo
Super, vielen, vielen Dank. Das hilft mir auf jeden Fall weiter. Ich werde noch die Tabelle für Verantwortliche anlegen, und dann denke (und hoffe) ich, dass ich soweit alles normalisiert habe. Wie man die Tabellen verknüpft, darauf hätte ich selber kommen können, naja manchmal sieht man den Wald vor lauter Bäumen nicht.
Als nochmals Danke und bis bald.

MfG
computerpap
 
Zurück