PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankmodellierung


darph
2005-05-22, 19:06:46
Nehmen wir an, wir haben ein ER-Modell mit der Entity "ANGESTELLTER", dieser wiederum hat eine Personalnummer und einen Namen.

Außerdem gibt es eine [is_a] Relation von Angestellter zu
CHEF (mit den Attributen Gehalt)
GELERNTER (Einsatzgebiet)
UNGELERNTER (Datum_der_Kündigung)


oder so.

Wie kann ich diese Beziehung in ein Relationenmodell konvertieren?

Ich kann der Tabelle "Angestellter" noch eine Spalte "is_a" angeben, und weiter?

Aqualon
2005-05-22, 19:58:11
Sollen Chef, Gelernter und Ungelernter jeweils die Attribute in Klammern haben?

Aqua

HellHorse
2005-05-22, 20:19:57
Vererbung?

darph
2005-05-22, 20:32:19
Sollen Chef, Gelernter und Ungelernter jeweils die Attribute in Klammern haben?

Aqua
Das in den Klammern sind die Attribute, der Entities. Soll halt nur deutlich machen, daß die Entities unterschiedliche Attribute haben. ;(

Aqualon
2005-05-22, 22:16:46
Du könntest für [is_a] pro Berufsgruppe eine Berufsgruppen_ID einfuehren. Danach hast du 2 Möglichkeiten:

Möglichkeit 1:

Erstellen einer Tabelle pro Entity mit den jeweiligen Attributen und der Personalnummer als Primary Key. Die Anwendung, die zum Zugriff auf die Tabellen benutzt wird, muss dann je nach Berufsgruppen_ID wissen, welche Tabelle zu welcher Berufsgruppe gehoert (ausser du machst die Berufsgruppen_ID als String und nennst die Tabelle zu der Berufsgruppe genauso).

Vorteil:
- einfach um weitere Attribute erweiterbar
- alle Mitglieder einer Berufsgruppe in einer Tabelle erfasst

Nachteil:
- pro Berufsgruppe eine extra Tabelle notwendig
- Probleme beim Erfassen von Mitarbeitern, die zu zwei Berufsgruppen gehören (sollte das vorkommen, müsste eine eigene Berufsgruppen_ID fuer die jeweiligen Berufsgruppenkombinationen festgelegt werden)

Möglichkeit 2:

Erstellen einer Tabelle für alle Berufsgruppen und nur die Attribute belegen, die auf die jeweilige Berufsgruppe zutreffen (Referenzierung wieder über die Personalnummer als Primary Key). In dem Fall brauchst du die Berufsgruppen_ID nicht, da du über die Personalnummer auf die Attribute zugreifst.

Vorteil:
- Nur eine Tabelle notwendig, unabhängig von der Anzahl der Berufsgruppen
- Gleiche Attribute mehrerer aber nicht aller Berufsgruppen können als ein Attribut gespeichert werden

Nachteil:
- Viele unbelegte Spalten
- Du musst beim Auslesen wissen, welche Attribute zu welcher Berufsgruppe gehören bzw. garantieren, dass die anderen auf jedenfall NULL sind.
- Unter Umständen ein ziemliches Durcheinander von Attributen, besonders bei Erweiterungen um zusätzliche Attribute


Ich persönlich würde Möglichkeit 1 bevorzugen, da es weniger Aufwand bereitet, die Daten für die jeweiligen Berufsgruppen zu verwalten und du ausserdem Speicherplatz einsparst. Es kann zwar unübersichtlich werden, wenn es sehr viele Berufsgruppen wären, aber das scheint bei dir ja nicht der Fall zu sein.

Aqua