Ahmad Yoosofan
University of Kashan
,, :
product_name | stock | quantity | customer_name | ||
|---|---|---|---|---|---|
10 | Sugar | 20 | 2 | 32 | Ali |
11 | Salt | 100 | 5 | 32 | Ali |
11 | Salt | 100 | 6 | 33 | Reza |
10 | Sugar | 20 | 3 | 34 | Karim |
product_name | stock | |
|---|---|---|
10 | Sugar | 20 |
11 | Salt | 100 |
customer_name | |
|---|---|
32 | Ali |
33 | Reza |
34 | Karim |
quantity | ||
|---|---|---|
10 | 32 | 2 |
11 | 32 | 5 |
11 | 33 | 6 |
10 | 34 | 3 |
نام جنس | موجودی | میزان فروش | ||
|---|---|---|---|---|
1 | شکر | 1000 | 1 | 12 |
1 | شکر | 1000 | 4 | 14 |
1 | شکر | 1000 | 5 | 5 |
2 | نمک | 1500 | 2 | 10 |
2 | نمک | 1500 | 4 | 20 |
2 | نمک | 1500 | 5 | 30 |
2 | نمک | 1500 | 3 | 40 |
نام جنس | موجودی | |
|---|---|---|
1 | شکر | 1000 |
2 | نمک | 1500 |
میزان فروش | ||
|---|---|---|
1 | 1 | 12 |
1 | 4 | 14 |
1 | 5 | 5 |
2 | 2 | 10 |
2 | 4 | 20 |
2 | 5 | 30 |
2 | 3 | 40 |
A × B = { (a, b) ∣ a ∈ A ∧ b ∈ B}
A={1, 2, 3} and B={x, y}
A × B = {(1, x), (1, y), (2, x), (2, y), (3, x), (3, y)}
B × A = {(x, 1), (x, 2), (x, 3), (y, 1), (y, 2), (y, 3)
A × B ≠ B × A
{ ( a11, a12, a13, ... , a1n ) , # Tuple 1 ( a21, a22, a23, ... , a2n ) , # Tuple 2 .... ( am1, am2, am3, ... , amn ) # Tuple m }
R1 ⊆ S1 * S2 * ... * Sn
{ { a11 : Label_1 , a12 : Label_2 , a13 : Label_3 , ... , a1n : Label_n } , # Tuple 1 { a21 : Label_1 , a22 : Label_2 , a23 : Label_3 , ... , a2n : Label_n } , # Tuple 2 .... { am1 : Label_1 , am2 : Label_2 , am3 : Label_3 , ... , amn : Label_n } , # Tuple m }
{ { a21 : Label_1 , a22 : Label_2 , a23 : Label_3 , ... , a2n : Label_n } , # Tuple 2 { a11 : Label_1 , a12 : Label_2 , a13 : Label_3 , ... , a1n : Label_n } , # Tuple 1 .... { am1n : Label_1 , am2n : Label_2 , am3n : Label_3 , ... , amn : Label_n } , # Tuple m }
{ { a21 : Label_1 , a22 : Label_2 , a23 : Label_3 , ... , a2n : Label_n } , # Tuple 2 { a12 : Label_2 , a13 : Label_3 , a11 : Label_1 , ... , a1n : Label_n } , # Tuple 1 .... { am1 : Label_1 , am2 : Label_2 , am3 : Label_3 , ... , amn : Label_n } , # Tuple m }
http://yoosofan.github.io/webrel/index.html
http://yoosofan.github.io/webrel/help/help.html
p; ------ s minus s ; ------ RELATION { TUPLE{ PN PN("s4"), SNAME SNAME("Clark"), STATUS STATUS(20), CITY CITY("London") } }; ------ p minus RELATION { TUPLE{ PN("p1"), PNAME("Nut"), COLOR("Red"), WEIGHT(12), CITY("London") } };
p union RELATION { TUPLE{ PN("p7"), PNAME("Bult2"), COLOR("White"), WEIGHT(15), CITY("Kashan") }, TUPLE{ PN("p8"), PNAME("Clark"), COLOR("Red"), WEIGHT(20), CITY("London") } };
RELATION { TUPLE{ SN SN("s7"), SNAME SNAME("Clark"), STATUS STATUS(20), CITY CITY("London") }, TUPLE{ SN SN ("s8"), SNAME SNAME("John"), STATUS STATUS(25), CITY CITY("Shiraz") } }; ------ RELATION { TUPLE{ SN("s4"), SNAME("Clark"), STATUS(20), CITY("London") }, TUPLE{ SN("s4"), SNAME("Clark"), STATUS(20), CITY("London") } };
RELATION { TUPLE{SN SN("s4"), SNAME SNAME("Clark"), STATUS STATUS(20), CITY CITY("London")}, TUPLE{SN SN ("s5"), SNAME SNAME("Adam"), STATUS STATUS(40), CITY CITY("London")} } union RELATION { TUPLE{SN SN("s6"), SNAME SNAME("Clark"), STATUS STATUS(20), CITY CITY("London")}, TUPLE{SN SN ("s7"), SNAME SNAME("Adam"), STATUS STATUS(40), CITY CITY("London") } };
a := s union RELATION{ TUPLE{SN("s16"), SNAME("Clark"), STATUS(20), CITY("London")}, TUPLE{SN("s17"), SNAME("Adam"), STATUS(40), CITY("London")} };
SN | SNAME | STATUS | CITY |
|---|---|---|---|
S1 | Smith | 20 | London |
S2 | Jones | 10 | Paris |
S3 | Blake | 30 | Paris |
S4 | Clark | 20 | London |
S5 | Adams | 30 | Athens |
s16 | Clark | 20 | London |
s17 | Adam | 40 | London |
s{city};
a minus s ;
CITY |
|---|
London |
Paris |
Athens |
SN | SNAME | STATUS | CITY |
|---|---|---|---|
s16 | Clark | 20 | London |
s17 | Adam | 40 | London |
p{city} minus s{city};
p{city, pname};
CITY |
|---|
Oslo |
CITY | PNAME |
|---|---|
London | Nut |
Paris | Bolt |
Oslo | Screw |
london | Screw |
Paris | Cam |
London | Cog |
شهرهایی را بیابید که هم عرضه کننده و هم قطعه در آنها هست.
s{city} minus (s{city} minus p{city});
p{city} minus (p{city} minus s{city});
s{city} intersect p{city};
CITY |
|---|
London |
Paris |
شهرهای عرضه کنندگانی را بیابید که در آن شهرها قطعهای نیست.
s{city} minus p{city};
CITY |
|---|
Athens |
شهرهایی را بیابید که یا عرضه کننده یا قطعه یا هر دو در آنهاست.
s{city} union p{city};
شهرهایی را بیابید که یا عرضه کننده یا قطعه در آنها باشد ولی هم قطعه و هم عرضه کننده در آن شهرها نباشد
(s{city} union p{city}) minus (s{city} intersect p{city});
(s{city} minus p{city}) union (p{city} minus s{city});
CITY |
|---|
Athens |
Oslo |
p where city = "Paris";
PN | PNAME | COLOR | WEIGHT | CITY |
|---|---|---|---|---|
P2 | Bolt | Green | 17 | Paris |
P5 | Cam | Blue | 12 | Paris |
نام عرضه کنندگان با وضعیت بیشتر از ۴۰ را بیابید.
s where status > 40;
(s where status > 40){sname};
نام عرضه کنندگانی را بیابید که وضعیت آنها(status) بیشتر از ۲۵ است.
(s where status > 25){sname};
Where
SN | SNAME | STATUS | CITY |
|---|---|---|---|
S3 | Blake | 30 | Paris |
S5 | Adams | 30 | Athens |
Project
SNAME |
|---|
Blake |
Adams |
نام قطعهٔ با شمارهٔ P2 را بیابید.
(P where pn = "P2") {pname};
نام شهرهایی را بیابید که یا قطعهای با وزن بیشتر از 13 در آنها هست یا عرضهکنندهای با وضعیت بیشتر از ۳۴ در آنها هست.
(p where weight > 13){city}; (s where status > 34){city};
(p where weight > 13){city} union (s where status > 34){city};
CITY |
|---|
Paris |
Oslo |
london |
نام شهرهایی را بیابید که یا قطعهای با وزن بیشتر از ۲۴ در آنها هست یا عرضهکنندهای با وضعیت بیشتر از ۲۱ در آنها هست.
(p where weight > 24){city} (s where status > 21){city};
(p where weight > 24){city} union (s where status > 21){city};
CITY |
|---|
Paris |
Athens |
زوج شمارهٔ عرضهکنندگان و شمارهٔ قطعاتی را بیابید که آن عرضه کنندگان آن قطعات را عرضه کرده باشند.
sp{sn , pn};
p{city} times s{status}; p{pname, weight} times s{sname} ; p{pn} times s{sn} ; p{city} times s{city} -- wrong p{pn, pname, color} times s{sn, sname, status};
CITY | STATUS |
|---|---|
London | 20 |
London | 10 |
London | 30 |
Paris | 20 |
Paris | 10 |
Paris | 30 |
Oslo | 20 |
Oslo | 10 |
Oslo | 30 |
زوج شمارهٔ عرضهکنندگان و قطعاتی را بیابید که آن عرضه کنندگان آن قطعات را عرضه نکرده باشند.
PN
SN
P1
S3
P1
S4
P1
S5
P2
S5
P3
S2
P3
S3
.
PN
SN
P3
S4
P3
S5
P4
S2
P4
S3
P4
S5
P5
S2
.
PN
SN
P5
S3
P5
S5
P6
S2
P6
S3
P6
S4
P6
S5
.
(p{pn} times s{sn}) minus sp{sn,pn};
تغییر نام
S rename SN as SN1;
SN1 | SNAME | STATUS | CITY |
|---|---|---|---|
S1 | Smith | 20 | London |
S2 | Jones | 10 | Paris |
S3 | Blake | 30 | Paris |
S4 | Clark | 20 | London |
S5 | Adams | 30 | Athens |
قطعههای عرضه شده را بیابید
p times sp; -- wrong
p times (sp rename pn as sppn) -- need another step
( p times (sp rename pn as sppn) ) where pn = sppn;
( ( p times (sp rename pn as sppn) ) where pn = sppn ) {pn, pname, weight, color, city};
COLOR | PNAME | PN | WEIGHT | CITY |
|---|---|---|---|---|
Red | Nut | P1 | 12 | London |
Green | Bolt | P2 | 17 | Paris |
Blue | Screw | P3 | 17 | Oslo |
Red | Screw | P4 | 14 | london |
Blue | Cam | P5 | 12 | Paris |
Red | Cog | P6 | 19 | London |
نام قطعههای عرضه شده را بیابید
p times (sp rename pn as sppn);
( p times (sp rename pn as sppn) ) where pn = sppn;
( ( p times (sp rename pn as sppn) ) where pn = sppn ) {pname};
PNAME |
|---|
Nut |
Bolt |
Screw |
Cam |
Cog |
زوج شهرهای عرضهکنندگان و شهرهای قطعات را بیابید.
s times p;
s{city} times p{city};
( s rename city as scity ){scity} times p{city};
scity | CITY |
|---|---|
London | London |
London | Paris |
London | Oslo |
Paris | London |
Paris | Paris |
Paris | Oslo |
Athens | London |
Athens | Paris |
Athens | Oslo |
زوج شهرهای عرضهکنندگان و شهرهای قطعات غیرهمشهری را بیابید.
( s rename city as scity ){scity} times p{city};
( ( s rename city as scity ){scity} times p{city} ) where scity <> city;
scity | city |
|---|---|
London | Paris |
London | Oslo |
Paris | London |
Paris | Oslo |
Athens | London |
Athens | Paris |
Athens | Oslo |
زوج نام عرضهکنندگان و نام قطعاتی را بیابید که آن عرضه کننده آن قطعه را عرضه نکرده باشد (I)
(p{pn} times s{sn}) minus sp{sn,pn};
( (p{pn} times s{sn}) minus sp{sn,pn} ) times (s{sn, sname} rename sn as ssn) ;
( (p{pn} times s{sn}) minus sp{sn,pn} ) times (s{sn, sname} rename sn as ssn) times (p{pn, pname} rename pn as ppn) ;
( ( ( (p{pn} times s{sn}) minus sp{sn,pn} ) times (s{sn, sname} rename sn as ssn) ) where sn = ssn ) times (p{pn, pname} rename pn as ppn) ;
زوج نام عرضهکنندگان و نام قطعاتی را بیابید که آن عرضه کننده آن قطعه را عرضه نکرده باشد (II)
( ( ( ( (p{pn} times s{sn}) minus sp{sn,pn} ) times (s{sn, sname} rename sn as ssn) ) where sn = ssn ) times (p{pn, pname} rename pn as ppn) ) where pn = ppn ;
( ( ( (p{pn} times s{sn}) minus sp{sn,pn} ) times (s{sn, sname} rename sn as ssn) times (p{pn, pname} rename pn as ppn) ) where pn = ppn and sn = ssn ) {sname, pname} ;
زوج نام عرضهکنندگان و نام قطعاتی را بیابید که آن عرضه کننده آن قطعه را عرضه نکرده باشد(III)
1 ( 2 ( 3 ( (p{pn} times s{sn}) minus sp{sn,pn} ) 4 times 5 (s{sn, sname} rename sn as ssn) 6 times 7 (p{pn, pname} rename pn as ppn) 8 ) where pn = ppn and sn = ssn 9 ) 10 {sname, pname} 11 ;
1 A := p{pn, pname} times s{sn, sname}; 2 B := (sp{sn, pn} times (s{sn, sname} rename sn as ssn1) where sn = ssn1; 3 C := (B times (p{pn, pname} rename pn as pn1) where pn = pn1; 4 A minus (C{sn, sname, pn, pname})
زوج نام عرضهکنندگان و نام قطعاتی را بیابید که آن عرضه کننده آن قطعه را عرضه نکرده باشد (IV)
1 A := p{pn, pname} times s{sn, sname}; 2 B := ( 3 sp{sn, pn} 4 times 5 ( 6 s{sn, sname} rename sn as ssn1 7 ) where sn = ssn1 8 ) 9 ; 10 C := ( 11 B 12 times 13 ( 14 p{pn, pname} rename pn as pn1 15 ) where pn = pn1 16 ); 17 A minus (C{sn, sname, pn, pname})
نام عرضه کنندگانی را بیابید که قطعهای عرضه کرده باشند.
s times sp
(s rename sn as sn1) times sp
((s rename sn as sn1) times sp) where sn1=sn;
(((s rename sn as sn1) times sp) where sn1=sn){sname};
sname |
|---|
Smith |
Jones |
Blake |
Clark |
نام عرضه کنندگانی را بیابید که عرضهای(qty) بیشتر از ۳۰۰ داشته باشند.
s times sp
(s rename sn as sn1) times sp
(s rename sn as sn1) times (sp where qty > 300)
( (s rename sn as sn1) times (sp where qty > 300) ) where sn1 = sn
( ( (s rename sn as sn1) times (sp where qty > 300) ) where sn1 = sn ) {sname};
( ( (s rename sn as sn1) times sp ) where sn1 = sn and qty > 300 ) {sname};
نام عرضه کنندگانی را بیابید که قطعهٔ P4 را عرضه کرده باشد
( ( (S rename sn as sn1) times (sp where pn = "P4") ) where sn1=sn ){sname};
sname |
|---|
Smith |
Clark |
شهر عرضه کنندگانی را بیابید که قطعهٔ قرمزی را عرضه کرده باشند(I).
شهر عرضهکنندگانی را بیابید که دست کم یک عرضهکننده در آن شهر دستکم یک قطعهٔ قرمز را عرضه کرده باشد
(s rename sn as sn1) times sp
( (s rename sn as sn1) times sp ) where sn1 = sn
( ( (s rename sn as sn1) times sp ) where sn1 = sn ) times (p rename pn as pn1)
( ( (s rename sn as sn1) times sp ) where sn1 = sn ) times ( (p rename pn as pn1) where color = "Red")
شهر عرضه کنندگانی را بیابید که قطعهٔ قرمزی را عرضه کرده باشند(II).
1 ( 2 ( 3 (s rename sn as sn1) 4 times 5 sp 6 ) where sn1 = sn 7 ) 8 times 9 ( 10 ( 11 (p rename pn as pn1) 12 where color = "Red" 13 ){pn1} 14 )
1 ( 2 ( 3 ( 4 ( 5 (s rename sn as sn1) 6 times 7 sp 8 ) where sn1 = sn 9 ) 10 times 11 ( 12 ( 13 (p rename pn as pn1) 14 where color = "Red" 15 ){pn1} 16 ) where pn1 = pn 17 ) 18 ){city} 19 ;
شهر عرضه کنندگانی را بیابید که قطعهٔ قرمزی را عرضه کرده باشند(III).
( ( ( ( ( (s rename sn as sn1) times sp ) where sn1=sn ){pn, city} ) times ( ( ( (p where color = "Red") ){pn} ) ) rename pn as pn1 ) where pn1=pn ){city};
CITY |
|---|
London |
Paris |
شهر عرضه کنندگانی را بیابید که قطعهٔ قرمزی با وزن بیشتر از ۱۳ را عرضه کرده باشند.
1 ( 2 ( 3 ( 4 ( 5 ( 6 (s rename sn as sn1) 7 times 8 sp 9 ) where sn=sn1 10 ){pn, city} 11 ) 12 times 13 ( 14 ( 15 ( 16 (p where color = "Red") 17 where weight > 13 18 ){pn} 19 ) rename pn as pn1 20 ) 21 ) where pn1=pn 22 ){city};
1 ( 2 ( 3 ( 4 ( 5 (s rename sn as sn1) 6 times 7 (sp rename pn as pn1) 8 ) where sn1=sn 9 ){pn1, city} 10 times 11 ( 12 ( 13 (p where color = "Red") 14 where weight > 13 15 ){pn} 16 ) 17 ) where pn1=pn 18 ){city};
شهر عرضه کنندگانی را بیابید که در شهر آنها قطعهای نیز وجود داشته باشد.
s{city} intersect p{city};
نام عرضه کنندگانی را بیابید که در شهر آنها قطعهای وجود ندارد.
s{city} minus p{city};
(s{city} minus p{city}) times (s rename city as scity)
( (s{city} minus p{city}) times (s rename city as scity) ) where city = scity
1 ( 2 ( 3 (s{city} minus p{city}) 4 times 5 (s rename city as scity) 6 ) where city = scity 7 ){sname};
SNAME |
|---|
Adams |
نام قطعههای عرضه شده را بیابید.
1 ( 2 ( 3 p{pn, pname} 4 times 5 (sp rename pn as pn1) 6 ) where pn1 = pn 7 ) {pname};
PNAME |
|---|
Nut |
Bolt |
Screw |
Cam |
Cog |
شهر قطعههای عرضه شده با وزن بیشتر از ۱۵ را بیابید.
1 ( 2 ( 3 (p where weight > 15) 4 times 5 (sp rename pn as pn1) 6 ) where pn1 = pn 7 ){city};
CITY |
|---|
Paris |
Oslo |
London |
نام عرضه کنندگانی را بیابید که قطعهای از شهر پاریس عرضه کرده باشند.
( ( ( ( ( s{sn, sname} times (sp rename sn as sn1) ) where sn1 = sn ) times (p rename pn as pn1) ) where pn1 = pn ) where city = "Paris" ){sname} ;
SNAME |
|---|
Smith |
Jones |
Blake |
Clark |
نام عرضهکنندگانی را بیابید که هیچ قطعهای عرضه نکردهاند.
s{sn} minus sp{sn} ;
( s{sn} minus sp{sn} ) times s ; -- wrong
( s{sn} minus sp{sn} ) times (s rename sn as ssn) ;
( ( s{sn} minus sp{sn} ) times (s rename sn as ssn) ) where sn = ssn;
( ( (s{sn} minus sp{sn}) times (s rename sn as ssn) ) where sn = ssn ){sname} ;
s{sname} minus ( ( s times (sp rename sn as sn1) ) where sn = sn1 ){sname}
( p times (sp rename pn as sppn) ) where sppn = pn
( p times (sp rename pn as sppn) ) where sppn = pn
p join sp
نام قطعههای عرضه شده را بیابید.
( ( p times (sp rename pn as sppn) ) where sppn = pn ){pname};
(p join sp){pname}
نام قطعههای قرمز عرضه شده را بیابید.
( ( (p where color="Red") times (sp rename pn as sppn) ) where sppn = pn ){pname};
( (p where color = "Red") join sp ){pname}
شهر قطعههای عرضه شده با وزن بیشتر از ۱۵ را بیابید.
( (p where weight > 15) join sp ){city};
CITY |
|---|
Paris |
Oslo |
London |
نام عرضه کنندگانی را بیابید که در شهر آنها قطعهای وجود ندارد.
s{city} minus p{city};
(s{city} minus p{city}) join s
( (s{city} minus p{city}) join s ){sname};
s{sname} minus ((s join p){sname});
SNAME |
|---|
Adams |
نام عرضه کنندگانی را بیابید که قطعهای را از شهر پاریس عرضه کرده باشند.
نام عرضه کنندگانی را بیابید که دستکم یکی از قطعههایی که عرضه کردهاند در شهر پاریس باشد.
( (s{sn, sname} join sp) join p) where city = "Paris"){sname} ;
( ( (s{sn, sname} join sp) join p ) where city = "Paris" ){sname} ;
SNAME |
|---|
Smith |
Jones |
Blake |
Clark |
( --- راه حل نادرست ( (s join sp) join p ) where city = "Paris" ){sname} ;
( -- راه حل درست ( (s join sp){pn, sname} join p ) where city = "Paris" ){sname} ;
( -- راه حل نادرست (p{city} where city='Paris') join s ){sname} ;
نام عرضه کنندگانی را بیابید که قطعهای را در شهر خودشان عرضه کرده باشند.
( (s join sp) join p ){sname} ;
SNAME |
|---|
Smith |
Jones |
Blake |
Clark |
-- نادرست۱ ( (s join sp) join (p{city}) ){sname} ;
-- نادرست۲ ( (s join sp) join p{city} ){sname} ;
-- نادرست۳ (s join sp join p{city}){sname} ;
-- نادرست۴ ((s join sp{sn})join p){sname};
-- نادرست۵ ((sp join s){sn, sname} join p){sname};
-- نادرست۶ ((sp join s){sn, sname, city) join p){sname};
-- نادرست۷ (((s join sp ){city}) join p){sname};
نام قطعاتی را بیابید که وزنشان بیشتر از ۱۰ است و عرضهکنندهای در شهر پاریس با وضعیت بیشتر از ۲۰ آنها را عرضه کرده باشد.
( p where weight > 10 ){pn, pname}
(s where status > 20) where city = "Paris"
( p where weight > 10 ){pn, pname} join sp
( ( ( p where weight > 10 ){pn, pname} join sp ) join ( (s where status > 20) where city = "Paris" ) ){pname} ;
PNAME |
|---|
Bolt |
Super Keys ابر کلیدها
Rules for Identification
Guidelines for Optimal Selection
Common Mistakes to Avoid




