FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 Blatt 4 Aufgabe 2

P3 Blatt 4 Aufgabe 2 2003-12-12 19:44
Graogramar
Hi Folks

Wie stelle ich denn die Relation von Bauteil, besteht aus, dar. In der Tabelle habe ich bis jetzt TNr als Primärschlüssel und Name und Gewicht als Attribute. Eigentlich ist es ja nun erforderlich, eine zweite Bauteiltabelle zu haben, die über einen eigenen Schlüssel mit der ersten Bauteiltabelle verknüpft ist. Dann habe ich aber redundante Daten. Gibt es für solche Fälle einen anderen Ansatz?

Re: P3 Blatt 4 Aufgabe 2 2003-12-12 19:49
bjoren
ohne jetzt hier gleich eine lösung zu posten:
folie II - 58 könnte helfen ;)

Re: P3 Blatt 4 Aufgabe 2 2003-12-12 22:17
Graogramar
Ja Danke erstmal aber das hilft nicht wirklich, denn im dort angeführten Beispiel sind die beiden Tabellen nicht über einen Schlüssel miteinander verknüpft. Muß ich also einen neuen Schlüssel definieren, der diese Aufgabe übernimmt?

Re: P3 Blatt 4 Aufgabe 2 2003-12-12 23:48
bjoren
hm ich glaube ich verstehe dich gerad nicht :)
das beispiel der folie kannst du doch eigtl 1:1 übernehmen.

da ist doch dieselbe situation: ein teil besteht aus unterteilen usw.

Re: P3 Blatt 4 Aufgabe 2 2003-12-13 19:26
Ksireau
Ich hab mal ne Frage zu 4. aus dieser Aufgabe:

http://vsis-www.informatik.uni-hamburg.de/teaching/ws-03.04/p3/a4/Unternehmen.gif

Finde Name und Gewicht aller Bauteile, die in Projekten verbaut wurden, die der Angestellte Müller kontrolliert.

Ich habe mir ne Tabelle besteht_aus(B_TNr, M_TNr) gemacht, wobei B_TNr das "Endprodukt" und M_TNr das Bauteil ist, aus dem es besteht.
Mein Problem liegt darin, dass ich nicht weiß wie ich alle Teile bekomme, aus dem das im Projekt verbaute Teil besteht.
Meinetwegen Bauteil 1 besteht aus Bauteil 2, und Bauteil 2 aus Bauteil 3 und 4.
Dann sieht meine Tabelle ja folgendermassen aus:
Endprodukt | Bauteil
1 | 2
2 | 3
2 | 4

Wie komme ich jetzt mit Relationenalgebra an das Bauteil 3 und 4 ran?

Re: P3 Blatt 4 Aufgabe 2 2003-12-13 21:08
tekai
durch rekursion ;)

abbruchbedingungen und sowas nicht vergessen, kann ja auch vorkommen das bauteil n aus teil m besteht und bauteil m besteht aus bauteil n.

Re: P3 Blatt 4 Aufgabe 2 2003-12-13 22:33
Slater
Mein Problem liegt darin, dass ich nicht weiß wie ich alle Teile bekomme, aus dem das im Projekt verbaute Teil besteht.
Meinetwegen Bauteil 1 besteht aus Bauteil 2, und Bauteil 2 aus Bauteil 3 und 4.
Dann sieht meine Tabelle ja folgendermassen aus:
Endprodukt | Bauteil
1 | 2
2 | 3
2 | 4

Wie komme ich jetzt mit Relationenalgebra an das Bauteil 3 und 4 ran?
wie bekommst du denn so eine Tabelle?

folgende könnte ich mir vorstellen nach deiner Beschreibung:
Endprodukt | Zwischenprodukt | Bauteil 1 | 2 | 3 1 | 2 | 4 und dann ist es die dritte Spalte,

um das Bauteil 2 zu erwischen brauchst du eine andere Abfrage

durch rekursion ;)
hallo, in Relationenalgebra?
muss letztes Jahr ganz schön was verpasst haben, das geht?

gibt meines derzeitigen Wissensstand keine Möglichkeit in Relationenalgebra
da mehr als in einer konstanten Tiefe Bauteile zu suchen
(sehe gerne ein Gegenbeispiel),

da denk ich mal laut: es sind nur die direkten Bauteile gefragt
abbruchbedingungen und sowas nicht vergessen, kann ja auch vorkommen das bauteil n aus teil m besteht und bauteil m besteht aus bauteil n.
Abbruchbedingung würde ich gerne auch mal sehen (Beispiel),

den Schleifenfall könnte man wohl getrost ignorieren,
das wär ja ne inkonsistente Datenbank ;)

Re: P3 Blatt 4 Aufgabe 2 2003-12-13 23:23
tekai
durch rekursion ;)
hallo, in Relationenalgebra?
muss letztes Jahr ganz schön was verpasst haben, das geht?

gibt meines derzeitigen Wissensstand keine Möglichkeit in Relationenalgebra
da mehr als in einer konstanten Tiefe Bauteile zu suchen
(sehe gerne ein Gegenbeispiel),
man beachte das ";)"

da denk ich mal laut: es sind nur die direkten Bauteile gefragt

das wollte ich mit meinem beitrag eigentlich sagen
den Schleifenfall könnte man wohl getrost ignorieren,
das wär ja ne inkonsistente Datenbank ;)
naja, warum nicht, die aufgabe danach ist imho auch nicht so dolle modelliert.

Re: P3 Blatt 4 Aufgabe 2 2003-12-13 23:35
Ksireau
Oh, mir fällt grad auf, dass das mit den direkten Bauteilen Sinn macht. Wenn man Name und Gewicht haben will, dann ist es ja dumm die Gewichte von allen verbauten Teilen zu nehmen, denn dann stimmt das Gesamtgewicht nicht mehr ;)

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 07:31
jr
Ich haette da auch mal eine Frage:

Angenommen man hat eine Tabelle Foo mit der Spalte Bar mit 3 Datensaetzen X, X, Z

Wenn ich nun eine Selektion auf Bar ausfuehre was bekomme ich dann {X, Z} oder (X, X, Z)?

Mathematischer Forumliert: Liefert die Selektion Mengen oder n-Tupel?

Ach ja, und wie frage ich nach dingen wie ein und kein? Bin mir nicht sicher wie man die Vereinigung verwendet (unaer oder binaer?).
Und wie notiere ich die Selektion auf die Maechtigkeit einer Menge (also z.B. alle n-elementingen Untermengen bzw n-Tupel)?

*EDIT* War nicht so gluecklich formuliert

/jr

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 09:04
Slater
Selektion belässt die Spalten wie sie sind,
es werden bestimmte Zeilen = Tupel ausgewählt anhand einer Bedingung,

Projektion hat keine Bedingung,
da wird einfach eine Spalte ausgeblendet und gut
(auf entstandene Doppelte achten)

beides liefert Mengen von Tupeln

'unaer oder binaer'?
was meinst du da?
bei Vereinigung oder sonstigen Operationen werden Doppelte gelöscht,
es entstehen ja ungeordnete Mengen

alle n-elementigen Untermengen bestimmen?
das hat mit Selektion und der ganzen Relationenalgebra eigentlich nichts zu tun

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 10:30
jr
Zum Thema unaer binaer (hasse Umlaute):

Muss ich

[img]http://mokrates.de/cgi-bin/texstring?$%5Ccup%5Cleft(%5Cpi_%7BBar%7D%5Cleft(Foo%5Cright)%5Cright)$%0A[/img]

oder

[img]http://mokrates.de/cgi-bin/texstring?$%5Cemptyset%5Ccup%5Cleft(%5Cpi_%7BBar%7D%5Cleft(Foo%5Cright)%5Cright)$%0A%0A[/img]

schreiben?

Und Wie bekomme ich z.B. alle Eintraege in Foo wo in Bar nur ein (oder kein) Eintrag existert (sei fuer diesen Fall angenommen das noch eine 2. Spalte Foobar existiert)?

Thx,
/jr

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 11:38
Alter Sack
durch rekursion ;)

abbruchbedingungen und sowas nicht vergessen, kann ja auch vorkommen das bauteil n aus teil m besteht und bauteil m besteht aus bauteil n.

Nein, das sollte nicht möglich sein, denn wenn Bauteil n aus m besteht, dann ist entweder n = m (womit es sich um ein doppeltes Vorkommen des gleichen Tupels in der Relation handelte, was nicht zulässig ist) oder m bildet zusammen mit anderen Bauteilen n. n kann man sich dann als die Menge aller Bauteile aus denen es besteht vorstellen. Dann kann aber m nicht aus n bestehen, da n > m wäre.

Gruß, Dirk

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 11:45
Alter Sack
Oh, mir fällt grad auf, dass das mit den direkten Bauteilen Sinn macht. Wenn man Name und Gewicht haben will, dann ist es ja dumm die Gewichte von allen verbauten Teilen zu nehmen, denn dann stimmt das Gesamtgewicht nicht mehr ;)

Es ist doch gar nicht nach dem Gesamtgewicht gefragt, sondern nach (Name und Gewicht) aller Bauteile…. Die haben keinen gemeinsamen Namen und daher ist auch nicht das Gesamtgewicht gemeint. Klammerung zur Verdeutlichung ;)

Gruß, Dirk

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 11:53
Alter Sack
Zum Thema unaer binaer (hasse Umlaute):

Muss ich

[img]http://mokrates.de/cgi-bin/texstring?$%5Ccup%5Cleft(%5Cpi_%7BBar%7D%5Cleft(Foo%5Cright)%5Cright)$%0A[/img]

oder

[img]http://mokrates.de/cgi-bin/texstring?$%5Cemptyset%5Ccup%5Cleft(%5Cpi_%7BBar%7D%5Cleft(Foo%5Cright)%5Cright)$%0A%0A[/img]

schreiben?

Und Wie bekomme ich z.B. alle Eintraege in Foo wo in Bar nur ein (oder kein) Eintrag existert (sei fuer diesen Fall angenommen das noch eine 2. Spalte Foobar existiert)?

Thx,
/jr


Ist Foo bei Dir eine Relation mit einem Attribut Bar? Dann benötigst Du, um die Relation, die ausschliesslich Bar als Attribut hat keine Vereinigung. Die Projektion erzeugt diese Relation.

Wenn Foo und Bar allerdings zwei Relationen sind, macht die Abfrage p[Bar](Foo) keinen Sinn. Sollten die beiden vereinigungskompatibel sein, bzw. da das für Grundrelationen eigentlich nicht zulässig ist, eine Projektion von Foo mit Bar vereinigungskompatibel sein, so musst Du zunächst diese Projektion bilden und diese dann mit Bar vereinigen. Das sehe dann so aus:

(Bar) u (p[Aufzählung der Attribute, die denen in Bar entsprechen](Foo))


Gruß, Dirk

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 12:50
jr
Ist Foo bei Dir eine Relation mit einem Attribut Bar? Dann benötigst Du, um die Relation, die ausschliesslich Bar als Attribut hat keine Vereinigung. Die Projektion erzeugt diese Relation.

Wenn Foo und Bar allerdings zwei Relationen sind, macht die Abfrage p[Bar](Foo) keinen Sinn. Sollten die beiden vereinigungskompatibel sein, bzw. da das für Grundrelationen eigentlich nicht zulässig ist, eine Projektion von Foo mit Bar vereinigungskompatibel sein, so musst Du zunächst diese Projektion bilden und diese dann mit Bar vereinigen. Das sehe dann so aus:

(Bar) u (p[Aufzählung der Attribute, die denen in Bar entsprechen](Foo))

Wedernoch. Foo ist eine Entitaet mit einem Attribut Bar. Meine Frage basierte auf dem Beispiel weiter oben:

Angenommen man hat eine Tabelle Foo mit der Spalte Bar mit 3 Datensaetzen X, X, Z

Mein Problem ist nun, wenn ich wissen will was es fuer verschiedene 'Bars' gibt reicht ein

[img]http://mokrates.de/cgi-bin/texstring?%5Cpi_%7BBar%7D(Foo)[/img]

nicht, denn dann bekomme ich ja (x, x, z) wobei das richtige Ergebnis {x, z} sein muesste.

/jr

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 15:05
Slater
wie gesagt gibt es in Mengen keine Doppelten,
falls du mit Datensätze X, X, Z die Einträge beim Attribut Bar
in 3 verschiedenen Tupeln = Zeilen = Entity meinst,
(im Gegensatz zu Tabelle = Entity-Typ?)

dann liefert die Projektion nur noch 2 verschiedene,
also eine Tabelle mit einem Attribut und 2 Tupeln: X und Z

Folie II-78 im Skript vom letzten Jahr

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 20:14
jr
Vielen Dank fuer diesen Hinweis.

/jr

Re: P3 Blatt 4 Aufgabe 2 2003-12-14 22:54
Alter Sack
Wedernoch. Foo ist eine Entitaet mit einem Attribut Bar. Meine Frage basierte auf dem Beispiel weiter oben:

Angenommen man hat eine Tabelle Foo mit der Spalte Bar mit 3 Datensaetzen X, X, Z
Wenn Foo eine Entität (Zeile einer Relation) ist und z.B. als Ergebnis einer vorangegangenen Selektion auf einer Relation, die Foo enthält, vorliegt, so hat Foo in der Spalte (Attribut) Bar nur genau einen Eintrag.

Sonst ist das, was Du meinst, wie Slater ja bereits schrieb, eine Relation, die mehrere Zeilen (Tupel der Attribute der Entitäten) enthält, deren Attribute für Bar möglicherweise x,x und y sind. Mit der Projektion der Spalte erhältst Du aber wieder eine Relation, die ausschliesslich aus dieser Spalte besteht und die zwei Einträge hat: x und y. Dies ist so, damit die Zeilen und damit die Entitäten einer Relation eindeutig ansprechbar sind.

Zur Begriffsklärung: Ich beziehe mich auf die Relationen gemäß Codd, Tabellenform und so.

Gruß, Dirk