PO HU dbsys prüfung vom 31.01.05

  • Bsp 1a) kann man das so lösen???



    PROJEKTION
    [person_p1.name, person_p2.name,adresse,qualifikation]


    ( person_p1 NATURAL JOIN [p1.adresse=p2.adresse AND p1.qualifikation=p2.qualifikation] person_p2 )

  • versuch mich mal an den sql aufgaben:


    b)
    SELECT m.name
    FROM mitwirkende m, veranstaltung v
    GROUP BY m.name, v.art
    HAVING COUNT (v.art) >2


    c)
    SELECT titel
    FROM mitwirkende
    GROUP BY titel
    HAVING COUNT (name)=2
    AND SUM (honorar)>125


    d)
    SELECT m.titel
    FROM person p, mitwirkende m
    WHERE m.name=p.name
    GROUP BY m.titel,p.adresse
    HAVING COUNT (p.adresse)>10

  • Aufgabe 5 :
    a)
    <Angestellte>
    <Aname>Person1</Aname>


    <Kinder>
    <Name>Kind1</Name>
    <Geburtstag><Tag>17</Tag><Monat>März</Monat><Jahr>2001<Jahr></Geburtstag>
    </Kinder>


    <Kinder>
    <Name>Kind2</Name>
    <Geburtstag><Tag>27</Tag><Monat>April</Monat><Jahr>1999<Jahr></Geburtstag>
    </Kinder>


    </Angestellte>


    b) c) [EDIT] Hat sich erledigt[/EDIT]

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • Quote from syofock

    b. //Angestellte[count(Kinder)>2]/Aname



    Wenn man ausschließlich den Namen des Angestellten haben will, kann man "text()" noch hinzufügen, ist aber nicht notwendig:


    //Angestellte[count(Kinder)>2]/Aname/text()


    H2O


  • meiner meinung ist das nicht ganz richtig. würde das so machen:


    b)


    SELECT m.name
    FROM mitwirkende m, veranstaltung v
    WHERE v.titel=m.titel
    HAVING COUNT (v.art) = 2
    GROUP BY m.name, v.art


    c)


    SELECT titel
    FROM mitwirkende
    HAVING COUNT (name)=2
    AND SUM (honorar)>125
    GROUP BY titel

  • Frage zu dem query optimierungsbeispiel :


    b) hab alle selectionen vor dem Join angewendet
    c)
    Ursprungsbeispiel : Nr * Bs + Br = 1000*500+100 = 500100
    Optimiertes Beispiel : Nr * Bs + Br = 100*50+10 = 5010


    Bewirkt das Pipelining irgendwas? oder kann man das getrost ignorieren?

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • b)
    SELECT m.name
    FROM mitwirkende m, veranstaltung v
    WHERE v.titel=m.titel
    GROUP BY m.name, v.art
    HAVING COUNT (v.art) = 2


    ja stimmt bei b hab ich vergessen die beiden tabelen mitwirkende und veranstaltung zu joinen, aber das group by kommt sicher vor der having bedingung....



    hat irgendwer das query optimierungs bsp gelöst...???
    bitte posten

  • Quote from zardoz

    bsp 4 query optimierung hab ich mal a und b probiert.
    stimmt das so????? oder kann man da noch mehr vereinfachen???
    und wie berechnet man die kosten???


    die kostenberechnung hab ich 2 posts über dir gepostet .. dabei werden die datensätze und die blöcke hergenommen

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • zu aufgabe 3 hab ich auch noch eine frage


    okay ich lösch durch das delete den record 3
    -> dann bekommt rekord 0 den pointer 6 statt 3
    -> und rekord 3 bleibt leer (oder rutschen alle rekords um 1 hinauf?)
    und wie ist das beim nächsten insert, werden die am schluß angehängt, oder falls der 3 rekord noch frei ist, dort eingefügt ??

  • Quote from zardoz

    stimmt das was ich gezeichnet hab (bei bsp 4 a,b)


    ja, denke schon (zumindest hab ich dasselbe)

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • Quote from zardoz

    okay ich lösch durch das delete den record 3
    -> dann bekommt rekord 0 den pointer 6 statt 3
    -> und rekord 3 bleibt leer (oder rutschen alle rekords um 1 hinauf?)
    und wie ist das beim nächsten insert, werden die am schluß angehängt, oder falls der 3 rekord noch frei ist, dort eingefügt ??


    ja, rekord 3 bleibt leer, dann beim nächsten insert wird es wieder befüllt. (meiner meinung nach)

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • Quote from Megabit

    ja, rekord 3 bleibt leer, dann beim nächsten insert wird es wieder befüllt. (meiner meinung nach)


    also am schluß sollte die filestruktur so wie in meinem attachment aussehen, oder ??
    bin mir bei den pointer nicht sicher, ob der 6er record den pointer auf den 3er rekord bekommt....

  • Quote from zardoz

    also am schluß sollte die filestruktur so wie in meinem attachment aussehen, oder ??
    bin mir bei den pointer nicht sicher, ob der 6er record den pointer auf den 3er rekord bekommt....


    der 3er bekommt den pointer auf record 6
    der 0er bekommt den pointer auf record 3


    in record 3 gehört noch würzburg 99000 hinein


    ansonsten hab ich dasselbe

    "Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich!'" Peter Ustinov

  • Quote from Megabit

    der 3er bekommt den pointer auf record 6
    der 0er bekommt den pointer auf record 3

    in record 3 gehört noch würzburg 99000 hinein

    ansonsten hab ich dasselbe



    hab ich auch so