All pastes #272900 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-09 11:55 UTC
rendered paste body
/* Aufgabe 1:
 * d)
 */

SELECT sub.* FROM stratman.hierarchy sub,
(SELECT * FROM stratman.hierarchy WHERE pre=$x$) AS start
WHERE sub.pre < start.pre AND start.pre <= (sub.pre + sub.size) ORDER BY pre DESC;

/*
 * e)
 */
 
SELECT sub1.* FROM stratman.hierarchy sub1,
(SELECT * FROM stratman.hierarchy WHERE pre=$x$) AS start1
WHERE sub1.pre > start1.pre AND sub1.pre <= (start1.pre + start1.size) INTERSECT
SELECT sub2.* FROM stratman.hierarchy sub2,
(SELECT * FROM stratman.hierarchy WHERE pre=$y$) AS start2
WHERE sub2.pre > start2.pre AND sub2.pre <= (start2.pre + start2.size);

/*
 * f)
 */

SELECT sub1.* FROM stratman.hierarchy sub1,
(SELECT * FROM stratman.hierarchy WHERE pre=$x$) AS start1
WHERE sub1.pre < start1.pre AND start1.pre <= (sub1.pre + sub1.size) INTERSECT
SELECT sub2.* FROM stratman.hierarchy sub2,
(SELECT * FROM stratman.hierarchy WHERE pre=$y$) AS start2
WHERE sub2.pre < start2.pre AND start2.pre <= (sub2.pre + sub2.size) ORDER BY pre DESC LIMIT 1;

/*
 * g)
 */

SELECT sub.* FROM stratman.hierarchy as sub,
(SELECT * FROM stratman.hierarchy WHERE pre=$x$) AS start
WHERE sub.pre > start.pre AND sub.pre <= (start.pre+start.size);

/*
 * h)
 */

SELECT level, count(*) AS count_nodes FROM stratman.hierarchy
GROUP BY level ORDER BY level;

/*
 * i)
 */

SELECT sub.* FROM hierarchy AS sub
WHERE sub.size = 0 AND sub.level < (SELECT MAX(sub2.level) FROM hierarchy AS sub2);

/*
 * j)
 */

/*
 * k)
 */

SELECT sub.size+1 AS size
FROM stratman.hierarchy sub
WHERE sub.pre = 1;

/*
 * l)
 */

Ja es gibt Probeleme, denn wenn man eine Node irgendwo in der Mitte einfuegt 
(INSERTION), dann aendert sich die size des subtrees. Es muss also die size 
aller parent Nodes geupdatet werden. Ausserdem aendert sich das pre aller 
nachfolgenden Nodes in der preorder Folge.

Fuer DELETE gilt dasselbe, jedoch koennte man sagen das man einfach die preorder 
Folge beibehaelt, denn das aendert nichts. Jedoch muss auch die size der parent 
Nodes geupdatet werden.

UPDATE sollte nur auf Name zugelassen werden, ausser es kommt von einer INSERTION
oder DELETE Anweisung, denn durch pre, level und size ist die Struktur des Baumes 
vorgegeben.

/*
 * m)
 */

Operation auf der Baumstruktur werden nur durch aufwendige Joins moeglich, da ja 
jedes Level der Baumstruktur in einer neuen Tabelle gespeichert werden.

/* Aufgabe 2:
 * a)
 */

GRANT SELECT ON stratman.hierarchy TO haveman;

/*
 * b)
 */

GRANT INSERT, UPDATE ON stratman.hierarchy TO haveman;

/*
 * c)
 */

GRANT CREATE ON SCHEMA stratman TO haveman;

/*
 * d) Noch nicht korrekt!
 */

ALTER TABLE stratman.hierarchy OWNER TO haveman;

/*
 * e)
 */

ALTER TABLE stratman.hierarchy OWNER TO stratman;
REVOKE ALL ON stratman.hierarchy FROM haveman;
REVOKE CREATE ON SCHEMA stratman FROM haveman;

/*
 * f) Noch nicht korrekt!
 */

GRANT SELECT ON "address_view" TO PUBLIC WITH GRANT OPTION;

/*
 * g) Noch nicht korrekt!
 */

REVOKE GRANT OPTION ON "address_view" FROM PUBLIC CASCADE;

/*
 * h)
 */

GRANT USAGE ON SCHEMA stratman TO haveman;

/*
 * i) NOCH nicht korrekt!
 */

REVOKE SELECT ON "address_view" FROM PUBLIC;

/*
 * j)
 */



/*
 * k) Nicht korrekt!
 */

REVOKE INSERT, UPDATE, DELETE ON SCHEMA stratman.genres FROM stratman;

/*
 * l)
 */

GRANT SELECT ON "address_view" TO GROUP infosys;