Datenbanksysteme - ER-Diagramm / Relationales Sche

Moin,

ich sitze gerade an einer Übung für Informatik und komme leider überhaupt nicht mehr weiter, auch paar Freunde, die das Fach auch haben, konnten mir nicht weiterhelfen…Vielleicht habe ich ja Glück und hier kann mir weitergeholfen werden?

Hier meine 2 Fragen:

  1. Ich soll in einer Aufgabe ein gegebenes ER-Diagramm in ein relationales Schema überführen, grundsätzlich kann ich dies, nur in dem vorliegenden ER-Diagramm ist einmal eine Aggregation und einmal eine isa-Hierarchie gegeben, wie überführe ich denn diese Sonderfälle?

  2. Konkret zur folgendenen Aufgabe:

"Eine Firma hat mehrere Arbeiter und Maschinen. Jeder Arbeiter kann eine oder mehrere Maschinen bedienen. An jeder dieser Maschinen kann er bestimmte Produkte herstellen. Der folgende Relationship-Typ modelliert dieses Szenario:

Produkt
|
Arbeiter--------------------------„Relationsymbol“-------------------Maschine

Ist es möglich, ein für die Problemstellung geeignetes ER-SChema anzugeben, in dem nur binäre Relationship-Typen verwendet werden. Wenn ja, geben Sie ein entsprechendes ER-SChema an; wenn nicht, begründen Sie ihre Antwort."

Ich verstehe das nicht, wenn es doch wie hier eine 1zu1 Beziehung gibt (oder liegt die hier doch nicht vor)? dann ist doch ein binärer Relationship-Typ immer möglich oder nicht?

Ich hoffe auf eure Hilfe! Tausend Dank schon jetzt.

Marcus

Hallo Marcus,

zu 1)
Vielleicht hilft Dir das weiter: http://wi.f4.htw-berlin.de/users/morcinek/dbtutor/in…
Wenn nicht, frag bitte nochmal.

zu 2)
Der Frage entnehme ich, dass es sich um einen ternären Beziehungstyp handeln soll. Das ist im ASCII-ER-Diagramm in der Fragestellung leider nicht zu erkennen. Kannst Du das ER-Diagramm in einer lesbaren Form darstellen? Ich sehe nämlich keine 1:1-Beziehung. Mit einem lesbaren Diagramm sollte es auch möglich sein zu erkennen, wie die binären Beziehungstypen aussehen.

Peter

Vorneweg: Vielen Dank für Ihre Hilfe!

zu 1) Das hat mir weitergeholfen.

zu 2) Ich habe das ER-Schema mal hochgeladen: https://rapidshare.com/files/4251907996/ER_2.jpg


Noch eine letzte Frage: Ich habe folgendes relationale Datenbankschema mit geeigneter Bereichsfunktion gegeben.

{ (KUNDEN, {KNr, Name, Ort}),
(FAHRZEUGTYP, {FBez, Preis}),
(FILIALE, {FName, Gesamtumsatz}),
(ANGESTELLTER, {ANr, FName, Umsatz, ProvisionInProzent}),
(BESTAND, {FName, FBez, Anzahl}),
(VERKAUF, {VerNr, KNr, ANr, FName, FBez, Datum})
}

Nun musste ich folgende Anfragen als Ausdrücke in der Relationenalgebra formulieren:

a)Gib die Namen aller Kieler Kunden, die ein Fahrzeug gekauft haben.
b)Gib die Nummern der Angestellten mit dem höchsten Umsatz.

Ich habe a) wie folgt gelöst: (KUNDEN[Ort=„Kiel“][KNr,Name]VERKAUF[KNr])[Name]

soll das „Join Zeichen“ darstellen.

Bei b) stehe ich auf dem Schlauch :frowning:

Grüße

zu 2)
Eine mehrwertige Beziehung lässt sich auch in Form binärer Beziehungen darstellen. Die ternäre Beziehung müsste wie folgt aussehen:

 Produkt
 |
 1
 |
Arbeiter -N----M- Maschine

Die binären Beziehungen sähen wie folgt aus:

Arbeiter -1----N- Maschine

egibt sich direkt. Unklar ist, ob eine Maschine immer vom gleichen Arbeiter bedient wird oder eine Maschine von unterschiedlichen Arbeitern bedient werden kann. Im zweiten Fall sähe die Beziehung wie folgt aus:

Arbeiter -N----M- Maschine

Dass an Maschinen „bestimmte“ Produkte (Mehrzahl) hergestellt werden, interpretiere ich als Abhängigkeit des Produktes von der Maschine.

Maschine -1----N- Produkt

Ich interpretiere die Aufgabenstellung auch so, dass ein Produkt an einer Maschine vollständig hergestellt wird. Wenn für die Herstellung eines Produktes mehrere Maschinen benötigt werden, müsste es eine N:M-Beziehung sein.

Das gleiche gilt für den Arbeiter. Dieser kann „bestimmte“ Produkte (Mehrzahl) herstellen. Und für den Fall, dass eine Maschine zur Herstellung eines Produktes von nur einem Mitarbeiter bedient wird, sähe es so aus:

Arbeiter -1----N- Produkt

Je präziser die Aufgabenstellung, desto genauer kann modelliert werden. :wink:

Peter

Zum Relationenschema:

a)Gib die Namen aller Kieler Kunden, die ein Fahrzeug gekauft
haben.
(KUNDEN[Ort=„Kiel“][KNr,Name]VERKAUF[KNr])[Name]

Die Notation ist mir unbekannt. Da die Relationale Algebra aber nicht standardisiert ist, mag das ok ein. Gewöhnlich steht die Projektion links. Der Join scheint mir unklar ausgedrückt. Ausserdem sollten der Join und die Selektion/Restriktion nicht vermischt werden. Das sind eigenständige Operationen.

Ich verwende im Folgenden PROJECT für die Projektion, RESTRICT für die Selektion/Restriktion und JOIN für den Verbund/Join.

PROJECT[Name] ( RESTRICT[Ort="Kiel"] (Kunden JOIN Verkauf) )

Der JOIN muss hier nicht zwingend spezifiziert werden, da er über gemeinsame Attribute hergestellt wird (Natürlicher Join). Natürlich ist auch ein Theta-Join möglich. Der sollte dann so aussehen (hier nur der Join):

(Kunden JOIN[Kunden.KNr=Verkauf.KNr] Verkauf)

Über die Darstellung der Join-Kriterien kann man sicher streiten. Ich hoffe, es ist klar, was gemeint ist.

In obiger Lösung wurde vor dem Join eine Projektion durchgeführt, um nur die benötigten Attribute anzusprechen. Das würde in meiner Notation wie folgt aussehen.

PROJECT[Name] ( RESTRICT[Ort="Kiel"] ( PROJECT[KNr,Name] (Kunden) JOIN PROJECT[KNr] (Verkauf) ) )

b)Gib die Nummern der Angestellten mit dem höchsten Umsatz.

Der höchste Umsatz kann mittels Gruppierung und Aggregatfunktion ermittelt werden. Ich verwende dafür die Notation [Gruppierungsattribute]GROUP[Funktionsliste]
Eine mögliche Lösung wäre:

PROJECT[ANr] ( [ANr]GROUP[MAX Umsatz] (Angestellter) )

Peter

Einfach nur klasse! Vielen, Vielen Dank für die ausführliche und noch späte Antwort. Hat mir sehr weitergeholfen.

Viele Grüße