Ja sam priucen za ovu oblast i ono sto nikad nisam naucio je da crtam ER dijagrame (oni rombovi i elipse), tako da to ne umem da nacrtam. Ja to po seljacki odmah pretvorim u tabele. Ko se razume u ER dijagrame, verovatno moze da iz tabela dodje do ER dijagrama. A ako i ne moze, bas me briga, posao odradjujem u tabelama, ne na ER shemi.
Evo dakle ovako:
Code:
CREATE TABLE CvoroviMreze
(Cvor varchar(1))
INSERT INTO CvoroviMreze VALUES ('A')
INSERT INTO CvoroviMreze VALUES ('B')
INSERT INTO CvoroviMreze VALUES ('C')
INSERT INTO CvoroviMreze VALUES ('D')
INSERT INTO CvoroviMreze VALUES ('E')
INSERT INTO CvoroviMreze VALUES ('F')
CREATE TABLE OrijentisanaMreza
(
Od varchar(1) NOT NULL
, Do varchar(1) NOT NULL
)
INSERT INTO OrijentisanaMreza VALUES ('A','B')
INSERT INTO OrijentisanaMreza VALUES ('B','C')
INSERT INTO OrijentisanaMreza VALUES ('B','D')
INSERT INTO OrijentisanaMreza VALUES ('A','D')
INSERT INTO OrijentisanaMreza VALUES ('A','E')
INSERT INTO OrijentisanaMreza VALUES ('E','D')
INSERT INTO OrijentisanaMreza VALUES ('D','C')
INSERT INTO OrijentisanaMreza VALUES ('C','F')
INSERT INTO OrijentisanaMreza VALUES ('D','F')
INSERT INTO OrijentisanaMreza VALUES ('E','F')
-- Bilo bi lepo dodati FK sa tabele Cvorovi na Od i Do
-- ali me mrzi to sad da radim
-- Takodje, ako treba, moze se preko CHECK spreciti pojava kruznog toka
-- (vecina RDBM sistema nema ovu opciju, ili imaju nesto svoje, van SQL standarda)
/* Mreza iagleda otprilike ovako:
B ------> C
A----> D --------> F
E
Dodajte sterlice od A do B, A do E, B do D, E do D, D do C, C do F i E do F
*/
--- Pregled broja dolazecih grana za sve cvorove:
SELECT
G.Cvor
, BrojDolazecihGrana = COALESCE (Z.BrojDolazecihGrana,0)
FROM CvoroviMreze AS G
LEFT JOIN
(
SELECT
Do, COUNT(*) AS BrojDolazecihGrana
FROM OrijentisanaMreza
GROUP BY Do
) AS Z
ON G.Cvor = Z.Do
Cvor BrojDolazecihGrana
---- ------------------
A 0
B 1
C 2
D 3
E 1
F 3
(6 row(s) affected)
-- Cvorovi u koje dolazi vise od jedne grane:
SELECT
Do AS Cvor, COUNT(*) AS BrojDolazecihGrana
FROM OrijentisanaMreza
GROUP BY Do
HAVING COUNT(*)>1
Cvor BrojDolazecihGrana
---- ------------------
C 2
D 3
F 3
(3 row(s) affected)
Ovde postoji jedan odnos medju elementima mreze-grafa, a to je u najjednostavnijem obliku "Cvorovi se nalaze na krajevima grana". Naplasili ste me sa definicijama relacija pa ne smem ni da upotrebim tu rec :-)
E sad kontra pitanje. Nepisano je pravilo da onaj ko postavi 'mozgalicu', a ovo lici na mozgalicu, ima spreman bar deo odgovora. Prema tome, ocekujemo da nam pokazes tvoje vidjenje resenja zadatog problema.