Professional Documents
Culture Documents
: 2+2
CREATE ASSERTION <name> CHECK (<condition>)
.
11:
(netWorth)
10,000,000 .
Studio(name, address, presC#)
MovieExec(name, address, cert#, netWorth)
Studio(name, address, presC#)
MovieExec(name, address, cert#, netWorth)
CREATE TABLE Studio (
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
presC# INT REFERENCES MovieExec(cert#)
CHECK (presC# NOT IN
(SELECT cert# FROM MovieExec
WHERE netWorth < 10000000)
)
);
Studio
MovieExec
10,000,000 .
MovieExec.
4
12:
10,000 .
Movie (title, year, length, inColor, studioName, producerc#)
CREATE ASSERTION SumLength CHECK (10000 >= ALL
(SELECT SUM (length) FROM Movie GROUP BY studioName)
);
:
CHECK (10000 >= ALL
(SELECT SUM (length) FROM Movie GROUP BY studioName));
.
.
13:
.
Vraboten (ime, prezime, mbr, brod)
Odelenie (mgr_mbr, sifra, imeod)
CREATE ASSERTION Ogranici_plata CHECK ( NOT EXISTS
(SELECT *
FROM Vraboten V, Vraboten M, Odelenie O
WHERE V.plata > M.plata AND
V.brod = O.sifra AND
O.mgr_mbr = M.mbr
)
);
CHECK
,
6
.
-- .
:
-
( ,
)
-
- .
, .
SQL
1. .
2.
,
.
3. Update
.
4. WHEN .
.
5.
-
- .
8
13: .
.
MovieExec(name, address, cert#, netWorth)
1
2 - netWorth
MovieExec
3 5 ( )
( )
6 FOR EACH ROW
.
FOR EACH STATEMENT
SQL . alias
.
7 .
.
8 10 . SQL
.
10
:
2
AFTER. BEFORE WHEN
.
.
.
UPDATE INSERT DELETE.
OF UPDATE
. INSERT DELETE
.
WHEN .
.
SQL ,
BEGIN ... END.
UPDATE
OLD ROW AS NEW ROW AS. INSERT
NEW ROW AS, DELETE OLD ROW AS.
6 FOR EACH ROW FOR EACH STATEMENT
SQL .
11
14:
500,000 . .
UPDATE ( DELETE INSERT ).
MovieExec(name, address, cert#, netWorth)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
3 5 NewStuff OldStuff
UPDATE .
6
.
7
update e 500000.
8 13 . 9 10
, 11 12 update.
13
Instead-Of SQL-99
BEFORE AFTER INSTEAD OF
.
VIEW.
VIEW ParamountMovie Movie.
CREATE VIEW ParamountMovie AS
SELECT title, year
FROM Movie
WHERE studioName = Paramount;
(1)
(2)
(3)
(4)
(5)
(6)
14
(Semistructured data - SS)
:
1. (legacy)
, 2
.
2. XML (Extensible Markup Language)
3. XML
Web.
- XML
- XML
Web.
4. XML query : Xpath, XQuery
15
E/R :
.
,
.
2 E/R
.
.
() :
.
() 2 : (
) .
SSD
,
.
SSD
.
16
/R ,
ODL , SSD .
.
SSD .
. .
(integer, string ).
. .
.
.
17
Root
movie
star
star
street
address
Carrie
Fisher
street
city
sw
name
address
name
StarsIn
mh
cf
street city
Mark
Hamil
city
Oak
starOf
Brentwood
title
Star
Wars
year
1977
starOf
Malibu
StarsIn
18
SS .
root.
.
Carrie Hisher, Maple .
cf (Carrie Fisher), mh (mark Hamil) sw (Star Wars)
.
L N M :
- N , M
. L .
- N M L N M.
.
Carrie Fisher
street city.
Stars (name, address (street, city))
Mark Hamil
street city. Stars (name, street, city).
.
19
XML
XML (Extensible Markup Language)
, HTML.
HTML
.
XML .
XML
SSD. SSD.
SSD.
XML
ID IDREF . (
SSD)
( SSD).
20
XML
XML <> </>. HTML
: <ime> </ime>.
HTML , <P>
, XML.
.
XML 2
1. well-formed XML ( )
SSD.
SSD
.
2. valid XML () DTD
.
DTD (document type definition)
XML .
21
XML
XML
XML
XML
.
STANDALONE=yes XML,
DTD .
, XML
</BODY>
22
XML
XML
.
<? XML VERSION = 1.0> STANDALONE = yes ?>
<STAR-MOVIE-DATA>
<STAR><NAME>Carrie Fisher</NAME>
<CITY>Hollywood</CITY></ADDRESS>
<ADDRESS><STREET>5 Locust</STREET>
<CITY>Malibu</CITY></ADDRESS>
</STAR>
<STAR><NAME>Mark Hamil</NAME>
<STREET>456 Oak</STREET><CITY>Brentwood</CITY>
</STAR>
<MOVIE><TITLE>Star Wars</TITLE><YEAR>1977</YEAR>
</MOVIE>
</STAR-MOVIE-DATA>
23
XML
StarsIn.
.
<STAR><NAME>Mark Hamil</NAME>
<STREET>456 Oak</STREET><CITY>Brentwood</CITY>
<MOVIE><TITLE>Star Wars</TITLE><YEAR>1977</YEAR></MOVIE>
<MOVIE><TITLE>Empire Strikes
Back</TITLE><YEAR>1980</YEAR></MOVIE>
</STAR>
24
XML
DTD (document type definitions)
DTD XML
.
DTD
. .
DTD
.
DTD
<! DOCTYPE root-tag [
<! ELEMENT element-name (components)>
more elements
]>
DTD.
.
.
25
XML
<! DOCTYPE Stars [
<! ELEMENT STARS (STAR*)>
<! ELEMENT STAR (NAME, ADDRESS+, MOVIES)>
<! ELEMENT NAME (#PCDATA)>
<! ELEMENT ADDRESS (STREET, CITY)>
<! ELEMENT STREET (#PCDATA)>
<! ELEMENT CITY (#PCDATA)>
<! ELEMENT MOVIES (MOVIE*)>
<! ELEMENT MOVIE (TITLE, YEAR)>
<! ELEMENT TITLE (#PCDATA)>
<! ELEMENT YEAR (#PCDATA)>
]>
26
XML
Stars.
<STARS> </STARS> STAR .
*
STAR 3 : NAME, ADDRESS
MOVIES. .
.
+
NAME #PCDATA (parsed character data)
#PCDATA
ADDRESS .
MOVIES MOVIE .
MOVIE ,
.
?
I OR. (#PCDATA I (STREET,CITY))
a
.
27
<STARS>
<STAR><NAME>Carrie Fisher</NAME>
<ADDRESS><STREET>123 Maple St.</STREET>
<CITY>Hollywood</CITY></ADDRESS>
<ADDRESS><STREET>5 Locust</STREET>
<CITY>Malibu</CITY></ADDRESS>
<MOVIES><MOVIE><TITLE>Star Wars</TITLE>
<YEAR>1977</YEAR></MOVIE>
<MOVIE><TITLE>Empire Strikes Back</TITLE>
<YEAR>1980</YEAR></MOVIE>
<MOVIE><TITLE>Return of the Jedi</TITLE>
<YEAR>1983</YEAR></MOVIE>
</MOVIES>
</STAR>
<STAR><NAME>Mark Hamil</NAME>
<ADDRESS><STREET>456 Oak</STREET>
<CITY>Brentwood</CITY></ADDRESS>
<MOVIES><MOVIE><TITLE>Star Wars</TITLE>
<YEAR>1977</YEAR></MOVIE>
<MOVIE><TITLE>Empire Strikes Back</TITLE>
<YEAR>1980</YEAR></MOVIE>
<MOVIE><TITLE>Return of the Jedi</TITLE>
<YEAR>1983</YEAR></MOVIE>
</MOVIES>
</STAR>
</STARS>
DTD.
28
XML
DTD
- DTD
- DTD
.
<? XML VERSION = 1.0 STANDALONE = no ?>
<! DOCTYPE Stars SYSTEM star.dtd>
STANDALONE no.
DTD !DOCTYPE
SYSTEM.
!ATTLIST
ID,
<E> </E>.
IDREF
IDs.
29
<STARS-MOVIES>
<STAR starId = cf starredIn = sw, esb, rj >
<NAME>Carrie Fisher</NAME>
<ADDRESS><STREET>123 Maple St.</STREET>
<CITY>Hollywood</CITY></ADDRESS>
<ADDRESS><STREET>5 Locust</STREET>
<CITY>Malibu</CITY></ADDRESS>
</STAR>
<STAR starId = mh starredIn = sw, esb, rj >
<NAME>Mark Hamil</NAME>
<ADDRESS><STREET>456 Oak</STREET>
<CITY>Brentwood</CITY></ADDRESS>
</STAR>
<MOVIE movieId = sw starsOf = cf, mh >
<TITLE>Star Wars</TITLE>
<YEAR>1977</YEAR>
</MOVIE>
<MOVIE movieId = esb starsOf = cf, mh >
<TITLE>Empire Strikes Back</TITLE>
<YEAR>1980</YEAR>
</MOVIE>
<MOVIE movieId = rj starsOf = cf, mh >
<TITLE>Return of the Jedi</TITLE>
<YEAR>1983</YEAR>
</MOVIE>
</STARS-MOVIES>
DTD ID,
IDREF !ATTLIST
31