Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Relationsalgebra

Empfohlene Antworten

Veröffentlicht

guten tag @all,

ich habe ein paar probleme eine relation zu erstellen.

ich habe folgende aufgabe.

Teilnehmer(TNr,TBesch)

Erforder(TNr,KNr)

Besizt(KNr,MatNr)

Kenntnisse(Knr, KBeschreibung)

a) Welche Studierende haben Kenntnisse in Java und Datenbanken.

Lösung:

Projektion MatrikelNr(Selection(KBeschreibung ='Java'(K verbund B))vereinigt((Projektion MatrikelNr(Selection(KBeschreibung ='Java'(K verbund B))

Mein Problem ist das ich nicht weiss wie man auf diese Lösung kommt. Wie muss ich vorgehen?

Vielleicht könnt ihr mir ja sagen was ihr als erstes in betracht zieht bei der lösung.

Also klar ist mit schon das ich eine Selektion (Spalte) benötige um nach Java und Datenbanken zu suchen.

Aber woher weiss ich das ich bei der projektion nur die Matrikelnummer auswähle und außerdem weiss ich auch nicht wie ich auf die reihenfolge komme.

oh man das ist echt nicht einfach.

Ich hoffe es kann mir jemand helfen

vielen dank

grins

Aber woher weiss ich das ich bei der projektion nur die Matrikelnummer auswähle und außerdem weiss ich auch nicht wie ich auf die reihenfolge komme.

oh man das ist echt nicht einfach.

die matrikelnummer macht den studierenden eindeutig, deshalb brauchst du laut fragestellung nicht mehr als das, würde nach den wohnorten der studenten mit java und DB kenntnissen gefragt, wäre das anders.

weiß jetzt nich was du mit reihenfolge meinst, ob du nun erst die mit java und dann die mit datenbanken wählst, ist für das ergebnis in deisem fall irrelevant

hallo _n4p_

erstmal danke für deine antwort.

also mit reihenfolge ist mir folgendes nicht ganz klar

MatrikelNr(Selection(KBeschreibung ='Java'(K verbund B))

warum muss ich zuerst die selection schreiben und denn den verbund kann man das auch tauschen.

Oder warum steht der verbund nicht vor der matriklNr ?

Kannst du mir vielleicht erklären wie ich das lesen muss?

Wenn du so eine aufgabe bekommst wie gehst du bei der lösung vor.

über hilfe wär ich sehr glücklich

vielen dank

grins

K verbund B ist die "zusammengesetzte" tabelle aus Kenntnisse und Besitzt

in besitzt steht die information welche student welche kenntnisse besitzt

in Kenntnisse steht der "name" der kenntniss.

das mich interessiert welcher student java kann muss ich die tabellen zusammenführen.

leserichting, falls man das so nennen kann, ist von innen nach aussen.

vorgehen:

schauen wo die benötigten informationen zu finden sind

tabellen sinnvoll verknüpfen

auswahl der gesuchten datensätze

anzeige der ausgewählten sätze

(zeige(was(woher)))

hey

das ging ja schnell dankeschön.

ich werd es gleich nochmal versuchen.

Ich habe leider nicht viele bespiele zum üben.

Ich bin neuling in diesem bereichum es zu testen wie schreibt man denn den Verbund als SQL anweisung

ich habe folgende Syntax verwendet

Anweisung:

SELECT *

FROM K

NATURAL JOIN B

ON (Bedingung);

ist das richtig?

ah das hatte mich auch gewundert,

denn ich habe das selbe ergbniss erziehlt

durch die abfrage mit inner Join.

Hab vielen dank

*grins*

das liegt daran das natural ein "spezialisiertes" inner join ist ^^

natural joins vergleichen alle spalten mit gleichem namen in beiden tabellen, in deinem fall die kenntniss nummer. da es sonst keine gleichnamigen spalten gibt ist es damit erledigt

SELECT * FROM a INNER JOIN b ON (a.col1 = b.col1 AND a.col5 = b.col5)

tut unter der vorausetzung das nur die spalten col1 und col5 in den tabellen a und b den gleichen namen haben (col1 und col5 ^^), das gleiche wie

SELECT * FROM a NATURAL JOIN b

in deinem fall bringt auch ein

SELECT B.MatNr FROM B LEFT JOIN K ON (B.Knr = K.Knr) WHERE K.KBeschreibung IN ('Java','Datenbanken')

das gleiche ergebnis, auch wenn es etwas anderes tut als NATURAL JOIN

was mir aber grad auffällt, das liefert eigentlich nicht das gesuchte ergebniss ^^

das liefert studenten die java ODER datenbanken können, die die beides können sind dann doppelt in der liste ^^

SELECT B.MatNr FROM B NATURAL JOIN K WHERE K.KBeschreibung IN ('Java','Datenbanken') GROUP BY B.MatNr HAVING COUNT(B.Knr) = 2

das wären dann die die Java UND Datenbanken haben

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.