(database) 1962 . , ,
- .
- , , , .
, , , , .
() - , , , . , , .
. ( ) , ().
( ) - , , , , .
( ), , . .
. , . : , , , .
. , , .
. . . , , . , . -. : ; , ; .
. , .
|
|
(, , , ), : , , , . . , . . . , .
. , , . , .. , , . .
. , , ( ) , . , . , , , . , .
. , , . REDO ( ) . UNDO ( ) . , , .
, , . , ( ), , . , , , , . , .
. , .
|
|
. , . ( ) . () SQL (Structured Query Language), , , .
.
.
:
.
.
, .
.
.
.
:
, ,
, , , - ,
, , ,
( ), .
:
o ()
o
o
o -
o -
o
o (NoSQL)
, 1970 . . , : , .
, . , , , n- . , , , , , , , , , .
.
. , . :
( ),
,
, , ,
.
, , . , , . , . , , , .
. , . .
|
|
<_, _ >. . .
<_, _>. . . (, record Pascal struct C).
, , <_, _>, , . , . .
, n ( ), : ( ) ( m ). n m . .
. , , , .
( ). , .
( ). .. , . .
. , , (1NF).
, . . . . . ( .) : , , , , . , .
(.. ).
, ( ) ( ).
, .
, .
|
|
, . ( ).
. : (.. ). , (.. ), . . :
1) ,
2) , .
, .
1) ,
2) () (). , , .
R2 FK , , : a) R1 ( R1 R2 ) CK; b) FK R2 CK R1.
:
, , .
, . , , () .
. : , . , . , ( ), .
, , , :
1) : (UNION), (INTERSECT), (MINUS) (TIMES). , , , .
2) : (WHERE), (PROJECT), (JOIN) (DIVIDE BY).
. . , , . , , ( , ). (RENAME), .
.
_::=
|
|
_ | _
_::=
| |
::=
RENAME _ AS _
::=
_ | (_)
::=
WHERE _
::=
| [ __ ]
_::=
_ _
_:: =
UNION|INERSECT|MINUS|TIES|JOIN|DIVIDEBY
.
1) UNION, INTERSECT MINUS , , . . .
2) , UNION, INTERSECT, TIMES JOIN .
3) A B , A JOIN B A TIMES B, . . . .
4) :
( RENAE -). _ AS _.
5) , , , . .
, . . .
Y :
A JOIN B = ((A TIMES (B RENAME Y AS Y1)) WHERE Y=Y1)[X, Y, Z]
:
A INTERSECT B = A MINUS (A MINUS B)
, :
A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X]
(, , , , ) .
, :
S(Sno: integer, Sname: string, Status: integer, City: string)
P(Pno: integer, Pname: string, Color: string, Weight: real, City: string)
SP(Sno: integer, Pno: integer, Qty: integer)
, , , SP () S () P ().
1) , 2.
((SP JOIN S) WEPE no = 2) [ Sname ]
2) , .
((( WERE Color = '') JOIN SP) [ Sno ] JOIN S) [ Sname ]
:
((( WERE Color = '') [ no ] JOIN SP) JOIN S) [ Sname ]
: .
3) , .
((SP [ Sno, no] DIVIDE BY [ no ] JOIN S) [ Sname ]
4) , , 2.
SP [ Sno, no ] DIVIDE Y (SP WEPE Sno = 2) [ no ]
5) ,
(((S RENAE Sno AS FirstSno) [ FirstSno, City ] JOIN
(S RENAE Sno AS SecondSno) [ SecondSno, City ])
WEPE FirstSno < SecondSno) [ FirstSno, SecondSno ]
6) , 2.
((S[ Sno ] MINUS (SP WEPE no = 2) [ Sno ]) JOIN S) [Sname]
.
, . : . , ( , ), ( , ).
.
--::=
RANGE OF IS -
::=
|
-
-::=
(--)[ WHERE wff ]
-::=
|
. [ AS ]
wff::=
|
NOT wff |
AND wff |
OR wff |
IF THEN wff |
EXISTS (wff) |
FORALL (wff) |
(wff)
::=
(wff) |
-
.
1) , .
2) , (. . ).
3) WHERE, wff ( ). wff (EXISTS FORALL), , , , () . , wff, .
4) wff, , , , ..
T :
RANGE OF T IS R1, R2,..., Rn
R1, R2,..., Rn . . , T , . . , .
.
RANGE OF SX IS S
RANGE OF SPX IS SP
RANGE OF SY IS
(SX) WHERE SX.City = '',
(SX) WHERE EXISTS SPX (SPX.Sno = SX.Sno AND SPX.Pno = 1)
SY S , , 1, .
, .
1) , 2.
SX.Sname WERE EXISTS SPX (SPX.Sno = SX.Sno AND SPX.Pno = 2)
2) , .
SX.Sname WERE EXISTS SPX (SX.Sno = SPX.Sno AND
EXISTS (.no = SPX.no AND PX.Color = ''))
3) , .
SX.Sname WERE FORALL (EXISTS SPX (SPX.Sno = SX.Sno AND SPX.Pno = .no))
, , , , () .
, . , , . , , . . . . , , , .