You are on page 1of 97

()

..

2006 .


.................................................................................................................................................. 4
1 ................................................................................................................... 6
1.1 ................................................................................................................................... 6
1.2 ............................................................................. 8
1.3 .................................................................................................................... 10
1.4 1............................................................................................. 12
2 .............................................................................................................................12
2.1. ................................................................................................... 12
2.2 , ............................. 14
2.2.1 .................................................................................................................... 14
2.2.2 .................................................................................................... 14
2.2.3 ........................................................................................................ 15
2.3 ................................................................................................................... 15
2.3.1. ......................................................................................... 15
2.4 ................................................................................................................................ 16
2.4.1 ......................................................................................................16
2.4.2 .................................................................................................... 17
2.4.3 ........................................................................................................ 17
2.5 ............................................................................... 17
2.5.1 , .........................................19
2.5.2 .............................................. 21
2.5.3 ................................................................................................................... 22
2.6 2..................................................................... 24
3 ..................................................................... 24
3.1 .............................................................................. 24
3.1.1. ............................................................................................. 24
3.1.2. ......................................................................................................... 25
3.1.3 , ............................................................................... 25
3.1.4 , , ....................................................................... 25
3.2 ....................................................... 27
3.2.1 -.............................................................................. 27
3.2.2 ....................................................................... 27
3.2.3 ................................................................................ 27
3.2.4 ........................................................................................... 27
3.3. .............................................................28
3.4 (3VL)...............................................................................................................29
3.5 ..............................................................................................30
3.6 .............................................................................. 39
3.7 .................................................................................................................. 40
III.7 3................................................................... 41
4 SQL............................................................................................... 42
4.1 SQL.................................................................................................... 42
4.2 SQL...................................................................................................................... 43
4.3 SELECT....................................................................... 45
4.3.1 ..................................................................................................... 45
4.3.2. ......................................................................................... 47
4.3.3 ..................................................... 49
4.3.4 .................................................................... 51
4.3.5 ............................................................................. 54
4.3.6 SELECT.................................................................................................54
4.4 .......................................................................................... 55
4

4.4.1 DELETE......................................................................................55
4.4.2 INSERT......................................................................................... 55
4.4.3 UPDATE................................................................................. 56
4.5 ...........................................................................56
4.5.1 ................................................................. 56
4.5.2 CREATE VIEW....................................................... 58
4.6 , ................................................... 59
4.6.1 .................................................................... 59
4.6.2 ................................................................................... 60
4.6.3 ........................................................................ 63
4.7 4..................................................................... 64
5 ...................................................................................................... 64
5.1 ..................... 66
5.2 ......................... 71
5.2.1 ................................................. 71
5.2.2. Entity-Relationship......................................................................72
5.2.3 ER-................................................................................ 74
5.3 .................................................................. 77
5.4 5..................................................................... 78
6 ................................................................... 79
6.1 ...............................................................................................................79
6.2 ...................................................................................................... 82
6.2.1 OLTP-........................................................................................................................... 82
6.2.2 OLAP -......................................................................................................................... 82
6.2.3 .............................................................................................................. 83
6.3 ........................................................................................................................... 85
6.4 6..................................................................86
7 , ............................................. 86
7.2 ................................................................................................ 89
7.2.1 ........................................................................................... 90
7.2.2 ( STAR)............................................................. 93
7.2.3 ....................................................................................... 94
7.3 DBS.............................................................................. 96
7.4 7.................................................................... 98
.................................................................................................................................................. 99

1
1.1
,
, . ( ,
). .
,
, (, ).
(, , , ) ()
,
. " 128". "128"
, " " .
. , " "
( 1.1), ( )
. (
).
1.1

138

2_4_7

21.12

0.52

-86

115.00

57

3_6

7.20

9.25

-154

92.00

1234

2_6

22.40

23.50

-134

73.50

242

1 7

14.10

16.15

-154

57.00

86

2_3_5

10.50

13.06

-86

78.50

137

1_3_6

15.17

18.44

-86

115.00

241

1 7

9.05

11.05

-154

57.00

577

1_3_5

21.53

22.57

-24

21.50

78

3_6

18.25

20.12

-134

44.00

578

2_4_6

6.30

7.37

-24

21.50

( ,
, )
.
.
( "", "21.50" ).
,
:
1.
;
2. .
,
. ,
"", ,
, . ,

6

.

. ,

, .
(, , , )
, .

( , ..).
: ,
, ,
, .
. ( , ., , 1980) :
" ( ) ,
. ,
, .
, ,
,
. , -
, :
, ,
, ".

60-
, " " ().
,
. ,
, , " " ().
, , (. 1.1)
, ( ""). ,
"" ,
:

(_

_
(8)
_ (24)
_

_ (24)
_
_
(8)
_ );
"".
, ).

_, _, _

_ = ''
_ = ''
_ > 17;
"-" ,
(_)

_ = ''
7

_ = '';
"-".
:

_ ;
.
: ,
,
.
1.2
:
I. , 70- ,
- ,
,
. :
a. , ,
- .
b. - .

.
.
c. .
, ,
.
d.
, -
.
e.
"" . ,
.
II. 80-
, .
DB2,
INGRES, ORACLE, Informix .

,
dBASE, FoxBASE, FoxPro, Paradox, Clipper, Clarion, Access.
,
.
( - )
, , ,

.
. ,

:); ;
, , ;
(); (); ;
; .
, .

.
, ,
8

, ,
.

.
,
, ,

III. ( )

. , -
.
, ; ;
..
,
, :
- . :
( )
; ;
; .
Postgres.
Postgres :
;
, .
- , .
: , ,
.
.
- Genesis Exodus.

. ,
( Exodus)
. Exodus
E,
++, .
""
, ,

- , .
. :

. ,
-,
. (
) ,
. , :
, , ,

. . ,
(
).
- - . -
() . 1980-.
.
9


- . 25 .
GemStone Servio, ONTOS Ontos, ObjectStore
Object Design, O2, ORION, Iris. ,
, Oracle, Microsoft, Borland, Informix,
- .
80- , ,
; ,
.

:
1. , , .
, , .
Web : ,
, , - .
2. .
(DataWarehouse) (data mart)
,
( ETL - extraction, transfotamation, loading).

, .
. ,

, .
, , " ".
:
; ;
..
3. . , (,
, ..) .
, ,
, .
1.3

, 1982 .,
:
() - ,
().
() ,
. ,
, .
() ,
, , , - ,

.
() ,
,
.
, , .
:
;
;
10

;
;
;
, , , :
- , , ;
- ;
- ;
- ;
- ;
-
;
, ,
() :
;
;
,
( );
()
;

.

. ,
( ,
). , ,
( )
(). ,
, .
,
, ,
,
. , ,
, , , ,
, (. 1.1).
-
. ,
- ,
. ,
. 1.1, -.
,
.
.
,
. ,
, .
(, )
.
()
, .
( ), ,
, .
( "" ),
. ,
11

. 1.1.
1.4 1
1. ?
2. ?
3. ?
4. ?
5. ?
2
2.1.
- , .
.2.1
.

, .
.
.
"-" (ER - Entity Relationship), .
-
, .
, ,
.
,
.
, ,
12

- SCML, HTML XML



.
- , .

.
(), .
,
. ,
, , ,
.
, .

- (ER)

. 2.1.
,
, .
.
. .
, ,

. ,
,
.
.
, "" . ""
"-", ..
" ",
, .
,
, ,
..

. 60-
,
.
, ,
.
13

,
3.
:
1. ;
2. , .
, ,
,
;
3. :
.
, ,
() .
,
CODASYL (The Conference on Data Systems Languages): , , ,
.
() - ,
,
. .
() - ,
. .
- . ,
. ,
.
- ,
, .
.
2.2 ,
Datacom/DB
Applied Data Research, Inc. (ADR), IBM,
Adabas Software AG.

,
().
2.2.1
, , ,
, . :
- ;
- (
, , Datacom/DB).
- ,
. ,
.
2.2.2
:
1. , , :
(,
);
,
.
2.
:
LOCATE FIRST - T ;
14

;
LOCATE FIRST WITH SEARCH KEY EQUAL - T
K; ;
LOCATE NEXT - ,
; ;
RETRIVE - ;
UPDATE - ;
DELETE - ;
STORE - ; .
2.2.3
.
,
.
2.3
( ) Information
Management System (IMS) IBM. 1968 .
2.3.1.
()
(, . .).
.
; , .
- , .
, (
) :
, ;
() ;
, - ,
() , -1 ;

;
;
,
(. 2. 2).
.
.
2. 3.
1 .

2 .

3 .

4 .

2.2 .
- -, -.
15

5 .


- ,


- , - , -


- ,
-

- , - - - -

- ,


- - - ,
/ , -

2.3
2.3.2

:
;
;
(, -
);
;
;
.
2.3.3
.
: .
2.4
Integrated Database Management System (IDMS)
Cullinet Software, Inc. Data Base Task Group
(DBTG) (Conference on Data Systems Languages CODASYL). DBTG 1971 ., 70- ,
IDMS.
2.4.1
.
- ;
.
,
, .
.2.4.
, .
. ,
, .
,
. , ,
.
,
.
16

.
.

2.4
2.4.2
:
( );
(
310);
( );
( );
;
;
;
;
;
..
2.4.3
, (
).
:
;
;
( ).
:
;
;
;
.
2.5

, .
,
. ,
,
, .

.
:
I. ?
.
, .
17

.
II. , ,
?
III. ,
, .
, :
1. .
(k)
k=z1/z ,
z1 , 1 ; z - , 1 .
k , ,
;
2. ;
3. ( );
4. (, ,
);
5. .
( ):
1. .
,
. .
2. . ,
.
.
.
3. - .

.
.
4. . ,
. .
,
. , , .
5. () , .
6. -.

(), .
,
,
.
, .

, ,
.

. ,
,
, .
, . . 2.5
.

18

- -

. 2.5.
2.5.1 ,
(, )
.
:
;
.
, (,
), .
(NZ).
K
:
BA+(K-1)*LZ+1,
BA , LZ .
,
.
, , ,
, .
,
( ) NZ=F(K).
-
,
-.

(-), .
.
, , ,
. -
. (
) .
, - ( ), ,
.
. ,
, -
- .
- ( ).
.
-, ,
.
19

, .
-,
,
.
,
.
: (-)
(-) .
:


.
,
. ,
.
,
:

.
, ,
. .

B-. B- -
. ,
. -
. ,
, ,
, ,
.
,
,
. ,
. ,
, .
, .
.
,
.
, .
,
. .
.
:
_1. ;
_2. ,
;
_3.
.

.
. ,
,
.

20

.
,
.
:

-
-- , F1 F2,
, F1
F2. F1 :

- F2,
,
F1
F2 :


2.5.2
:
- ;
- ,
() ;
,
;
,
(, ).
(Oracle, IBM DB2, Microsoft SQL Server,
Sybase Informix .) .
, , .
( ). (block)
(page) .
(Oracle) .

/ (
),
( ) .
,
. (16, 32 64 )
: , -, ..
(2 4 ) , ,
. ,
.
, ,
(extent), .. ().
,
. ( ,
, ) ,
. Oracle, IBM, Informix
, Sybase , 8 .
,
,
. Informix
, (
) , ( chunk,
). .
.
.
21

.
, . . .
, . 2.6.

()

2.6
: ;
; ,
; ; (
0); ( 0); .
. 4- , 2
2 .
, RID
, 4
. ,
.
, . , ,
-,
.
MS SQL SERVER 6.5 2 Kb, 32 .
2.5.3

2.7
:
1. ,
().
2. ,
,
().
22

3.
( ).
,
.
,
.
, /,
.
,
.
.
.
-
.
. .
:
();
;
;
;
;
-;
(
).
.
(file ID), .
() (record ID).
:
1. r f;
2. r f;
3. r f;
4. r f;
5. f;
6. f.
, .
. , , .
, :
2. P S;
3. P S;
4. S (
S);
5. P S ( ).
2.1 , (1,
2, 3, 4, 5); (1, 2, 3, 4, 5, 6); (1, 2, 3, 4, 5, 6).
:
0
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
12
13
2 14
15
16
17
1
3
4
5
6
18
19

23

0 : ;
; .
.
6. ,
(18), .
2. , 2
.
7. ,
(2), .
,
.
.

RID (

). ,
.
- ).
, ,
-.
2.6 2
1. ?
2. .
3. () ?
4. .
5. ?
6. ?
7. () ?
8. ?
9. .
10. - ?
11. ? .
12. .
13. ?
14. 7 (
2.1).
15. 1 ( 2.1).
3
3.1
( relation ) .
70- .
, , , , , , .
,
,
. .
,
(. 3.1).
3.1.1.

.
24

: , , ,
( ", "" (, , ).

( , ,
Ingres/Postgres). : ,
"".
3.1.2.

,
.
, ,
, .
"", .
, "" ,
, ( ,
).
:
, .
" " " " ,
. , ,
Oracle V.7 .
3.1.3 ,
- { ( ,
)}. "" -
. , 4-.
,
( , , ,

).
( ) -
3.1.4 , ,
, , - { }, ,
. "" (
, ). "" , ..
, "" . -
.
- , . ,
, "-" "-",
, - .
,
. ,
.
.
-.
.
. :
.
.
,
, - -;
25

3.1
. " ", "
".
, .
.
, ,
"" , 3.1
3.1

""

()

(-)


26

- ,
.
, .
,
. . ,
.
, (
) ,
.
3.2
,
.
3.2.1 -
, -,
.
.
, .
.
"", ..
,
, - .
.
3.2.2

- .

.
, , , SQL

. , , ,
.
3.2.3
,
{ }.
. , ,
,
.
,
,
.
3.2.4
.
, ..
(). ,
,
.
. (
),
.
27

3.3.
, -,
., ( )
. ,
: , .
,
, , n- .
,
.

- .
(
), -
.

, .
.
.
,
, .. , .
, ,
.
.
,
.
, ,
_ ( ), _ ( ) _
( ). _ (
), _ ( ) _ ( ).
:
( _, _ ) - _ ( _,
_, _, __ ) - _.
, __ ,
, ,
.
__
_ .
, ,
(..
). , , ,
, .
, ,
, , ,
, ,
(.. ).
, ,
.
.

.
.
, (
) ,
28

.
, ?
, :
1. , (..
,
);
2. , ,
;
3. , , ,
, .

. ,
.
3.4 (3VL)
2 (.3.3) .
, .
,
null-. Null- - , , , ,
, .
, , ,
, .
, null-,
, - ,
, " " ,
. ( )
.
null- .

.
, null-.
,
.
null-,
.
, null-.
.. null- , ,
(, , ..)
, .. null. , , , ,
, 10 .
, null-, ,
,
null,
null. ,
(three-valued logic, 3VL), T - F - ,
U - . U - , null-.
:
AND F T

F F

F T

F U

OR

F T U
29

F T U

T T T

U T U

NOT
F

3.2 AND, OR, NOT


.
1. Null- . , null = null
, .
!
2. , null- ! ,
null null , ! ,

!
3.
. ,
( , ).
. , ,
.
3.5
, , ,

.

, .
SQL (Structured Query Language). SQL
,
,
, . ,
,
(, , ), ..
.
SQL.
.
,
, . ,

:
, ..
, :
,
.
. ,
,
. ,
30

,
. .
,
.
, . ,
, .
- :




:
(, )



, ..
.
()
, .. "" "" (. 3.3)

. 3.3.
, ,
,
, ()
. ,
,
:
1. .
, , -.


, , , , ,
, .
:
, , . ,
, ,
31

.
3.1 :
A

1

1000

2000

3000

2500

1000
3000

A UNION B :

1000

2000

3000

2500

2. . ,
, -.
, , ,
, .
:
3.2 ,
A INTERSECT B :

1

1000

3000

3. . , ,
- , , ,
. ()
, , ,
, .
:
3.3 , A
MINUS B :

2

2000

4. .

, ()
32

,
, ,

.
:
.

, .. .
. ,
.
. ,
.
3.4 :
A ()

1

B ()

1

A TIMES B :

. , ..
, .
.
, .
5. (, ).
, -,
. (, )

33

, , , ,

.

,
()
.


, - (
..), - .
:
,
3.5 :
A

1

1000

2000

3000

:

1

1000

2000

- ,
. , " "
.
6. .
,
-.
,

,
,

, , .

, ,
,

:
. " " ,
.
3.6 ,
:
A ()

34

.
,
.

() . ,
.

,
.
, ,
.
:
;

- (-);
;
.
.
.
-.

,

,
- (
..).
-




.
3.7 ,
. .
, ,
( ,
,
,
( ) ).
A ()

X
( )
1

B ()
Y

(
)
1

2
35

" ?"

: " "

X
(
)

Y
(
)

- ,

. :
3.8
,

, ,
( ):
P ()

PNUM
PNAME
1

D ()

DNUM
DNAME
1

PD ()



PNUM
DNUM VOLUME
1

100

200

300

150

250
36

1000

. , .. ,
, -.
" "

PNUM1
PNAME

PNUM2

DNUM

VOLUME

100

200

300

150

250

1000

- ,
( !),
. PNUM1
PNUM2 . ,
, .
.

,
(..
).

,
,

.
, :
. ,
. .
.
:
1.
2.
3. ,
4. ,
5. ,
3.9 " ",

( ,
):
P JOIN PD JOIN D

37


PNUM

PNAME

DNUM

DNAME

VOLUME

100

200

300

150

250

1000

8. . - .
,
, (
) .

, ,

,
.
.
:
. , ,
"" - " ?".
3.10 , , "
?".

:
X=PD[PNUM,DNUM]


PNUM
DNUM
1


( -):
Y=D[DNUM]

DNUM
1
38

2
3

, :
X DEVIDEBY Y

PNUM
1
, 1 .
9. . ,
, .
10. .
.
3.6
-
,
.
(, ,
).
-.
-,
.
- (
), , , ,
, .. .
, .
:
,
. , ,
,
.
,
,
, . , "" , ..
, ,

.
, ,
, ,
. , .
,
, .
.
,
. -,
, -, ,
. ,
,
.
39

- ,
. . ., OP
, (A OP B) OP C = A (B OP C), ,
A OP B OP C (A, B C - , ,
). ,
, , .. A OP B = B OP A.
-
.
.
. :
,
:
, ,
.
, . ,
.

3.7
3.11 , ,
(_, _, _, _) (_, _,
_), ,
50.
,
, , , :
_ =
_;
_ > 50;
_, _.
,
.
, ,
, , , :
_ _ ,
_ _ 50.
,
. ,
.
, , ..
, - ( ),
.
.

.

, , .

.
.
, ..
.
40

,
, .. .
,
, QUEL,
Ingres.
RANGE. , ,
,
,
RANGE IS
,
.
( ,
, ,
). , , _
, ._.
(WFF - Well-Formed Formula) ,
. WFF
(comparison), (
). ,
"._ = 140" . ,
WFF, WFF, , .
WFF NOT, AND, OR IF ...
THEN. , form - WFF, comp - , NOT form, comp AND form, comp OR
form IF comp THEN form WFF.
, WFF . form WFF,
var, EXISTS var (form) FORALL var (form)
WFF. , WFF, ,
.
WFF EXISTS var (form) FORALL var (form), var .
WFF: EXISTS 2 (1. _> 2. _) , 1 2
. WFF 1 true
, (
2) , _ .
WFF: FORALL 2 (1. _> 2. _)
WFF 1 true ,
( 2)
_ .
III.7 3
1. ?
2. ?
3. ?
4. ?
5. , , ?
6. ,
.
7. ?
8. ?
9. (,
)?
10. , ?
11. ?
12. -.
13. ?
41

14. ?
15.
3.11 , 10000
16. ( 3.11 )
, 10000 .
4 SQL
4.1 SQL
,

() .
,
,
.
, () ,
.
,

80- :
1. ,
, (JOIN - , INTERSECT - ,
SUBTRACT - ..).
2. ,
.
, , IBM ( ISBL, SQL, QBE)
(PIQUE, QUEL). QUEL INGRES (Interactive Graphics and Retrieval
System), 70- .
.
QBE (Query-By-Example - ) SQL,
. SQL
1974 IBM System R.
- SQL/DS (1981 ) DB2 (1983
) - - . 1987
SQL , 1992
.
SQL (Structured Query Language).
SQL 1989 . (SQL/89 SQL1).
ANSI ( ) ISO (
). SQL 1992 . (
- SQL (1992) (International Standart
Database Language SQL), - SQL/92, SQL-92, SQL2). ,
, 600 .
. SQL/99 SQL3, SQL.
, Oracle8 Oracle DB2 IBM.
SQL . ,
"", SQL: SQL*Plus
Oracle; Transact-SQL Microsoft SQL Server .
.. ,
,
. .
, , SQL
. , ,
42

. , , -
SQL. ,
.
SQL , ,
, "" "" (. 3.1) SQL,
, . ,
,
SQL . .
SQL -. ,
SQL.
SQL: . SQL
.
SQL SQL, ,
( Visual Basic Pascal).
SQL
. SQL - .
, SQL, ,
.
:
I. ,
( ). : Oracle (Oracle
Corp.), Ingres (Computer Associates International), Sybase SQLserver (Sybase Inc.).
II. ,
.
: PostgreSQL ( PostgreSQL), my SQL (T.C.X. DataKonsult AB), Microsoft
SQL Server (Microsoft).
III. , ,
, ,
. : Access,
Microsoft Office ; Visual FoxPro.
-.
4.2 SQL
SQL ,
. ( SQL):
DDL (Data Definition Language) - :
CREATE SCHEMA - ;
DROP SHEMA - ;
CREATE TABLE - ;
ALTER TABLE - ;
DROP TABLE - ;
CREATE DOMAIN - ;
ALTER DOMAIN - ;
DROP DOMAIN - ;
CREATE INDEX - ;
DROP INDEX - ;
CREATE COLLATION - ;
DROP COLLATION - ;
CREATE VIEW - ;
DROP VIEW - .
DML (Data Manipulation Language) - :
SELECT - ;
INSERT - ;
UPDATE - ;
43

DELETE - ;
DCL (Data Control Language) - , :
CREATE ASSERTION - ;
DROP ASSERTION - ;
COMMIT - ;
ROLLBACK - .
GRANT -
;
REVOKE - .
, ,
, SQL, SQL.
(DML).
SQL/89 ( 4.1):
4.1 SQL/89
SQL/89

CHARACTER(n) CHAR(n)
n
NUMERIC[(n,m)], DECIMA[(n,m)] , n ;
DEC[(n,m)]
m
INTEGER INT

SMALLINT

REAL

FLOAT[(n)]

, n ,

DOUBLE PRECISION


SQL/92 :
VARCHAR(n) ;
BIT(n) ;
DATE ;
INTERVAL .
, SQL
, , TIME, INTERVAL, MONEY.
SQL/92,
.
SQL
, .
: + | - | * | /
SQL
( . [3]).
( 4.1-4.4). : SNUM;
SNAME; , , - CITY; ,
, - COMM. : CNUM; CNAME; ,
, - CITY; , , - SNUM.
( ) : ONUM; AMT;
ODATE; , , - CNUM;
, , - SNUM. :
;
.
4.2 -
SNUM
SNAME
CITY
COMM
1001

0.12

44

1002

1004

1007

1003

4.3 -
CNUM
CNAME
CITY
2001

2002

2003

2004

2006

2008

2007

4.4 -
ONUM
AMT
ODATE
3001
18.67
10/03/2003
3003
767.19
10/03/2003
3002
1900.10
10/03/2003
3005
5160.45
10/03/2003
3006
1098.16
10/03/2003
3009
1713.23
10/04/2003
3007
75.76
10/04/2003
3008
4723.00
10/05/2003
3009
1309.95
10/06/2003
3011
9891.88
10/06/2003

RATING
100
200
200
300
100
300
100
SNUM
2008
2001
2007
2003
2008
2002
2004
2006
2004
2006

0.13
0.11
0.15
0.10

SNUM
1001
1003
1002
1002
1001
1007
1004
SNUM
1007
1001
1004
1002
1007
1003
1002
1001
1002
1001

4.3 SELECT
4.3.1
SELECT
SQL. , .. , ,
- .
SELECT , .
SELECT . ,
SELECT .

SELECT. SELECT ,
, ,
.
. SQL ,
;. SQL
.
SELECT, :
SELECT <> FROM < >;
4.1
SELECT snum, sname, city, comm FROM ;
4.2 .
4.2
SELECT *
FROM ;
(*) ,
FROM. ,
.
4.3
(
): SELECT sname, comm FROM ;
45

.
4.4
(
): SELECT odate, snum, onum, amt
FROM ;
.
4.5 :
SELECT snum
FROM ;
4.4,
.
DISTINCT (, ), :
4.6
:
SELECT DISTINCT snum FROM ;
SELECT .

WHERE: SELECT <> FROM < > WHERE <>;
WHERE :
: = (), <> ( ), < (), <= ( ), >
(), > = ( );
: OR, NOT, AND;
: IN, BETWEEN . AND, LIKE, IS NULL.
4.7 :
SELECT sname, city FROM WHERE city = ;
4.8 ()
200: SELECT *
FROM
WHERE city = ' AND rating > 200;
:
CNUM
CNAME
CITY
RATING
SNUM
2008

300
1007
.
4.9
SELECT *
FROM WHERE NOT ((odate = 10/03/2003 AND snum
>1002) OR amt > 2000.00);
:
ONUM
AMT
DATE
SNUM
CNUM
3003
767.19
10/03/2003 2001
1001
3009
1713.23
10/04/2003 2002
1003
3007
75.76
10/04/2003 2004
1002
3009
1309.95
10/06/2003 2004
1002
, ,
: NOT (a AND b) NOT a OR NOT b
NOT (a OR b) NOT a AND NOT b , a b ,
.
IN , ()
. , IN, true
,
.

4.10 , :
SELECT *
FROM
WHERE city = '' OR city = '';
:
SELECT * FROM WHERE city IN ( '', '' );
BETWEEN ... AND ... ( ... ...) ,
- . "x BETWEEN
y AND z" , "x >= y AND x <= z". "x NOT BETWEEN y AND
z" , "NOT (x BETWEEN y AND z)".
4.11 ,
:
46

SELECT *
FROM WHERE cname BETWEEN '' AND '';
:
CNUM
CNAME
CITY
RATING
SNUM
2002

200
1003
2004

300
1002
2006

100
1001
2008

300
1007
, . - , BETWEEN
. '' , ,
. BETWEEN
.
LIKE
"_ LIKE _"
, ,
"_".
:
_ () ( ACCESS ?);
% () N ( N
) ( ACCESS *);
.
LIKE
.
4.12
, :
SELECT FROM WHERE cname LIKE '%';
(NULL) ,
(. .3.4). ,
, .
NULL snum ,
. "x IS NULL" true , x .
"x NOT IS NULL" "NOT x IS NULL".
4.13 NULL city :
SELECT * FROM WHERE snum IS NULL;
, NULL .
4.3.2.
SQL (SQL-).
COUNT(*)
, :
COUNT - ;
SUM - ;
AVG - ;
MAX - ;
MIN - .
SUM AVG .
, - ,
, ,
()
. ,
, , SQL- (
SQL- ). SQL- .
, COUNT(*), DISTINCT
(), ,
, . COUNT(*)
( ).
4.14 , :
47

SELECT SUM(amt) FROM ;


26658.4 .
4.15
:
SELECT COUNT (*)
FROM ;
7.
GROUP BY ( ) FROM
, , GROUP BY,
SELECT
.
4.16 , :
SELECT snum, MAX (amt) FROM GROUP BY snum;
:
snum
------ -------1001
767.19
1002 1713.23
1003
75.75
1014 1309.95
1007 1098.16
. SELECT, GROUP BY,
, .
SELECT onum, snum, MAX (amt) FROM GROUP BY snum;
. ,
onum, GROUP BY.
GROUP BY , .
4.17 , :
SELECT snum, odate, MAX (amt) FROM GROUP BY snum, odate;
:
snum
odate
------ ----------------1001
10/03/1990
767.19
1001
10/05/1990
4723.00
1001
10/06/1990
9891.88
1002
10/03/1990
5160.45
1002
10/04/1990
75.75
1002
10/06/1990
1309.95
1003
10/04/1990
1713.23
1014
10/03/1990
1900.10
1007

10/03/1990

1098.16

HAVING , WHERE :
, , WHERE .
GROUP BY, HAVING
, .. .
4.18
, ,
$3000.00:
SELECT snum, odate, MAX (amt) FROM GROUP BY snum, odate
HAVING MAX (amt) > 3000.00;
. WHERE,
HAVING.
HAVING WHERE.
WHERE HAVING, ,
GROUP BY.
4.18 SELECT snum, MAX (amt) FROM WHERE snum IN (1002,1007) GROUP
48

BY snum HAVING MAX (amt) > 3000.00;


:
1. , WHERE;
2. , GROUP BY;
3. (MAX (amt) );
4. , ,
HAVING.
SELECT
.
4.19
:
SELECT snum, sname, city, comm * 100, ' % ' FROM ;
- , ,
- .
SQL
ORDER BY,
.

, GROUP BY,
(ASC ) ( DESC ) . .
4.20
,
:
SELECT * FROM ORDER BY cnum DESC;
ORDER BY GROUP BY
. :
SELECT < > FROM < > [WHERE <>] [GROUP BY
<>] [HAVING <>] [ORDER BY <>] ;
4.21
SELECT snum, odate, MAX (amt) FROM GROUP BY snum, odate ORDER BY snum ;
4.3.3
,
. ,
SELECT, ( ,
). ,
,
.
.3.5. :
1. :
2. - : .
3.
4. :
5. .
,
, : .snum , .city, .odate
,
, SQL ,
. , ,
, .
. , city,
.city .city, SQL .
4.22 ,
, :
SELECT .cname, .sname, .city FROM ,
WHERE .city = .city;
49

:
cname
cname
city

4.22:
1. , 35 (57);
2. ,
.city = .city;
3. 2 3 ().
.
4.23 , :
SELECT .cname, .sname FROM ,
WHERE .snum = .snum;
,
snum ,
.
, .
4.24 , ,
, . :
SELECT onum, cname, .cnum, .snum FROM , ,
WHERE .city < > .city AND .cnum = .cnum
AND .snum = .snum;
:
onum cname
cnum snum
------ ----------- ----3001 2008 1007
3002
2007 1004
3006 2002 1003
3007
2004 1002
3010
2004 1002
.
, FROM .
4.25 :
SELECT a.cname, b.cname, a.rating FROM a, b WHERE a.rating = b.rating;
:
cname
cname
rating

100

100

100
200

200

200

200

300

300

100

100

100

300
50


300

100

100

100
: ;
.
, ,
, :
4.26 SELECT a.cname, b.cname, a.rating FROM a, b WHERE a.rating
= b.rating AND a.cname < b.cname;
5 .
4.3.4
, SQL ,
.
, ,
, .
- ,
WHERE HAVING SELECT , WHERE
. WHERE (HAVING)
.. , ,
, ,
SQL/89 ,
.
, ,
. ,
SQL,
WHERE HAVING
, () .
() .
WHERE (HAVING) IN, EXISTS, ALL, ANY
( = | <> | < | <= | > | > = ).
c .
. , ,
..
4.3.4.1
.
4.27 , (),
snum, :
SELECT *
FROM WHERE snum =
( SELECT snum FROM WHERE sname = '');
.
:
1.
( snum = 1004);
2. ,
(WHERE snum = 1004), ,
true.
. ,
. ,
; .
().
select sql. select
51

, .
DISTINCT,
.
4.28
,
2001:
SELECT * FROM WHERE snum =
( SELECT DISTINCT snum FROM WHERE cnum = 2001 );
. , ,
< > < > < >, < > < > < >
, GROUP BY
.
4.29 , 4- :
SELECT * FROM WHERE amt >
( SELECT AVG (amt) FROM Orders WHERE odate = 10/04/2003 );
4 - 1788.98 ( 1713.23 + 75.75) ,
= 894.49. amt - .
. , , (
GROUP BY), , ,
.
IN , .
4.30 :
SELECT * FROM WHERE snum IN
( SELECT snum FROM WHERE city =);
HAVING.
4.31 , :
SELECT rating, COUNT ( DISTINCT cnum ) FROM GROUP BY rating HAVING rating
> ( SELECT AVG (rating) FROM WHERE city =);
4.3.4.2 ()

. ,
, ,
( ).
, . ..,
,
( ).
4.32 3- :
SELECT *
FROM outer
WHERE 10/03/2003 IN
( SELECT odate FROM inner WHERE outer.cnum = inner.cnum );
:
1. (- ).
2. .
3. . , ,
.
4. ,
3. , .
5. 1-4 . .
4.33 , :
SELECT snum, sname FROM main WHERE 1 <
( SELECT COUNT (*) FROM WHERE snum = main.snum );
HAVING .

52

4.34 ,
, , ,
2000.00 ( MAX ) :
SELECT odate, SUM (amt) FROM a GROUP BY odate HAVING SUM (amt) >
( SELECT 2000.00 + MAX (amt) FROM b WHERE a.odate = b.odate );
4.3.4.3
EXISTS (), ALL - , .
SQL EXISTS (SELECT * FROM
...). , "SELECT *
FROM ..." , .. - ,
FROM , WHERE .
( .).
, IN,
EXISTS. ALL
(SELECT * FROM ...). ,
.
4.35 ,
, :
SELECT cnum, cname, city
FROM WHERE EXISTS
( SELECT * FROM WHERE city =);
,
. EXISTS
, ,
, .
4.36 , :
SELECT DISTINCT snum FROM outer WHERE EXISTS
( SELECT * FROM inner WHERE inner.snum = outer.snum
AND inner.cnum < > outer.cnum );
4.37
,
, , :
SELECT DISTINCT snum FROM outer WHERE NOT
EXISTS
( SELECT * FROM inner WHERE inner.snum = outer.snum
AND inner.cnum < > outer.cnum );
EXISTS ANY (SOME), ALL.
4.38 ,
:
SELECT *
FROM WHERE city = ANY
(SELECT city FROM );
ANY , , ( -
city ), , (ANY)
.
IN, :
SELECT *
FROM WHERE city IN (SELECT city FROM );
ALL, ,
.
4.39 , ,
: SELECT * FROM WHERE rating > ALL
(SELECT rating FROM WHERE city = Rome );
:
1. ;
2. ;
3. GROUP BY.

53

4.3.5
, ,
, .
.
SQL , , :
a. , , m;
b. i (i = 1, 2, ..., m) i- i-
.
4.40
, :
SELECT snum, sname FROM WHERE city = ''
UNION
SELECT cnum, cname FROM WHERE city = '';
. , ,
, .
, , .
SQL, .
UNION .
SQL, DISTINCT .
, :
SELECT snum, city FROM
UNION
SELECT snum, city FROM ;
4.41 ,
. , ,
:
SELECT a.snum, sname, onum, , odate FROM a, s b
WHERE a.snum = b.snum AND b.amt = ( SELECT MAX (amt) FROM c
WHERE c.odate = b.odate )
UNION
SELECT a.snum, sname, onum, , odate FROM a, s b
WHERE a.snum = b.snum AND b.amt = ( SELECT MIN (amt) FROM c
WHERE c.odate = b.odate )
4.3.6 SELECT
SELECT:
SELECT * | { [ DISTINCT | ALL] < >,.}
FROM { < _> [ < > ] }.,..
[ WHERE <>]
[ GROUP BY <_>.,..]
[ HAVING <>]
[ ORDER BY <_>.,. | <_> }.,..]
[ { UNION [ALL]
SELECT * | { [DISTINCT | ALL] < < >.,..}
FROM .] } ] ...;
, SELECT:
< > - , , ,
<>::=< 1 > < > < 2> | [NOT] EXISTS< 2 >
< > ::= > | < | >= | <= | <> | = | IN | LIKE | BETWEEN AND | OR | AND | NOT
< 2 >::= < 1> | [ANY | SOME | ALL ] <>
<>::= (SELECT * | { [ DISTINCT | ALL] < >,.}
FROM { < _> [ < > ] }.,..
54

[ WHERE <>] )
4.4
DELETE (), INSERT
() UPDATE (). SELECT
, .
.
4.4.1 DELETE
DELETE :
DELETE FROM | [WHERE <>];
( WHERE )
, WHERE .
4.42 :
DELETE FROM ;
, , DROP TABLE. ,
. ,
, , .
4.43 :
DELETE FROM WHERE snum = 1003;
.
SELECT,
WHERE, .
4.44
,
, , :
DELETE FROM WHERE snum = ANY
( SELECT snum FROM WHERE city = '' );

( ), ( ).
4.4.2 INSERT
INSERT :
INSERT INTO { | } [( [,] ...)]
VALUES ({ | } [,{ | }] ...);

INSERT
INTO { | } [( [,] ...)]
<>;
,
VALUES (), i- i-
(, , NULL-). VALUES

, INTO .
4.45 :
INSERT INTO VALUES (1009, '', '', .12);
. DML ,
, . ( - ),
, CREATE TABLE (. .4.5 ),
, , ,
.
, .. SELECT
,
. i- (i- SELECT) i-
.
INTO.
55

INSERT,
. , VALUES (
) :
4.46 INSERT INTO _1 SELECT * FROM WHERE city = '';
, -
city = - , _1.
:
CREATE TABLE.;
, .
4.4.3 UPDATE
UPDATE :
UPDATE ( | }
SET
= [, = ] ...
[WHERE ] ;
-
| | |
, ..
,
, .
WHERE
. WHERE ,
.
4.47 , ,
:
UPDATE SET sname = '', city = '', comm = .10 WHERE snum = 1004;
,
.
4.48 , ,
, :
UPDATE
SET comm = comm + .01
WHERE 2 < =
( SELECT COUNT (cnum) FROM WHERE .snum =
.snum );
, ,
.
4.5
4.5.1
SQL CREATE TABLE (
). :
CREATE TABLE <_> {<_>}
[{,<_ >}...] [__]);
< _ > ::= <_>
< _ > ::= <_> <_>
[DEFAULT <>] [<_ _>...]
< _ _ > ::= NOT NULL [UNIQUE <>]
| REFERENCES <> | CHECK (<_>)
, ,
,
. .
56

, :
.
,
, , .
,
, NULL, ,
. ,
NOT NULL,
NULL - .
NOT NULL
"CHECK (C IS NOT NULL)" ( C ). NOT NULL , ,
DEFAULT NULL.
, .

(REFERENCES <> ),
:
FOREIGN KEY(C) REFERENCES <> .
4.49 :
CREATE TABLE
( cnum
integer NOT NULL PRIMARY KEY,
cname char (10) NOT NULL,
city
char (10) DEFAULT = '',
rating integer,
snum integer NOT NULL,
UNIQUE (cnum, snum));
UNIQUE (cnum, snum) , ,
, .. .
4.50
PRIMARY KEY :
CREATE TABLE
( firstname
char (10) NOT NULL,
lastname
char (10) NOT NULL
city
char (10),
PRIMARY KEY ( firstname, lastname ));
4. 51 :
CREATE TABLE
(snum integer NOT NULL PRIMARY KEY,
sname char(10) NOT NULL,
city char(10),
comm decimal,
cnum integer REFERENCES Customers);
:
DROP TABLE <_>;
, , ,
.
SQL ALTER TABLE ( ),
, , ..
.
SQL CREATE INDEX ( ),
:CREATE [UNIQUE] INDEX <_> ON < _ >
(< >[[ASC] | DESC] [, <> [[ASC] | DESC]] ...);
57

UNIQUE () ,
(
) .
:
DROP INDEX <_>;
. ,
,
WHERE ORDER BY ,
.
4.5.2 CREATE VIEW
- , ,
, .
.
, ,
. (view)
SQL,
,
, (
). ,
,
. CREATE VIEW :
CREATE VIEW <_>
[(<>[,<>] ...)]
AS
[WITH CHECK OPTION];
, AS ,
, ;
"WITH CHECK OPTION" ( ) ,
INSERT UPDATE ,
WHERE ;
, :
) ( , SQL );
) ;
, .
4.52
, _,
:
CREATE VIEW _
AS SELECT *
FROM
WHERE city = '';
4. 53
: CREATE VIEW (rating, number)
AS SELECT rating, COUNT (*) FROM GROUP BY rating;
4. 54 , ,
.
:
CREATE VIEW AS
SELECT b.odate, a.snum, a.sname, FROM a, b WHERE a.snum = b.snum
AND b.amt = (SELECT MAX (amt) FROM c WHERE c.odate = b.odate);
V (.. V
DELETE, UPDATE, INSERT) ,
:
DISTINCT;
58


,
( );
FROM , ,
;
WHERE ;
GROUP BY HAVING.
, ( 4.52)
, SELECT ( 4.53,
4.54).
.
, ,
(swallowed) .
4. 55 :
CREATE VIEW
AS SELECT cnum, rating FROM WHERE rating = 300;
- .
. , (INSERT) :
INSERT INTO
VALUES (2018, 200);
- INSERT .
. ,
, 300. - .
, , ,
.
WITH CHECK OPTION .
4. 56 4.55:
CREATE VIEW
AS SELECT cnum, rating FROM WHERE rating = 300 WITH CHECK OPTION;
.
. WITH CHECK OPTION
.
:
DROP VIEW <_>;

4.6 ,
4.6.1

, . SQL
, .
:
,
, ;
,

,
, .
SQL , .
, , ; ,
. (
) (ID) ,
.
59

- ,
-
. , ID (
), .
.
( ID).
, , ,
( ) , ..
:
GRANT <> ON < > TO < >
[{,< >}...] [WITH GRANT OPTION];
<>::= ALL [PRIVILEGES] | <> [{,<> }...]
<>::= SELECT | INSERT | DELETE | UPDATE [(< >)]
| REFERENCES [(< >)]
[(< >)]::= <_> [{,<_> }...]
<> ::= PUBLIC | <__>
- , , ,
ALL PRIVILEGES ( ); - , , (
, , , ..); - ,
, , PUBLIC
().
. REFERENCES T1
, T
T1.
. ,

. , SELECT
,
.
4. 57 GRANT SELECT, INSERT ON TO , ;
4. 58 GRANT ALL ON TO ;
4. 59 GRANT SELECT ON Orders TO PUBLIC;
( )
, (
) , ,
. SQL WITH GRANT OPTION.
4. 60 ,
SELECT , SELECT
WITH GRANT OPTION:
GRANT SELECT ON TO WITH GRANT OPTION;
Adrian SELECT
USER_1 - USER_2,
.
REVOKE (),
GRANT:
REVOKE <> ON < > FROM < > [{,< >}...];
4. 61 REVOKE INSERT, DELETE ON FROM , .
4.6.2
- , ,
. "
", ..
, , - ,
, - ,
60

, (
). , ,
. -
, .
- ,
,
. ()
. , ,
- ,
, ,
.
, -
,
,
.
, :
() . -
, .
() .
() () .
.
() . (,
).
() . ,
, .

, :
COMMIT ( ).
ROLLBACK ( ).
.
.
.
(). , ,
.. , ,
. ,
. ,
.
( ). .
,
.
.
.
. 4.6.3.
() , ..
. ,
COMMIT, , ..
.
.
() -
. () ,
() , .
61

(-) - ,
.
:
4.62. .
4.63. .
4.64 .
4.65.
, .
,
(. . 3). 4.63 ,
. 4.62, 4.64 ,
. (
5). , ..
/ .

. ,
, ,
.
:
1. "" .
2. .
4.1.
.
:
;
;
.
:
-
(DDL).
-
.

4.1
62

:
.
.
:
;
;
;
;
.
SQL ,
:
;
, ;
, (assertion).
,
, .
.
SQL ,
. SQL 92 ,
SQL-. ,
,
SQL.
4.6.3

. , ,
. .
:
.
( "" ,
).
.
,
.

,
.
- , .
,
.
, .
, ,
.
(), - .
, ,
, ,
(
).

. S- (Shared locks
) X- (eXclusive locks ).
:
1. , , S-.
63

2. , , X-.
S- ( ),
S- X-.
3. B ,
A, B . B
, A
.
4. X-, A, A.
,
( , ""), .
(dead locks) ,
, .

. .
( )
.
"", ,
, .
, - ,
, , .

4.7 4
1.
2.
3.
4.
5.
6.
7.
8.
9.

SQL ?
- SQL , ?
* SELECT?
- () ?
?
, ?
?
WHERE HAVING?
, EXISTS () ,
?
10. ?
11. DELETE WHERE?
12. ?
13. - ?
14.
?
15. ?
16. ?
17. ?
18. WITH CHECK OPTION ?
19. SQL ?
20. ?
21. ?
5


.
:
I. .
:
64

. ,
,
.
, .
.
. ,
.
, .
,
. ,
, ,
.
II. . :
() (, ER-).,
.
, ,
.
, ,
.
III. , ..
(, ).
., ,
, , .
.
IV. , ..
.
.
, ,
.
:

? .
, .. ,
, ,
(, ) ..?
.
-
. .
,
.
, -
( ). ,
(, SQL ) -
. ,
, . ,
,
.
,
,


:
65

1.

( );
2. Case-
();
3.
.
5.1
,

.
,
, .
,
, .

:
(1NF);
(2NF);
(3NF);
- (BCNF);
(4NF);
(5NF PJ/NF).
:
;

.
, ,
, ,
.

.
.
1.
R Y X (X Y )
, X Y:
R.X ->R.Y.
2.
R.X ->R.Y , Y
X.
3.
R.X -> R.Y ,
Z, R.X -> R.Z R.Z -> R.Y
R.Z -/-> R.X.
4.
,
( , ).
5.
,
.

, ,
66

, .. .
, 1NF , , .
:
1. ,
( );
2.
;
3. ,
;
4. - .
5.1 ,
. :
1. .
2. .
3. ,
.
4. ,
, .
5. .
6. .
7. , .
, ,
:
1. .
.
2. .
3. . .
4. , .
( ):
--
(_, _, _, _, _)
:
_, _
:
_ -> _
_ -> _
_ -> _
_, _ -> _
, _, _,
_ _ ,
_. - , ,
( ).
,
, .
, ,
.
. .
6. ( ,
)
R (2NF) ,
1NF, .
67

--
- -:
- (_, _, _)
:
_
:
_ -> _
_ -> _
_ -> _
- (_, _, _)
:
_, _
:
_, _ -> C_
2NF,
( , ).
-, 2NF. ,
_ -> _ ;
_ -> _ _ ->
_. ,
, , (
, ).
,
, , (
). ,
, .
,
, . ..
- - .
.
7. . (
.)
R (3NF) ,
2NF .
-
:
(_, _)
:
_
:
_ -> _
(_, _)
:
_
:
_ -> _
3NF .
, ,
3NF :
7*
R (3NF) ,
1NF, R.
68

,

.
.
5.2 :
- (_, _, _, _)
:
_, _
_, _
:
_ -> C_
_ -> _
_ -> C_
_ -> _
_, _ -> C_
_, _ -> C_
,
, ( ,
).
7* - 3NF.
, ,
, . , ,
,
, .
8.
- ,
.
9. -
R - (BCNF) ,
.
, -.
-:
(_, _)
:
_
_
:
_ -> C_
_ -> _
- (_, _, _)
:
_, _
:
_, _ -> C_
, _.
- BCNF,
.
5.3 :
(_, _, _)
, ,
, , .
, .
69

,
, , ( ,
, , ,
).
_, _, _,
. , BCNF.
: , ,
, ,
.
10.
R (A, B, C) R.A -> -> R.B
, B, A C, A
.
:
_ -> -> _
_ -> -> _
, R (A, B, C)
R.A -> -> R.B ,
R.A -> -> R.C.
, ,
:

R (A, B, C) R1 (A, B) R2 (A, C)
, MVD A -> -> B | C.
,

.
11.
R (4NF) ,
A -> -> B R
A.

- -:
- (_, _)
- (_, _)
4NF .

. ,
, .
5.4 , ,
-- (_, _, _)
,
.
, .
4NF. ,
.
12.
R (X, Y, ..., Z) * (X, Y, ..., Z)
, R X, Y, ..., Z.
13.
R ( - PJ/NF) , R
R.
70

:
= {_, _}
= {_, _}
= {_, _}
, --
:
* (, , )
, .
:
- (_, _)
- (_, _)
- (_, _)
- ,
. , 5NF .
, ,
.
. ,
,
( ), ,
.

5.2
5.2.1

,
.

.
:
.

.
.

, (,
) .
,
- .
,
()
, -
.
,
, :
1.
.
.
2. .
,
.
3. ,
, .. , ,

71

- ,
.
, .
- (ER - EntityRelationship).
- 1976 . - .
(
, IDEF1X, .). , ,
, . ,
- -
.
, (), .
,
, :
1.
.
, (
- ) . ,
.
2.
. :

;

.
,
.
3. , .. ,
. :

(
,
)
, - .
- ,
(
, - ).
5.2.2. Entity-Relationship
ER- ,
.
1. - ,
.
,
. "", "",
"".
(.5.1).

5.1
2. - .
, "" " ".
72

, ..
, .
3. - ,
.

(, ). ""
" ", "", "", "", "",
"" ..
, (.5.2).

5.2
4. - ,
.
, .
.
(.5.3).

5.3
5. - ,
.
( ).
, .
, - "
", "
".
, (.5.4).

5.4
.
: "", "" ..
. .
(.5.5.:

73

5.5
-- , ()
(). -- ,
, .
-- , ()
().
. ( "") , ( "")
- . .5.4.
-- ,
,
. --
, .
--
.
(.5.6).

5.6
,
, .
,
.
( . 5.4).
,
:
< 1> < > < >
< > < 2>.
, . . 5.4
:
: " ".
: " ".
, ER- ,
. ,
ER-
.
.
ER-
, .. , "" .
,
. .
, ,
.
5.2.3 ER-
ER-
:
74

1. .
2. .
3. .
ER- , ,
. , ,
. ,
, ER-.
,
.
, . ,
, , ..
, , , () ,
:
.
.
.
-
, (
):
- .
- .
-
(?) - , ? ,
.
(?) , , , ?
- " "
" ".
(.5.7).

5.7
, , .
,
. "" "" ?
"" ""? , :
, ,
.
.
.
( ).
, ,
.
,
.
, , (.5.8).

75

5.8
. ,
:
, ,
.
, , .
, ,
, .
.
.
, ,
:
- , .. .
;
- ;
- ;
- ;
- ;
(?) - , .
?
- ;
- ;
- ;
(?) - . ,
;
(?) - , ?
"", " ";
(?) - ,
. - ?
- .
. , ;
- .
.
, . ,
. , .
, , .
, - .
76

" " .
"" "" --. ,
, --.
. "
". "" "" :
;
;
;
.
" " " "
" ".
, "" "".
" ". "
". ,
.
(. 5.9).

5.9
. , ,
: , . - , ,
.

5.3

. ( )
(..
).
,
.
,
, , - (,
, , . .).
77

() , ( ,
).
,
.
,
(,
).
, .. ,

.
,
, .. ,
.
.
,
.
,
. ,
,
, .
,
.
,
, ,

- . , ""
(" ") ,
.
, ,
. .
, . [8]:
1. , ,
.
2. .
:
, (,
..)
-,
, :
; ; ; ..
3. .
4.
5. . .
5.4 5
1.
?
2. ?
3.
?
4. ?
5.
?
78

6. ?
6
6.1
:
- .

, , , ,
( ).
,
. ,
,
, , , . ,
.
-
;
.
.

. ,
( UNIX), .

.
. ,
. ,
,
.
-
- , .
, (COMMIT) ,
, ,
(. .4.6.2).
. ,
.
.
,
,
.

.

(. .4.6.3).
.
, .

.
( , )
. ,
( )
.
-

.
79

,
.
:
,
(, );
, .
:

.
;
,
.
,
, , .

.
- ,
( ,
), .
,
:
(,
);
;
( ).
(
Write Ahead Log - WAL). ,
,
. ,
WAL,
. :
- ( ).
,
, ,
. ,
,
( ).
- . ,
, ,
, , (
,
). WAL
,
.
,

. , ,
(undo), (redo) ,
.
- .
. , -
( ). ,
80

, .
,
. , ,
, .
-
,
.
. - (SDL - Schema Definition
Language) (DML - Data Manipulation Language). SDL
, .. ,
. DML , ..
, , ,
.
,
, ,
.
SQL (Structured Query Language).
DML (QBE - Query by Example).
, Access SQL QBE ,
, .
SQL SDL DML, ..
. ( -
) ,
SQL
-. -
, ,
: , , ,
, , ..
, SQL,
,
.
, SYSTABLES
. ,
, ,
. SYSCOLUMNS ,
, , ,
.
SELECT
. , ,
, ( ):
SELECT Tab_name, N_col, N_row, Tab_owner, Comments
FROM SYSTABLES;
() .
SQL . ,
-,
, ..
SQL
.
SQL ,
(
) .
, , ,
.
81

.
,
SQL. , SQL
. , ,
.
,
.
-, .
6.2
:
,

6.2.1 OLTP-
OLTP (On-Line Transaction Processing - ).
OLTP- , ,
, , ..
.
, , ,
.
. OLTP- , :
1) ;
2) (
);
3) ,
, ( ,
, ).
OLTP- ,
, .
. ,
, . :
-, 20 23:15.
, OLTP-
. OLTP, , , . OLTP-
, , .
6.2.2 OLAP -
OLAP- (On-Line Analitical Processing
). ,
() (Decision Support System DSS), (Data Warehouse), (Data
Mining).
. :
;
3 ), " ". OLAP , OLTP-,
.
:

(, OLTP).
, , .
82

, ,
,
, , .
, , .
,
.
, .
OLAP- ,
,
. , ,
: ( , ), ,
.
. , "
?", "
- ?"

(MOLAP - Multidimensional OLAP) (ROLAP
- Relational OLAP).
OLAP
,
,
(Data Warehouse ).
SQL,
, .
, , Express 4GL ( - 4 Generation
Language ) .Oracle.
6.2.3

. OLTP-
(TPM Transaction Processing Monitor).
:
( );
.
.
, , , ,
( )
. ,
.
, ,
. (.6.1):
,
. ,
, ;
, ,
;
,
.
1
2

83

6.1
, ,
, ,
, - .
(service location
transparency).
.
,
.

.
.
,
. ,
.
: CICS
IBM; TUXEDO USL; ACSMS DEC; TOP END NCR.
CICS (Custom Information Control System), ,
30 .
OLTP-.
,
. OLTP-
(, ..);
. ,
,
.
, .
. ,
, .
,
.
, CICS
. CICS
,
. , CICS
500 ,
(, Transaction Processing Facility,
) .
CICS ,
(TCP/IP, SNA, NetBIOS .).
Function Shipping (FS). (),
CICS.
CICS ,
84

, .
- .
Transaction Routing (TR). CICS.
,
CICS .
Asynchronous Processing (AP). CICS.
,
.
Distributed Program Link (DPL).
.
.
Distributed Transaction Processing (DTP). ,
CICS.

6.3
(. 6.2):

6.2
( Data Base Engine),
;


( ,
SQL),

-
;
,
, ;
.
, - ,
.
,
, . ,
( , ,
), , ,
. ,

. ,
, SQL (
) .
. "-"
.

. ,

85

( , , SQL) , ..
, ,
.
, ,
. .
,
, - .

, , ,
.
, ,
, , ,
, ..
, .
6.4

.
(). , ,
.
, .

.
, ..
, . ,
, , . . ,
, , ,
.
.
.
.
1.
2.
3.
4.
5.
6.
7.
8.

6.4 6
?
?
?
OLTP-?
OLAP-?
?
?
.

7 ,
7.1 -
.
:
;
;
-;
.
,
,
.
, ,
86

,
.

.
-.
:
(, );
. -
.
, -,
, , , ..
-, -.
-
:
1. ;
2. , (,
);
3. (,
);
4. , .
( 7.1).
7.1


1

()
2

()
3

()

- :
, ;
,
3 ;
;
.
, -:
(File Server FS);
(Remote Data Access - RDA);
(Database Server DBS );
(Application Server - AS).
1. FS- ( -)- .
FoxPro, Clipper, Paradox.

7.1
: - ,
,
(. 7.1). ,
87

-.
-. FS-
.
: ( );
; .
RDA- ( ).
-,
SQL (. 7.2).
SQL-

7.2
: ,
( ) . ,
-.
: , SQL;
- SQL,
.
: -
( ).
DBS- ( ) Informix, Oracle, Ingres.
SQL ( .7.2). ,
, SQL- (. 7.3).

SQL

7.3
: -,
- . SQL SQL-.
, SQL-.
, ,
SQL C (, SQL * Plus Oracle). DBS-
-,
- ,
, .
:
;
, . . SQL;
;

88

.
: ,
. SQL

.
RDA DBS-
.
(DBS- ),
, - (RDA)
4. AS- ( ).
(. 7.4),
, ,
.
: :
- , ;
, ,
;
-,
, ;
,
.
: , .
- SQL,
,
. .
AS- .
,
, OLAP-.

SQL


7.4

7.2
,
, .

.
.


( , , ).
( )
. ,
. ,
-
.
89


.
, . -
. :
,
;
;
, ,
.
(Distributed DataBase - DDB) ,
,
, , .

. ,
( ).
, : R-Star, Distributed Ingres,
Oracle 7, Ingres/Star, CA-OpenIngres, Sybase, Informix-OnLine Dynamic Server.

.
:
1. ( STAR),
. .
.
2. ,
, ,
STAR. ( ).
7.2.1

(RDA). . -,
( ,
). , (local node)
, , (
remote node). ,
, ,
(Communication Server, DBMS Server Net).
;
,
(DBMS Client Net).
12 , .

:
1 (local autonomy). ,
. ,
, .
, ,
;
1. (no reliance on central site).
,
. -

90

3. (continuous operation).
( 24 , )
DDB ,
. ,
.
4 (location independence).
. , DDB,
, .
.
.
5. (fragmentation independence).
( ) ,
. :
.
(,
).

.
7.1 , .
employee (emp_id, emp_name, phone), .
, .
. ,
emp_salary (emp_id, salary).
:
SELECT * FROM employee@phoenix, employee@denver ORDER BY emp_id

:
SELECT employee.emp_id, emp_name, salary FROM employee@denver, employee@phoenix,
emp_salary@dallas
WHERE employee.emp_id= salary. emp_id ORDER BY emp_id
6.
(replication independence). -
( )
, .

, . ,
.
7. (distributed query processing). DDB
,
SQL.
DDB ,
.
7.2 SELECT customer.name, customer.address, order.number, order.date FROM
customer@london, order@paris WHERE customer.cust_number = order.cust_number
8. (distributed transaction processing). DDB

(INSERT, UPDATE, DELETE), .

(two-phase commit protocol),
.
(, , )
.
9. (hardware independence). ,

- .
91

10. (operationg system independence).


,
.
11. (network independence).
.
.
- .
12. (DBMS independence). ,
,

.
, DDB ,
. ,
; ,
. - .
DDB - , ""
.. DDB

.
, DDB,

DDB , 1-2,
. -
, DDB -
. DDB -
,
. DDB

. DDB ,

, . ,
- - , .
, .

. .
7.3 Oracle. , DDB ,
. (database link),
(london_unix), IP- .
CREATE PUBLIC DATABASE LINK london.com CONNECT TO london_unix USING oracle_user_ID;
, , ,
SELECT , :
SELECT customer.cust_name, order.order_date FROM customer@london.com, order WHERE
customer.cust_number = order.cust_number;
, , , ,
. customer customer@london.com :
CREATE SYNONYM customer FOR customer@london.com;
:
SELECT customer.cust_name, order.order_date FROM customer, order WHERE customer.cust_number =
order.cust_number
SQL CREATE SYNONYM,
.

..
DDB
, DDB: ,
92

( ),
..
(Distributed Query -DQ) - , ,
DQ.
7.4 , .
, - . - 10000 ,
- 100 ( ).
, :
SELECT _, _, _
FROM ,
WHERE . _ = . _;
,
.. ( ) . . (
).
- , ,
.
. , . ,
, . ,
DQ :
;
;
, ;
;
;
..
DQ
.
DDB , . -, , . ,
, Informix Oracle ? ,

. , CA-Ingres/Replicator
Ingres Ingres. DDB? ,

.
-, DDB
. ( ODBC),
. ODBC -
,
SQL , ODBC

.
- , , ,
, .
, - (legacy)
- . ,
IMS Oracle,
IMS. , ,
,
.
7.2.2 ( STAR)
,
, :
93

1) ;
2) ,
, .
7.5 _1,
_2. , .
,
. .
SQL .
.
REGISTER TABLE AS LINK WITH NODE=_1, DATABASE=;
REGISTER TABLE AS LINK WITH NODE=_2, DATABASE=;
,
,
.

:
;
;
.
. 7.2.1.
(Distributed Database Server).
:
1) ,
, .
2) ,
,
, .
3) ,
, ,
, , .
4) ,
,
STAR -
, DDB.
-
.
, ,
, ,
,
. (, ,
)

.
7.2.3

(Data Replication - DR)


. DR , (
, ) ;
, ;

.
-
, . DR ,
, - ,
( CA-OpenIngres Sybase). Informix-OnLine Dynamic Server
94

, Oracle 7 DR
Oracle7
DBMS

Replication
Option.
DR . DR (snapshot).
7.6 Oracle:
CREATE SNAPSHOT unfilled_orders
REFRASH COMPLETE
START WITH TO_DATE ('DD-MON-YY HH23:MI:55')
NEXT SYSDATE + 7
AS SELECT customer_name, customer_address, order_date
FROM customer@paris, order@london
WHERE customer.cust_name = order.customer_number AND
order_complete_flag = "N";
customer order
23:55 7 .

.
, , .
.
, ,

.
;
,
. ,
. , ,

.
DR- - . DR , .

.
.
.
:
, - ,
;
, (
), ;
,
,
,
;
.
, ();
,
.
DR- . ,
. ,
,
.
DR-
-
. ,
.
,
95

- .
7.3 DBS
.
:
,
;
, , -;
,
( );
,
;


.
:
. (
) ;


.

;

.
, , ,
. :
a) ;
b)
;
c) ,
.
, , ,
.
.
:
1. ;
2. ();
3. ;
4. , .
(stored, , ) - ,

, .
,
(,
) ( 7.5).
SQL
(, PL/SQL ORACLE Transact-SQL MS SQL Server),
, , C++, SQL
.
- - .
:
96

1. ,
;
2. ;
3. -
, .
4.
.
7.7 ,
6
CREATE PROCEDURE (_ integer not null) AS
BEGIN
INSERT INTO SELECT * FROM WHERE = _;
DELETE FROM WHERE = _;
END
EXECUTE ,:
EXECUTE PROCEDURE (115)

. 7.5.
- , ,
.
, . ,
, .
, .
, ,
. , -
. , ,
, , -
,
.
7.8 , ,
- ,
,
97

1.

2.

1.
2.
3.
4.

,

:
;
7.9 , ,
1000.
:
CREATE RULE _
AFTER UPDATE () of WHERE .<1000
EXECUTE PROCEDURE _ (_=, =.);
,

.
SQL, ,
database event alerters). .
,
.
, .
:
,
, ( CREATE DBEVENT
);
, ,
REGISTER DBEVENT ( ), ,
.
RAISE
DBEVENT;
,
GET DBEVENT
).
, .
. , Ingres

SQL. .
. Ingres ,
.
, ,
. ,
(, ..)
( ).
. ,
.
.
7.4 7
1) -?
2) ?
3) ?
4) SQL ?
5) ?
6) ?
98

7) ?
8) ? ?
9) ?
10) ?
11) ?
12) ?

1. . , 6- . .: ,
1999.
2. : , , / .. .: , 2002.
3. . SQL /. .. . : ,1998.
4. .. . 1.
: . - : - -. -, 1999. - 108 . - ISBN
5-7477-0350-1.
5. .. . 2.
: . - : - -, 1999. 138 . - ISBN 5-7477-0351-X.
6. .. . / -

,
<http://citforum.ru/database/osbd/contents.htm>
7. .., .., .., .. .
. - .: , 2000.
8. .. Access 2000. . . .:
, 2000.
9. ..
ACCESS: . : , 2002.
10. .., .. SQL /
. : , 2001.

99

You might also like