Professional Documents
Culture Documents
ﻣﺤـﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺩﺍﻧﺸﮕﺎﻩ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻪ ﺩﺍﺭﺍﻱ ﺑﺨﺶ ﻫﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﻣﺨﺘﻠﻒ ﻣﻲ ﺑﺎﺷﺪ .ﻓﺮﺽ ﻣﻲ ﺷﻮﺩ ﻛﻪ
ﺳﻪ ﺑﺨﺶ ﺍﻣﻮﺭ ﺁﻣﻮﺯﺵ ،ﺍﻣﻮﺭ ﺩﺍﻧﺸﺠﻮﻳﻲ ﻭ ﺍﻣﻮﺭ ﻣﺎﻟﻲ ﺩﺍﻧﺸﮕﺎﻩ ﺑﺨﺸﻬﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺑﺮﺍﻱ ﺁﻧﻬﺎ ﻳﻚ ﺳﻴﺴﺘﻢ
ﺫﺧﻴـﺮﻩ ﻭ ﺑﺎﺯﻳﺎﺑﻲ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﻢ ﻭ ﻧﻴﺰ ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺗﻨﻬﺎ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻮﺭﺩ ﻧﻈﺮ ،ﻣﻮﺟﻮﺩﻳﺖ ﺩﺍﻧﺸﺠﻮ
ﺑﺎﺷـﺪ ﻭ ﺑﺨﺸﻬﺎﻱ ﻓﻮﻕ ﻣﻲ ﺧﻮﺍﻫﻨﺪ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﺩﺭ ﻣﻮﺭﺩ ﺍﻳﻦ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﻭﺍﺿﺢ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻫﺮ ﻳﻚ
ﺍﺯ ﺑﺨﺸﻬﺎﻱ ﻓﻮﻕ ﺍﻧﻮﺍﻉ ﺩﻳﮕﺮﻱ ﺍﺯ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﻣﺜﺎﻝ ﻣﻮﺭﺩ ﺑﺤﺚ ﻗﺮﺍﺭ ﻧﻤﻲ ﮔﻴﺮﻧﺪ.
ﺩﻭ ﺭﻭﺵ ﻭ ﻣﺸﻲ ﻛﻠﻲ ﺩﺭ ﻃﺮﺍﺣﻲ ﺍﻳﻦ ﺳﻴﺴﺘﻢ ﻭﺟﻮﺩ ﺩﺍﺭﺩ:
ﺍﺩﺍﺭﻩ ﺁﻣﻮﺯﺵ ﺍﻣﻮﺭ ﻣﺎﻟﻲ
ﺩﺍﻧﺸﺠﻮ
ﻗﺎﻟﺐ ﺭﻛﻮﺭﺩ ﺍﺯ ﺩﻳﺪ ﺁﻣﻮﺯﺵ ) :ﺩﺍﻧﺸﻜﺪﻩ ،ﺳﺎﻝ ﻭﺭﻭﺩ ،ﺗﺎﺭﻳﺦ ﺗﻮﻟﺪ ،ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﻲ ،ﻧﺎﻡ ،ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮ(
ﺍﻣﻮﺭ ﺩﺍﻧﺸﺠﻮﻳﻲ ﻧﻴﺰ ﻓﺎﻳﻠﻬﺎﻱ ﺧﺎﺹ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﺩ:
ﺍﻣﻮﺭ ﺩﺍﻧﺸﺠﻮﻳﻲ
-٨ﻣﺼـﺮﻑ ﻏﻴـﺮ ﺑﻬﻴـﻨﻪ ﺍﻣﻜﺎﻧـﺎﺕ ﺳـﺨﺖ ﺍﻓـﺰﺍﺭﻱ ﻭ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻭ ﺣﺠﻢ ﺯﻳﺎﺩ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ ﻭ ﺍﺳﺘﻔﺎﺩﻩ ﻏﻴﺮ ﺑﻬﻴﻨﻪ ﺍﺯ ﻣﻬﺎﺭﺕ ﻭ
ﻭﻗﺖ ﺗﻴﻤﻬﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ .
U2 B
A
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺍﻣﻮﺭ ﺩﺍﻧﺸﺠﻮﻳﻲ AP2 M M
S
U3
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺍﻣﻮﺭ ﻣﺎﻟﻲ AP3
ﻣﺤﻴﻂ ﻓﻴﺰﻳﻜﻲ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ
ﻣﺠﺘﻤﻊ ﻭ ﻭﺍﺣﺪ
ﻛﺎﺭﺑﺮﺍﻥ
– ٢-٢-١ﻧﺮﻡ ﺍﻓﺰﺍﺭ:
ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻣﺤﻴﻂ ﺑﺎﻧﻜﻲ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﺗﻘﺴﻴﻢ ﻧﻤﻮﺩ:
–١-٢-٢-١ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻛﺎﺭﺑﺮﺩﻱ:
ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺍﺳﺖ ﻛﻪ ﻛﺎﺭﺑﺮ ﺑﺎﻳﺪ ﺑﺮﺍﻱ ﺗﻤﺎﺱ ﺑﺎ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺁﻣﺎﺩﻩ ﻛﻨﺪ.
-٢-٢-٢-١ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺳﻴﺴﺘﻤﻲ:
ﺑﻴﻦ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻓﻴﺰﻳﻜﻲ ﻛﻪ ﺩﺍﺩﻩ ﻫﺎ ﺑﺼﻮﺭﺕ ﻓﻴﺰﻳﻜﻲ ﺩﺭ ﺁﻥ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﻛﺎﺭﺑﺮﺍﻥ ﺳﻴﺴﺘﻢ ،ﻻﻳﻪ ﺍﻱ ﺍﺯ ﻧﺮﻡ ﺍﻓﺰﺍﺭ
ﻣﻮﺳـﻮﻡ ﺑـﻪ ﻣﺪﻳـﺮ ﺑﺎﻧـﻚ ﺍﻃﻼﻋﺎﺗـﻲ ﻗﺮﺍﺭ ﺩﺍﺭﺩ .ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﻛﺎﺭﺑﺮﺍﻥ ﺍﻣﻜﺎﻥ ﻣﻲ
ﺩﻫـﺪ ﻛـﻪ ﭘﺎﻳﮕـﺎﻩ ﺍﺯ ﺩﻳـﺪ ﺧـﻮﺩ ﺭﺍ ﺗﻌﺮﻳﻒ ﻛﻨﻨﺪ ﻭ ﺑﻪ ﭘﺎﻳﮕﺎﻩ ﺧﻮﺩ ﺩﺳﺘﻴﺎﺑﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ،ﺑﺎ ﭘﺎﻳﮕﺎﻩ ﺧﻮﺩ ﻛﺎﺭ ﻛﻨﻨﺪ ﻭ ﺭﻭﻱ ﺁﻥ
ﻛﻨﺘﺮﻝ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
-٣-٢-١ﻛﺎﺭﺑﺮﺍﻥ:
ﺍﺯ ﻧﻈﺮ ﻭﻇﺎﻳﻔﻲ ﻛﻪ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﻨﺪ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﻛﻠﻲ ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﻧﺪ:
ﺍﻟﻒ :ﻛﺎﺭﺑﺮﺍﻥ ﺑﺎ ﻧﻘﺶ ﻣﺪﻳﺮﻳﺘﻲ )(DBA
ﺏ :ﻛﺎﺭﺑـﺮﺍﻥ ﺑـﺎ ﻧﻘـﺶ ﺍﺳـﺘﻔﺎﺩﻩ ﻛﻨـﻨﺪﻩ ﻛـﻪ ﺑـﻪ ﺩﻭ ﺩﺳـﺘﻪ :ﻛﺎﺭﺑﺮﺍﻥ ﺗﻮﻟﻴﺪ ﻛﻨﻨﺪﻩ ﺳﻴﺴﺘﻢ )ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎﻥ ﻛﺎﺭﺑﺮﺩﻱ( ﻭ ﺍﺳﺘﻔﺎﺩﻩ
ﻛﻨـﻨﺪﮔﺎﻥ ﻧﻬﺎﻳـﻲ ﺳﻴﺴـﺘﻢ ﻣـﻲ ﺗـﻮﺍﻧﺪ ﺗﻘﺴـﻴﻢ ﮔـﺮﺩﺩ .ﺑـﺮﻧﺎﻣﻪ ﻧﻮﻳﺴـﺎﻥ ﻛﺎﺭﺑـﺮﺩﻱ ﻣﺴـﺌﻮﻝ ﻧﻮﺷـﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗﻲ ﺑﻪ ﺯﺑﺎﻥ ﺳﻄﺢ ﺑﺎﻻ ﻳﺎ ﺯﺑﺎﻧﻬﺎﻱ ﻧﺴﻞ ﭼﻬﺎﺭﻡ ) (4GLﻫﺴﺘﻨﺪ.
– ٤-٢-١ﺩﺍﺩﻩ:
ﻣـﻨﻈﻮﺭ ﺩﺍﺩﻩ ﻫﺎﻳـﻲ ﺍﺳـﺖ ﻛـﻪ ﺩﺭ ﻣـﻮﺭﺩ ﺍﻧﻮﺍﻉ ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻱ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﻭ ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﺁﻧﻬﺎ ﻣﻲ ﺑﺎﺷﻨﺪ ﻛﻪ ﺍﺻﻄﻼﺣﹰﺎ ﺑﻪ
ﺁﻧﻬـﺎ ﺩﺍﺩﻩ ﻫـﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﻭ ﻳﺎ ﺩﺍﺩﻩ ﻫﺎﻱ ﭘﺎﻳﺎ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ .ﺩﺍﺩﻩ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻧﻲ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺩﺭ ﺑﺎﻻﺗﺮﻳﻦ
ﺳـﻄﺢ ﺍﻧﺘـﺰﺍﻉ ﻣﺪﻟﺴـﺎﺯﻱ ﻣﻌﻨﺎﻳـﻲ ﺷـﻮﻧﺪ .ﻣﻔﺎﻫـﻴﻢ ﺩﺍﺩﻩ ﻫـﺎ ﺩﺭ ﻫـﺮ ﻣﺤـﻴﻂ ﺑﻪ ﻛﻤﻚ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎ ﻭ ﺍﺭﺗﺒﺎﻃﺎﺕ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ
ﻣﻴﺸﻮﻧﺪ .
ﺍﻧﺘﺨﺎﺏ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ :
ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ :
ﻋﺒﺎﺭﺗﺴـﺖ ﺍﺯ ﻣﻔﻬﻮﻡ ﻛﻠﻲ ﺷﻲﺀ ﭘﺪﻳﺪﻩ ﻭ ﺑﻄﻮﺭ ﻛﻠﻲ ﻫﺮ ﺁﻧﭽﻪ ﺍﺯ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺩﺭ ﻣﻮﺭﺩﺵ ﺍﻃﻼﻉ ﺩﺍﺷﺘﻪ
ﺑﺎﺷﻴﻢ .ﻣﺜﺎﻝ :ﺩﺍﻧﺸﻜﺪﻩ ،ﺩﺭﺱ ،ﺩﺍﻧﺸﺠﻮ ،ﮔﺮﻭﻩ ﺁﻣﻮﺯﺷﻲ .
ﺩﺭ ﻫـﺮ ﻣﺤـﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻒ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ .ﻃﺮﺍﺡ ﭘﺎﻳﮕﺎﻩ ﭘﺲ ﺍﺯ ﻣﻄﺎﻟﻌﻪ ﺩﻗﻴﻖ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ،ﻣﺠﻤﻮﻋﻪ
ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻱ ﻣﺤﻴﻂ ﺭﺍ ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﺪ ﻭ ﺍﻳﻦ ﺍﻭﻟﻴﻦ ﻗﺪﻡ ﺩﺭ ﻃﺮﺍﺣﻲ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺍﺳﺖ.
ﺗـﻮﺟﻪ :ﺗﺸـﺨﻴﺺ ﺩﺭﺳـﺖ ﻣﻮﺟـﻮﺩﻳﺖ ﻫﺎ ﻭ ﺷﻨﺎﺳﺎﻳﻲ ﺭﻭﺍﺑﻂ ﺑﻴﻦ ﺁﻧﻬﺎ ﻗﺒﻞ ﺍﺯ ﻫﺮ ﭼﻴﺰ ﺑﺴﺘﮕﻲ ﺑﻪ ﺍﻳﻦ ﺩﺍﺭﺩ ﻛﻪ ﺩﺭ ﻣﻮﺭﺩ ﭼﻪ
ﭘﺪﻳـﺪﻩ ﻫﺎﻳـﻲ ﭼـﻪ ﺍﻃﻼﻋﺎﺗـﻲ ﺭﺍ ﻣـﻲ ﺧﻮﺍﻫـﻴﻢ ﺩﺍﺷـﺘﻪ ﺑﺎﺷـﻴﻢ .ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻳـﻲ ﺍﻧـﺘﺨﺎﺏ ﻣـﻲ ﺷﻮﻧﺪ ﻛﻪ ﻧﻴﺎﺯﻫﺎﻱ ﺍﻃﻼﻋﺎﺗﻲ ﻫﻤﻪ
ﻛﺎﺭﺑﺮﺍﻥ ﻣﺤﻴﻂ ﻧﺎﻇﺮ ﺑﻪ ﺁﻧﻬﺎ ﺑﺎﺷﺪ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٦ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺻﻔﺎﺕ ﺧﺎﺻﻪ:
ﻫـﺮ ﻣﻮﺟـﻮﺩﻳﺖ ﻣﺠﻤـﻮﻋﻪ ﺍﻱ ﺍﺯ ﺻـﻔﺎﺕ ﺧﺎﺻـﻪ ﺍﺳـﺖ ﻛﻪ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺭﺍ ﻧﻴﺰ ﺑﺎﻳﺪ ﻃﺮﺍﺡ ﺗﻌﻴﻴﻦ ﻛﻨﺪ .ﻫﺮ
ﺻﻔﺖ ﺍﺯ ﻧﻈﺮ ﻛﺎﺭﺑﺮﺍﻥ ﻳﻚ ﻧﺎﻡ ،ﻳﻚ ﻧﻮﻉ ﻭ ﻳﻚ ﻣﻌﻨﺎﻱ ﻣﺸﺨﺺ ﺩﺍﺭﺩ .
ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﻣﻮﺟﻮﺩﻳﺖ ﻛﺎﺭﻣﻨﺪ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺍﺭﺍﻱ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺷﻤﺎﺭﻩ ﻛﺎﺭﻣﻨﺪﻱ ،ﻧﺎﻡ ﻭ ﺣﻘﻮﻕ ﺑﺎﺷﺪ.
ﺍﺭﺗﺒﺎﻁ:
ﻫـﺮ ﻧـﻮﻉ ﺍﺭﺗـﺒﺎﻁ ﻳﻚ ﻣﻌﻨﺎﻱﻣﺸﺨﺺ ﺩﺍﺭﺩ ﻭ ﺑﺎ ﻳﻚ ﻧﺎﻡ ﺑﻴﺎﻥ ﻣﻲ ﺷﻮﺩﻭ ﻧﻴﺰ ﻣﻲ ﺗﻮﺍﻥ ﮔﻔﺖ ﻛﻪ ﻫﺮ ﻧﻮﻉ ﺍﺭﺗﺒﺎﻁ ،ﻋﻤﻠﻲ ﺍﺳﺖ
ﻛﻪ ﺑﻴﻦ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﻭﺟﻮﺩ ﺩﺍﺭﺩ.
ﻻ ﺑﺎ ﻳﻚ ﻋﺒﺎﺭﺕ ﻓﻌﻠﻲ ﻫﻤﺮﺍﻩ ﺍﺳﺖ .ﺍﻳﻦ ﺍﺭﺗﺒﺎﻃﺎﺕ
ﺍﻧﻮﺍﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎﻱ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﻧﺪ ﻛﻪ ﻣﻌﻤﻮ ﹰ
ﻛﻪ ﻫﺮ ﻳﻚ ﺳﻤﺎﻧﺘﻴﻚ ﺧﺎﺹ ﺭﺍ ﺩﺍﺭﺩ ﺑﺎﻳﺪ ﺷﻨﺎﺳﺎﻳﻲ ﺷﺪﻩ ﻭ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺫﺧﻴﺮﻩ ﺷﻮﻧﺪ.
ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﻛﻨﺪ ﻣﺜﺎﻝ - :ﺩﺍﻧﺸﺠﻮ ﺩﺭﺱ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﻛﻨﺪ
ﺩﺍﻧﺸﺠﻮ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﺷﻮﺩ ﺩﺭﺱ -ﺩﺭﺱ ﺗﻮﺳﻂ ﺩﺍﻧﺸﺠﻮ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﺷﻮﺩ
-ﺑﻴﻦ ﺩﻭ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺍﺭﺗﺒﺎﻁ ﻣﺘﻔﺎﻭﺕ ﺑﺎ ﻣﻌﻨﺎﻱ )ﺳﻤﺎﻧﺘﻴﻚ( ﻣﺘﻔﺎﻭﺕ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﺍﺭﺗـﺒﺎﻁ ﻣﻤﻜـﻦ ﺍﺳـﺖ ﺑـﻴﻦ ﻳﻚ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻭ ﺧﻮﺩﺵ ﺑﺎﺷﺪ .ﻣﺜﺎﻝ :ﻗﻄﻌﻪ Xﺩﺭ ﺳﺎﺧﺖ ﻗﻄﻌﻪ Yﺑﻜﺎﺭﻣﻲ ﺭﻭﺩ .ﺑﻪ
ﺍﻳﻦ ﻧﻮﻉ ﺍﺭﺗﺒﺎﻁ ،ﺍﺭﺗﺒﺎﻁ ﺑﺎﺯﮔﺸﺘﻲ ) (Recursive Relationshipﻧﻴﺰ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﺩﺍﻧﺸﺠﻮ
ﻣﺎﻫﻴﺖ ﺍﺭﺗﺒﺎﻁ:
ﺗﻨﺎﻇـﺮ ﺑـﻴﻦ ﻋﻨﺎﺻﺮ ﻣﺠﻤﻮﻋﻪ ﻧﻤﻮﻧﻪ ﻫﺎﻱ ﻳﻚ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ،ﺑﺎ ﻋﻨﺎﺻﺮ ﻣﺠﻤﻮﻋﻪ ﻧﻤﻮﻧﻪ ﻫﺎﻱ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﺩﻳﮕﺮ ﺭﺍ ﻣﺎﻫﻴﺖ
ﺍﺭﺗﺒﺎﻁ ﮔﻮﻳﻨﺪ.
ﻣﺎﻫﻴﺖ ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﺍﻧﻮﺍﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
ﺗﻨﺎﻇﺮ ﻳﻚ ﺑﻪ ﻳﻚ ١:١ ﺍﺭﺗﺒﺎﻁ
ﺗﻨﺎﻇﺮ ﻳﻚ ﺑﻪ ﭼﻨﺪ ١:n ﺍﺭﺗﺒﺎﻁ
ﺗﻨﺎﻇﺮ ﭼﻨﺪ ﺑﻪ ﭼﻨﺪ n:n ﺍﺭﺗﺒﺎﻁ
-ﻣﺎﻫﻴﺖ ﺍﺭﺗﺒﺎﻁ ﺑﺮ ﻣﺒﻨﺎﻱ ﻗﻮﺍﻋﺪﻣﻌﻨﺎﻳﻲ) ﺳﻤﺎﻧﺘﻴﻚ (ﺣﺎﻛﻢ ﺑﺮ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ.
ﻣﺜﺎﻝ :ﺭﺍﺑﻄﻪ ﺑﻴﻦ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎﻱ ﺍﺳﺘﺎﺩ ﻭ ﺩﺭﺱ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ.
ﺍﻟﻒ :ﻳﻚ ﺍﺳﺘﺎﺩ ﺣﺪﺍﻛﺜﺮ ﻳﻚ ﺩﺭﺱ ﺭﺍ ﺍﺭﺍﺋﻪ ﻣﻲ ﻛﻨﺪ ﻭ ﻫﺮ ﺩﺭﺱ ﺩﻗﻴﻘﹰﺎ ﺗﻮﺳﻂ ﻳﻚ ﺍﺳﺘﺎﺩ ﺍﺭﺍﺋﻪ ﻣﻲ ﺷﻮﺩ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻗﻄﻌﻪ ﻣﺜﺎﻝ:
ﺍﺭﺗﺒﺎﻁ ﺩﺭﺟﻪ ١ﻳﺎ ﺭﺍﺑﻄﻪ ﺑﺎﺯﮔﺸﺘﻲ:
ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ
-١-٢-٢ﻣﻮﺟﻮﺩﻳﺖ:
ﻣﻮﺟـﻮﺩﻳﺖ ،ﭼﻴـﺰﻱ ﺍﺳـﺖ ﻛـﻪ ﺑﺼـﻮﺭﺕ ﻣﺘﻤﺎﻳـﺰ ﻗﺎﺑـﻞ ﺷﻨﺎﺳﺎﻳﻲ ﺑﺎﺷﺪ .ﺁﻗﺎﻱ ﭼﻦ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﺭﺍ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﻣﻨﻈﻢ )ﻗﻮﻱ( ﻭ
ﺿﻌﻴﻒ ﺩﺳﺘﻪ ﺑﻨﺪﻱ ﻛﺮﺩ.
– ١ﻣﻮﺟـﻮﺩﻳﺖ ﻣـﻨﻈﻢ)ﻗـﻮﻱ( :ﻣﻮﺟﻮﺩﻳﺘـﻲ ﺍﺳﺖ ﻛﻪ ﻭﺟﻮﺩﺵ ﻭﺍﺑﺴﺘﻪ ﺑﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺩﻳﮕﺮﻱ ﻧﻴﺴﺖ .ﻣﺜﻞ ﻣﻮﺟﻮﺩﻳﺖ
ﺩﺍﻧﺸﺠﻮ ﻭ ﻣﻮﺟﻮﺩﻳﺖ ﺩﺭﺱ ﻛﻪ ﻫﺮﻳﻚ ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﺩﺭ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺩﺍﻧﺸﻜﺪﻩ ﻣﻄﺮﺡ ﻣﻴﺒﺎﺷﻨﺪ.
– ٢ﻣﻮﺟـﻮﺩﻳﺖ ﺿﻌﻴﻒ :ﻣﻮﺟﻮﺩﻳﺘﻲ ﺍﺳﺖ ﻛﻪ ﻭﺟﻮﺩﺵ ﻭﺍﺑﺴﺘﻪ ﺑﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺩﻳﮕﺮ ﺍﺳﺖ .ﺑﻄﻮﺭ ﻣﺜﺎﻝ ﻣﻮﺟﻮﺩﻳﺖ ﺍﻋﻀﺎﺀ
ﺧﺎﻧـﻮﺍﺩﻩ ﻛﺎﺭﻣـﻨﺪ ﻭﺍﺑﺴﺘﻪ ﺑﻪ ﻣﻮﺟﻮﺩﻳﺖ ﻛﺎﺭﻣﻨﺪ ﻣﻲ ﺑﺎﺷﺪ .ﻭ ﻳﺎ ﻣﻮﺟﻮﺩﻳﺖ ﺁﺛﺎﺭ ﻣﻨﺘﺸﺮﻩ ﺍﺳﺘﺎﺩ ،ﻣﻮﺟﻮﺩﻳﺖ ﺿﻌﻴﻒ ﻣﻮﺟﻮﺩﻳﺖ
ﺍﺳﺘﺎﺩ ﺍﺳﺖ.
ﺩﺭ ﻧﻤـﻮﺩﺍﺭ E / Rﻣﻮﺟﻮﺩﻳـﺘﻬﺎﻱ ﻗـﻮﻱ ﺑﺼـﻮﺭﺕ ﻳـﻚ ﻣﺴـﺘﻄﻴﻞ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ ﻛﻪ ﻣﺤﺘﻮﺍﻱ ﺁﻥ ﺩﺭ ﺑﺮ ﮔﻴﺮﻧﺪﻩ ﻧﺎﻡ ﻧﻮﻉ
ﻣﻮﺟﻮﺩﻳﺖ ﻣﻮﺭﺩ ﻧﻈﺮ ﺍﺳﺖ .ﺩﺭ ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻱ ﺿﻌﻴﻒ ﻣﺮﺯ ﻣﺴﺘﻄﻴﻞ ﺑﺼﻮﺭﺕ ﺩﻭ ﺧﻄﻲ ﺍﺳﺖ.
ﺁﺩﺭﺱ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻧﻜﺘﻪ :ﺩﺭ ﻣﺪﻝ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍﺑﻄﻪ ﺍﻱ ﺻﻔﺖ ﺧﺎﺻﻪ ﻣﺮﻛﺐ ﺟﺎﻳﻲ ﻧﺪﺍﺭﺩ.
Single Valued / Multi Valued ﺝ– ﺻﻔﺖ ﺧﺎﺻﻪ ﺗﻚ ﻣﻘﺪﺍﺭﻱ /ﭼﻨﺪ ﻣﻘﺪﺍﺭﻱ
ﺻـﻔﺎﺗﻲ ﻛـﻪ ﻓﻘـﻂ ﻳﻚ ﻣﻘﺪﺍﺭ ﺭﺍ ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﺍﺯ ﺯﻣﺎﻥ ﺑﻪ ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﺩﻫﻨﺪ ﺑﻪ ﺻﻔﺎﺕ ﺗﻚ ﻣﻘﺪﺍﺭﻱ ﻣﻌﺮﻭﻓﻨﺪ .ﺑﻪ ﻋﻨﻮﺍﻥ
ﻣـﺜﺎﻝ ﺷـﻤﺎﺭﻩ ﺩﺍﻧﺸـﺠﻮﻳﻲ ،ﺗـﺎﺭﻳﺦ ﺗـﻮﻟﺪ ﺗـﻚ ﻣﻘـﺪﺍﺭﻱ ﻫﺴﺘﻨﺪ.ﺍﮔﺮ ﺑﺮﺍﻱ ﻳﻚ ﺻﻔﺖ ﺧﺎﺻﻪ ﭼﻨﺪﻳﻦ ﻣﻘﺪﺍﺭ ﺑﺘﻮﺍﻧﺪ ﻗﺮﺍﺭ ﮔﻴﺮﺩ
ﺻﻔﺖ ﺧﺎﺻﻪ ﭼﻨﺪ ﻣﻘﺪﺍﺭﻱ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ.
ﺑﻄـﻮﺭ ﻣـﺜﺎﻝ :ﺻـﻔﺖ ﺧﺎﺻﻪ ﻣﺪﺭﻙ ﻭ ﻳﺎ ﺗﻠﻔﻦ ﺑﺮﺍﻱ ﺍﺳﺘﺎﺩ ﭼﻨﺪ ﻣﻘﺪﺍﺭﻱ ﻣﺤﺴﻮﺏ ﻣﻲ ﺷﻮﺩ .ﺯﻳﺮﺍ ﻳﻚ ﺍﺳﺘﺎﺩ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺍﺭﺍﻱ
ﭼـﻨﺪ ﻣـﺪﺭﻙ ﻭ ﻳـﺎ ﺗﻠﻔـﻦ ﻣﺨـﺘﻠﻒ ﺑﺎﺷﺪ .ﺩﺭ ﻧﻤﻮﺩﺍﺭ E / Rﺑﺮﺍﻱ ﺻﻔﺖ ﺧﺎﺻﻪ ﭼﻨﺪ ﻣﻘﺪﺍﺭﻱ ﺍﺯ ﺑﻴﻀﻲ ﺩﻭ ﺧﻄﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ
ﺷﻮﺩ.
ﻧﻜﺘﻪ :ﺗﺼﻤﻴﻢ ﮔﻴﺮﻱ ﺩﺭ ﻣﻮﺭﺩ ﺻﻔﺖ ﻣﺸﺘﻖ ﺩﺭ ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﺑﻌﻬﺪﻩ ﻃﺮﺍﺡ ﺍﺳﺖ.
ﺣﺬﻑ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺣﺬﻑ
:Total participation:ﻫﺮ ﻣﻮﺟﻮﺩﻳﺖ ﺣﺪﺍﻗﻞ ﺩﺭ ﻳﻚ ﺭﺍﺑﻄﻪ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺍﺭﺗﺒﺎﻁ ﻣﺸﺎﺭﻛﺖ ﺩﺍﺭﺩ.
ﻣﺜﺎﻝ :ﻣﺸﺎﺭﻛﺖ ﻭﺍﻡ ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﻭﺍﻡ ﮔﺮﻓﺘﻦ ﻛﺎﻣﻞ ﺍﺳﺖ .ﻫﺮ ﻭﺍﻡ ﺑﺎﻳﺪ ﺣﺪﺍﻗﻞ ﻳﻚ ﻣﺸﺘﺮﻱ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺍﺭﺗﺒﺎﻁ ﻭﺍﻡ
ﮔﻴﺮﻧﺪﻩ ﺩﺍﺭﺩ.
: Partial participationﺑﺮﺧﻲ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﻫﻴﭻ ﺍﺭﺗﺒﺎﻃﻲ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺍﺭﺗﺒﺎﻃﺎﺕ
ﻣﺸﺎﺭﻛﺖ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﻣﺜﻼ :ﻫﻤﻪ ﻣﺸﺘﺮﻳﺎﻥ ﻣﻤﻜﻦ ﺍﺳﺖ ﻭﺍﻡ ﻧﮕﻴﺮﻧﺪ.ﻳﻌﻨﻲ ﻣﺸﺎﺭﻛﺖ ﻣﺸﺘﺮﻱ ﻧﺎﻛﺎﻣﻞ ﺍﺳﺖ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٢ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻧﻤﺮﻩ ﺗﺮﻡ
ﺣﺬﻑ
ﺗﺮﻡ
ﻧﻮﻉ ﺣﺬﻑ
N M
ﺩﺭﺱ ﺍﻧﺘﺨﺎﺏ ﺩﺍﻧﺸﺠﻮ
1 N
ﺣﺬﻑ
ﺑـﺮﺍﻱ ﻧﻤـﺎﻳﺶ ﻣﺎﻫـﻴﺖ ﺍﺭﺗـﺒﺎﻁ ﺩﺭ ﻧﻤـﻮﺩﺍﺭ E/Rﺭﻭﺵ ﺩﻳﮕـﺮﻱ ﻧﻴـﺰ ﻭﺟـﻮﺩ ﺩﺍﺭﺩ .ﺩﺭ ﺍﻳـﻦ ﺭﻭﺵ ﺑﻪ ﻫﺮ ﻣﺸﺎﺭﻛﺖ ﻳﻚ ﻧﻮﻉ
ﺍﻧﺘﺴﺎﺏ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﺩﺭ ﻣﻮﺟﻮﺩﻳﺖ ﺩﺭ ﻳﻚ ﺍﺭﺗﺒﺎﻁ ،ﻳﻚ ﺯﻭﺝ ﻋﺪﺩ ﺻﺤﻴﺢ ﺑﻪ ﺻﻮﺭﺕ )( min,max
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٣ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻫـﺮ ﻟﺤﻈـﻪ ،ﻫـﺮ ﻧﻤـﻮﻧﻪ ﻣﻮﺟﻮﺩﻳﺖ eﺍﺯ ﻧﻮﻉ Eﺑﺎﻳﺪ ﺣﺪﺍﻗﻞ ﺩﺭ minﻭ ﺣﺪﺍﻛﺜﺮ ﺩﺭ maxﻧﻤﻮﻧﻪ ﺍﺯ ﺍﺭﺗﺒﺎﻁ Rﺷﺮﻛﺖ ﺩﺍﺷﺘﻪ
ﺑﺎﺷﺪ .ﺍﮔﺮ min=0ﻣﺸﺎﺭﻛﺖ ﻏﻴﺮ ﺍﻟﺰﺍﻣﻲ)ﺍﺧﺘﻴﺎﺭﻱ( ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻨﺼﻮﺭﺕ ﻣﺸﺎﺭﻛﺖ ﺍﻟﺰﺍﻣﻲ ﺍﺳﺖ .
Computer
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ
ﻧﺎﻡ
-١ -٥-٢-٢ﺗﺨﺼﻴﺺ ):(SPECIALIZATION
ﻣﺸـﺨﺺ ﻛـﺮﺩﻥ ﮔـﻮﻧﻪ ﻫﺎﻱ ﺧﺎﺹ ﻳﻚ ﺷﻲﺀ ﺭﺍ ﺗﺨﺼﻴﺺ ﮔﻮﻳﻨﺪ .ﺑﻄﻮﺭ ﻣﺜﺎﻝ ﺍﮔﺮ ﺷﻲﺀ ﻣﻮﺟﻮﺩ ﺯﻧﺪﻩ ﺭﺍ ﺩﺭﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ
ﺳـﻪ ﮔـﻮﻧﻪ ﺧﺎﺹ ﺁﻥ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :ﺍﻧﺴﺎﻥ ،ﺣﻴﻮﺍﻥ ﻭ ﻧﺒﺎﺕ .ﺩﺭ ﻧﻤﻮﺩﺍﺭ E/Rﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻴﺘﻮﺍﻧﺪ ﺯﻳﺮﻧﻮﻉ ﻫﺎﻳﻲ ﺩﺍﺷﺘﻪ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
IS ﻳﺎ ﻫﺴﺖ ﻳﻚ … ﺑﺎﺷﺪ .ﮔﻮﻳﻴﻢ ﺑﻴﻦ ﻫﺮ ﺯﻳﺮ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻭ ﺍﺑﺮ ﻧﻮﻉ ﺁﻥ ﺍﺭﺗﺒﺎﻁ “ ﮔﻮﻧﻪ ﺍﻱ ﺍﺳﺖ ﺍﺯ”...
- Aﻭﺟﻮﺩ ﺩﺍﺭﺩ .
ﺗﺨﺼـﻴﺺ :ﻳـﻚ ﻓـﺮﺍﻳﻨﺪ ﺍﺯ ﺑـﺎﻻ ﺑـﻪ ﭘﺎﻳـﻴﻦ ﺍﺳـﺖ .ﺩﺭ ﺗﺨﺼـﻴﺺ ﻳـﻚ ﻣﻮﺟـﻮﺩﻳﺖ ﺑﻪ ﮔﻮﻧﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﮔﺮﻭﻩ ﺑﻨﺪﻱ
ﻣـﻲ ﺷﻮﺩ .ﺍﻳﻦ ﮔﺮﻭﻫﻬﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﻮﺟﻮﺩﻳﺖ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﺮ ﺁﻥ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻨﻈﻮﺭ ﻣﻲ ﮔﺮﺩﻧﺪ .ﺩﺭ ﻧﻤﻮﺩﺍﺭ E/Rﺗﺨﺼﻴﺺ
ﺑـﺎ ﻳـﻚ ﻣـﺜﻠﺚ ﺣـﺎﻭﻱ ISAﻧﺸـﺎﻥ ﺩﺍﺩﻩ ﻣـﻲ ﺷـﻮﺩ .ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﻤﺎﻡ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ
ﺳﻄﺢ ﺑﺎﻻﺗﺮ ﺭﺍ ﺑﻪ ﺍﺭﺙ ﻣﻲ ﺑﺮﺩ.
ﻧﺎﻡ
ﺷﻤﺎﺭﻩ ﺩﺍﻧﺸﺠﻮ
ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﻲ
٢
-٢-٥-٢-٢ﺗﻌﻤﻴﻢ :
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٥ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺗﻌﻤـﻴﻢ ﻋﻜـﺲ ﻋﻤـﻞ ﺗﺨﺼـﻴﺺ ﺍﺳـﺖ ﺑـﻪ ﺍﻳﻦ ﻣﻌﻨﺎ ﻛﻪ ﺑﺎ ﺩﺍﺷﺘﻦ ﺯﻳﺮ ﻧﻮﻉ ﻫﺎﻱ ﺧﺎﺹ ،ﺻﻔﺎﺕ ﻣﺸﺘﺮﻙ ﺑﻴﻦ ﺁﻧﻬﺎ ﺭﺍ ﺩﺭ ﻳﻚ
ﻣﺠﻤـﻮﻋﻪ ﺻـﻔﺎﺕ ﺑـﺮﺍﻱ ﻳـﻚ ﺍﺑـﺮﻧﻮﻉ ﻣﻮﺟـﻮﺩﻳﺖ ﺩﺭ ﻧﻈـﺮ ﻣـﻲ ﮔﻴﺮﻳﻢ .ﺗﻌﻤﻴﻢ ﻳﻚ ﻓﺮﺍﻳﻨﺪ ﺍﺯ ﭘﺎﻳﻴﻦ ﺑﻪ ﺑﺎﻻﺳﺖ ﻛﻪ ﺗﻌﺪﺍﺩﻱ
ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺘﻲ ﻛﻪ ﺧﺼﻮﺻﻴﺎﺕ ﻣﺸﺘﺮﻙ ﺩﺍﺭﻧﺪ ﺭﺍ ﺑﺎﻫﻢ ﺗﺮﻛﻴﺐ ﻣﻲ ﻛﻨﺪ.
ﺗﻮﺟﻪ -:ﺗﺨﺼﻴﺺ ﻭ ﺗﻌﻤﻴﻢ ﻣﻌﻜﻮﺱ ﻳﻜﺪﻳﮕﺮﻧﺪ ﻛﻪ ﻫﺮ ﺩﻭ ﺩﺭ ﻧﻤﻮﺩﺍﺭ ﺑﺎﻳﻚ ﺷﻜﻞ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ.
Disjoint
ﺑﻪ ﻣﻌﻨﺎﻱ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻲ ﺗﻮﺍﻧﺪ ﻓﻘﻂ ﺑﻪ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﻌﻠﻖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺩﺭ ﻧﻤﻮﺩﺍﺭ
E/Rﺑﺎ ﻧﻮﺷﺘﻦ ﻋﺒﺎﺭﺕ disjointﺩﺭ ﻛﻨﺎﺭ ﻣﺜﻠﺚ ISAﺍﻳﻦ ﻗﻴﺪ ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮﺩ.
Overlapping
ﺑﻪ ﻣﻌﻨﺎﻱ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻲ ﺗﻮﺍﻧﺪ ﻓﻘﻂ ﺑﻪ ﻳﻚ ﻳﺎ ﺑﻴﺸﺘﺮ ﺍﺯﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﻌﻠﻖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﻗـﻴﺪ ﺩﻳﮕﺮﻱ ﻛﻪ ﺩﺭ ﺗﻌﻤﻴﻢ ﻣﻄﺮﺡ ﺷﺪﻩ ،ﻗﻴﺪ ﻛﺎﻣﻞ ﺑﻮﺩﻥ ﺍﺳﺖ ﻛﻪ ﺑﻴﺎﻧﮕﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﺳﻄﺢ ﺑﺎﻻﺗﺮ ﺑﺎﻳﺪ
ﻣـﺘﻌﻠﻖ ﺑﻪ ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎﻱ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﺮ ﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ .ﺑﺮ ﺍﻳﻦ ﺍﺳﺎﺱ ﺩﻭ ﻧﻮﻉ ﻗﻴﺪ ﻛﺎﻣﻞ ﻭ ﺟﺰﺋﻲ ﺭﺍ
ﺩﺍﺭﻳﻢ :
: totalﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﺑﺎﻳﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎﻱ ﺳﻄﺢ ﭘﺎﻳﻴﻨﺘﺮ ﺑﺎﺷﺪ.
:partialﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻲ ﺗﻮﺍﻧﺪ ﻣﺘﻌﻠﻖ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎﻱ ﺳﻄﺢ ﭘﺎﻳﻴﻨﺘﺮ ﻧﺒﺎﺷﺪ.
ﺣﺎﻟـﺖ ﭘـﻴﺶ ﻓﺮﺽ ﻣﺴﺎﻟﻪ ،ﺣﺎﻟﺖ ﺟﺰﺋﻲ ﺍﺳﺖ .ﺑﺮﺍﻱ ﺑﻴﺎﻥ ﻗﻴﺪ ﻛﺎﻣﻞ ﺑﻮﺩﻥ ﺑﺎﻳﺪ ﺍﺯ ﺩﻭ ﺧﻂ ﺍﺳﺘﻔﺎﺩﻩ ﮔﺮﺩﺩ)ﻫﻤﺎﻧﻨﺪ ﻣﺸﺎﺭﻛﺖ
ﺍﻟﺰﺍﻣﻲ/ﻛﺎﻣﻞ ﺩﺭ ﻧﻤﻮﺩﺍﺭ ( E/R
ﺗﻤﺮﻳﻦ ٥ :ﻣﺜﺎﻝ ﻣﺨﺘﻠﻒ ﺍﺯ ﺗﻌﻤﻴﻢ ﺫﻛﺮ ﻛﻨﻴﺪ ﻭ ﺩﺭ ﻫﺮ ﻛﺪﺍﻡ ﻗﻴﻮﺩ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﺮﺭﺳﻲ ﻧﻤﺎﻳﻴﺪ.
Aggregation -٦-٢-٢ﺗﺠﻤﻊ
ﺗﺠﻤـﻊ ﻳﻌﻨﻲ ﺳﺎﺧﺘﻦ ﻳﻚ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﺟﺪﻳﺪ ﻭ ﻭﺍﺣﺪ ﺑﺮ ﺍﺳﺎﺱ ﺩﻭ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﺩﻭ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ،ﻛﻪ ﺧﻮﺩ ﺑﺎﻫﻢ ﺍﺭﺗﺒﺎﻁ
ﺩﺍﺭﻧـﺪ.ﺩﺭ ﻭﺍﻗﻊ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﻭ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺭﺍ ﺑﺎ ﻫﻢ ﻣﺠﺘﻤﻊ ﻛﺮﺩﻩ ﻭ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﻭﺍﺣﺪ ﺩﺭ ﻧﻈﺮ
ﻣﻴﮕﻴـﺮﻧﺪ .ﻭ ﺍﻳـﻦ ﻧـﻮﻉ ﻣﻮﺟـﻮﺩﻳﺖ ﺧـﻮﺩ ﻣـﻲ ﺗـﻮﺍﻧﺪ ﺑـﺎ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺖ ﺩﻳﮕﺮﻱ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺩﺭ ﻭﺍﻗﻊ ﺯﻣﺎﻧﻲ ﺍﺯ ﺗﺠﻤﻊ
ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻮﺩ ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺍﺭﺗﺒﺎﻃﻲ ﺭﺍ ﺑﻴﻦ ﺍﺭﺗﺒﺎﻁ ﻫﺎ ﺑﻴﺎﻥ ﻛﻨﻴﻢ ﻭ ﻳﺎ ﺑﺨﻮﺍﻫﻴﻢ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺍﻓﺰﻭﻧﻪ ﺭﺍ ﻛﻢ ﻛﻨﻴﻢ.
ﻣﺜﺎﻝ :ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﻧﻮﻉ ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻱ ﺩﺍﻧﺸﺠﻮ ،ﺩﺭﺱ ﻭ ﺍﺳﺘﺎﺩ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﻫﻤﺎﻧﻨﺪ ﺷﻜﻞ ﺯﻳﺮ ﻣﺪﻟﺴﺎﺯﻱ ﻧﻤﻮﺩ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺍﺳﺘﺎﺩ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٨ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
Qty
P name
PP
Salary Dept# E nane E mp#
Qty
ﺍﺭﺗـﺒﺎﻁ ﻣﻤﻜـﻦ ﺍﺳـﺖ ﻣﺎﺑﻴﻦ ﺑﻴﺶ ﺍﺯ ﺩﻭ ﻣﻮﺟﻮﺩﻳﺖ ﺑﺎﺷﺪ) . (SPJﺍﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺍﺯ ﺍﻳﻦ ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﺳﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺑﻪ
ﺩﺳﺖ ﻣﻲ ﺁﻳﺪ ﻫﻤﻴﺸﻪ ﻟﺰﻭﻣﹰﺎ ﻫﻤﺎﻥ ﺍﻃﻼﻋﺎﺗﻲ ﻧﻴﺴﺖ ﻛﻪ ﺍﺯ ﺍﺭﺗﺒﺎﻁ ﺩﻭ ﺑﻪ ﺩﻭﻱ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ.
ﻣﺜﺎﻝ:
– ١ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ S1ﻗﻄﻌﻪ P1ﺭﺍ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﺪ.
– ٢ﻗﻄﻌﻪ P1ﺩﺭ ﭘﺮﻭﮊﻩ J1ﺑﻜﺎﺭ ﺭﻓﺘﻪ ﺍﺳﺖ.
– ٣ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ S1ﺑﺮﺍﻱ ﭘﺮﻭﮊﻩ J1ﻗﻄﻌﻪ ﺗﻬﻴﻪ ﻛﺮﺩﻩ ﺍﺳﺖ.
– ٤ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ S1ﻗﻄﻌﻪ P1ﺭﺍ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﭘﺮﻭﮊﻩ J1ﺗﻬﻴﻪ ﻛﺮﺩﻩ ﺍﺳﺖ.
ﻫﻤﻴﺸﻪ ﺍﺯ ﺍﻃﻼﻉ ١ﻭ ٢ﻭ ٣ﻧﻤﻲ ﺗﻮﺍﻥ ﺍﻃﻼﻉ ٤ﺭﺍ ﻧﺘﻴﺠﻪ ﮔﺮﻓﺖ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٢٠ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
-٢ﺗﻮﻟﻴﺪ ﺧﻮﺩﻛﺎﺭ ﺟﻤﻼﺕ SQLﺑﺮﺍﻱ ﺗﻌﺮﻳﻒ ﺟﺪﻭﻟﻬﺎ ،ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎ ،ﺍﻧﺪﻳﺲ ﻫﺎ ﻭ ﺩﻳﮕﺮ ﺍﺷﻴﺎﺀ ﻣﺪﻝ ﺭﺍﺑﻄﻪ ﺍﻱ.
-٣ﺍﻣﻜﺎﻥ ﻣﺴﺘﻨﺪ ﺳﺎﺯﻱ ﻫﺮ ﻣﻮﺟﻮﺩﻳﺖ ،ﺻﻔﺖ ﺧﺎﺻﻪ ،ﺭﺍﺑﻄﻪ ﻭ ﻣﺤﺪﻭﺩﻳﺖ.
-٤
ﺑﺮﺧﻲ ﺍﺑﺰﺍﺭ ﻫﺎ ﻳﻲ ﻛﻪ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﻧﺪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ::
ER STUDIO -١ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ E/Rﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
DB Atrisan -٢ﺑﺮﺍﻱ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﺍﻣﻨﻴﺖ ﺁﻥ
Oracle Developer 2000 & Designer 2000 -٣ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻭ ﺗﻮﺳﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ
Platinum Enterprise Modeling suite : ER Win , BpWin -٤ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﭘﺮﺩﺍﺯﺵ ﻫﺎ
RW Metro -٥ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ ﺍﺯ O-Oﺑﻪ ﻣﺪﻝ ﺭﺍﺑﻄﻪ ﺍﻱ.
Rational Rose -٦ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ UMLﻭ ﺗﻮﻟﻴﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺑﻪ ﺯﺑﺎﻥ ﺟﺎﻭﺍ ﻭ .C++
Visio Enterprise Visual Basic -٧ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﻃﺮﺍﺣﻲ ﻡ ﻣﻬﻨﺪﺳﻲ ﻣﺠﺪﺩ.
X Case -٨ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ ﻣﻔﻬﻮﻣﻲ .
Case Studio -٩ﺑﺮﺍﻱ ﻣﺪﻟﺴﺎﺯﻱ E/Rﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ.
ﺷﺮﻛﺖ ﻛﺎﻣﻞ )ﺍﻟﺰﺍﻣﻲ(ﻣﻮﺟﻮﺩﻳﺖ ﺩﺭ ﺭﺍﺑﻄﻪ R ﺭﺍﺑﻄﻪ ﺑﻴﻦ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ ﻭ ﻣﻮﺟﻮﺩﻳﺖ ﺿﻌﻴﻒ
ISA
E1 E2
E2
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٢٣ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٢٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٢٥ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
-١ﺩﺭ ﻣـﺪﻝ ﺳـﺎﺯﻱ ﺩﺍﺩﻩ ﻫـﺎ ﺑـﺎ ﺭﻭﺵ E/Rﮔـﺎﻩ ﻣﺸـﻜﻼﺗﻲ ﺑـﺮﻭﺯ ﻣﻲ ﻧﻤﺎﻳﺪ ﻛﻪ ﺍﺯ ﺟﻤﻠﻪ ﺁﻧﻬﺎﺗﻠﻪ
ﺍﺭﺗﺒﺎﻃﻲ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﻧﺎﻡ ﺑﺮﺩ.ﺩﻭ ﺣﺎﻟﺖ ﺭﺍﻳﺞ ﺗﺮ ﺍﻳﻦ ﺗﻠﻪ ﺍﺭﺗﺒﺎﻃﻲ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :ﺗﻠﻪ ﻳﻚ ﭼﻨﺪﻱ ﻭ
ﺗﻠﻪ ﺷﻜﺎﻑ ،ﺑﺎ ﺫﻛﺮ ﻣﺜﺎﻟﻲ ﺍﻳﻦ ﺩﻭ ﺣﺎﻟﺖ ﺭﺍ ﺗﻮﺿﻴﺢ ﺩﻫﻴﺪ.
٣
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٢٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
CITY
STAT -١-١-٣ﺗﻌﺮﻳﻒ ﺩﺍﻣﻨﻪ /ﻣﻴﺪﺍﻥ :
SNAME ﻣﺠﻤﻮﻋﻪ ﺍﻳﺴﺖ ﻛﻪ ﻣﻘﺎﺩﻳﺮﻳﻚ ﺻﻔﺖ ﺧﺎﺻﻪ ﺍﺯ ﺁﻥ ﺑﺮﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﻧﺪ.
S#
ﻣﺜﺎﻝ :ﻣﻮﺟﻮﺩﻳﺖ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ:
S# SNAME Status City ﻣﺠﻤﻮﻋﻪ ﻋﻨﻮﺍﻥ
١٠٠ ﻧﺎﻡ١ ٢٠ ﺗﻬﺮﺍﻥ
٢٠٠ ﻧﺎﻡ٢ ٣٠ ﻗﺰﻭﻳﻦ
ﻣﺠﻤﻮﻋﻪ ﺑﺪﻧﻪ
٣٠٠ ﻧﺎﻡ ٣ ٥٠ ﻛﺮﺝ
٢٥٠ ﻧﺎﻡ٤ ١٥ ﺗﺒﺮﻳﺰ
ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﻣﺪﻝ ﺭﺍﺑﻄﻪ ﺍﻱ ﻭ ﻧﻤﺎﻳﺶ ﺟﺪﻭﻟﻲ:
ﺳﺎﺧﺘﺎﺭ ﺟﺪﻭﻟﻲ)ﻃﺮﺍﺡ( ﻣﺪﻝ ﺭﺍﺑﻄﻪ ﺍﻱ)ﺗﺌﻮﺭﻳﺴﻴﻦ(
ﺟﺪﻭﻝ ﺭﺍﺑﻄﻪ
ﺳﻄﺮ ﺗﺎﭘﻞ
ﺳﺘﻮﻥ ﺻﻔﺖ ﺧﺎﺻﻪ
ﻣﻘﺎﺩﻳﺮ ﻣﺠﺎﺯ ﻳﻚ ﺳﺘﻮﻥ ﻣﻴﺪﺍﻥ
ﻭﻗﺘـﻴﻜﻪ ﺍﺳﻢ ﻭ ﻣﺠﻤﻮﻋﻪ ﻋﻨﻮﺍﻥ ﺭﺍﺑﻄﻪ ﻣﺸﺨﺺ ﺑﺎﺷﺪ ﮔﻮﻳﻨﺪ ﺫﺍﺕ ﻳﺎ ﺟﻮﻫﺮ ﺭﺍﺑﻄﻪ ) ( I ntensionﻣﻌﻠﻮﻡ ﺍﺳﺖ .ﺑﻪ ﺑﺪﻧﻪ ﺭﺍﺑﻄﻪ
ﺑﺴﻂ ﺭﺍﺑﻄﻪ ) (Extensionﻧﻴﺰ ﮔﻮﻳﻨﺪ.
ﻧﻜﺘﻪ :ﺫﺍﺕ ﺭﺍﺑﻄﻪ ﺛﺎﺑﺖ ﺩﺭ ﺯﻣﺎﻥ ﺍﺳﺖ ﺍﻣﺎ ﺑﺴﻂ ﺭﺍﺑﻄﻪ ﺩﺭ ﺯﻣﺎﻥ ﻣﺘﻐﻴﺮ ﺍﺳﺖ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٣٠ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
-٢-١-٣ﺩﺭﺟﻪ ﺭﺍﺑﻄﻪ:
ﺗﻌـﺪﺍﺩ ﺻـﻔﺎﺕ ﺧﺎﺻـﻪ ﺭﺍﺑﻄـﻪ ﺭﺍ ﺩﺭﺟـﻪ ﺁﻥ ﮔﻮﻳـﻨﺪ .ﺍﮔﺮ ﺩﺭﺟﻪ ﺭﺍﺑﻄﻪ ﻳﻚ ﺑﺎﺷﺪ ﺭﺍﺑﻄﻪ ﻳﮕﺎﻧﻲ ،ﺭﺍﺑﻄﻪ ﺩﺭﺟﻪ ﺩﻭ ﺭﺍ ﺩﻭﮔﺎﻧﻲ
) ، (binaryﺭﺍﺑﻄﻪ ﺩﺭﺟﻪ ﺳﻪ ﺭﺍ ﺳﻪ ﮔﺎﻧﻲ ) (Ternaryﻭ ﺭﺍﺑﻄﻪ ﺑﺎ ﺩﺭﺟﻪ Nﺭﺍ Nﮔﺎﻧﻲ )(N-rayﮔﻮﻳﻨﺪ.
-٣-١-٣ﻛﺎﺭﺩﻳﻨﺎﻟﻴﺘﻲ ﺭﺍﺑﻄﻪ:
ﺑـﻪ ﺗﻌـﺪﺍﺩ ﺗﺎﭘﻠﻬﺎﻱ ﺭﺍﺑﻄﻪ ﺩﺭ ﻳﻚ ﻟﺤﻈﻪ ﺍﺯ ﺣﻴﺎﺕ ﺁﻥ ﻛﺎﺭﺩﻳﻨﺎﻟﻴﺘﻲ ﺭﺍﺑﻄﻪ ﮔﻮﻳﻨﺪ .ﻛﺎﺭﺩﻳﻨﺎﻟﻴﺘﻲ ﺭﺍﺑﻄﻪ ﺩﺭ ﻃﻮﻝ ﺣﻴﺎﺕ ﺭﺍﺑﻄﻪ
ﻣﺘﻐﻴﺮ ﺍﺳﺖ .ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺭﺍﺑﻄﻪ ﺍﺯ ﺩﺭﺟﻪ ﺭﺍﺑﻄﻪ ٤ﻣﻴﺒﺎﺷﺪ.
-٤-١-٣ﺧﺼﻮﺻﻴﺎﺕ ﺭﺍﺑﻄﻪ:
_١ﺑﻪ ﻛﻤﻚ ﻳﻚ ﺳﺎﺧﺘﺎﺭ ﺳﺎﺩﻩ ﺑﻨﺎﻡ ﺟﺪﻭﻝ ﻗﺎﺑﻞ ﻧﻤﺎﻳﺶ ﺍﺳﺖ.
_٢ﺗﺎﭘـﻞ ﺗﻜـﺮﺍﺭﻱ ﺩﺭ ﺭﺍﺑﻄـﻪ ﻭﺟـﻮﺩ ﻧـﺪﺍﺭﺩ .ﺯﻳـﺮﺍ ﺑﺪﻧـﻪ ﺭﺍﺑﻄﻪ ﻣﺠﻤﻮﻋﻪ ﺍﺳﺖ ﻭ ﺩﺭ ﻣﺠﻤﻮﻋﻪ ﻋﻨﺎﺻﺮ ﺗﻜﺮﺍﺭﻱ ﻭﺟﻮﺩ
ﻧﺪﺍﺭﺩ.
_٣ﺗﺎﭘﻠﻬﺎﺩﺭ ﺭﺍﺑﻄﻪ ﻧﻈﻢ ﺧﺎﺻﻲ ﻧﺪﺍﺭﻧﺪ.ﺍﻳﻦ ﺧﺎﺻﻴﺖ ﻧﻴﺰ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺑﻮﺩﻥ ﺑﺪﻧﻪ ﺭﺍﺑﻄﻪ ﻧﺘﻴﺠﻪ ﻣﻲ ﺷﻮﺩ.
_٤ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﻧﻈﻢ ﻧﺪﺍﺭﻧﺪ .ﺍﻳﻦ ﺧﺎﺻﻴﺖ ﻧﻴﺰ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺑﻮﺩﻥ ﻋﻨﻮﺍﻥ ﺭﺍﺑﻄﻪ ﻧﺘﻴﺠﻪ ﻣﻲ ﺷﻮﺩ
_٥ﻋﻨﺎﺻـﺮ ﺗﺸﻜﻴﻞ ﺩﻫﻨﺪﻩ ﺗﺎﭘﻞ ﺍﺗﻤﻴﻚ ﻫﺴﺘﻨﺪ ﻳﻌﻨﻲ ﺗﺠﺰﻳﻪ ﻧﺸﺪﻧﻲ ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﻌﺒﺎﺭﺗﻲ ﮔﻮﺋﻴﻢ ﻳﻚ ﻓﻘﺮﻩ ﺩﺍﺩﻩ ﺗﺠﺰﻳﻪ
ﻧﺸـﺪﻧﻲ ﺍﺳـﺖ ﺍﮔـﺮ ﻧـﺘﻮﺍﻥ ﺁﻥ ﺭﺍ ﺑﻪ ﻣﻘﺎﺩﻳﺮ ﺩﻳﮕﺮ ﺗﺠﺰﻳﻪ ﻛﺮﺩ.ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﻣﻘﺎﺩﻳﺮ ﺗﺎﺭﻳﺦ ﻣﺎﻫﻴﺘﻲ ﻏﻴﺮ ﺍﺗﻤﻴﻚ ﺩﺍﺭﺩ ﺯﻳﺮﺍ ﺍﺯ ﺳﻪ
ﺟـﺰﺀ ﻣـﺎﻩ ،ﺳـﺎﻝ ﻭ ﺭﻭﺯ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﺍﻳﻦ ﻣﺜﺎﻝ ﺧﺎﺹ ﺍﺗﻤﻴﻚ ﻭ ﻳﺎ ﻏﻴﺮ ﺍﺗﻤﻴﻚ ﺑﻮﺩﻥ ﺗﺎﺭﻳﺦ ﺑﺴﺘﮕﻲ ﺑﻪ ﺩﻳﺪ ﻃﺮﺍﺡ
ﺩﺭ ﻃﺮﺍﺣﻲ ﺩﺍﺭﺩ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺍﻳﻦ ﺩﻭ ﻣﻔﻬﻮﻡ ﻣﻄﻠﻖ ﻧﻴﺴﺘﻨﺪ ﻭ ﺑﻪ ﻣﻌﻨﺎﻳﻲ ﻛﻪ ﻃﺮﺍﺡ ﺑﺮﺍﻱ ﺩﺍﺩﻩ ﻫﺎ ﻗﺎﺋﻞ ﻣﻲ ﺷﻮﺩ ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ.
-٢-٣ﻣﻔﻬﻮﻡ ﻣﻴﺪﺍﻥ ﻭ ﻧﻘﺶ ﺁﻥ ﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺭﻭﻱ ﺑﺎﻧﻚ:
ﻣﻴﺪﺍﻥ :ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻣﻘﺎﺩﻳﺮ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺻﻔﺖ ﺧﺎﺻﻪ ﺍﺯ ﺁﻥ ﻣﻘﺪﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ .ﻣﻴﺪﺍﻥ ﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺭﻭﻱ
ﺑﺎﻧﻚ ﻣﺰﺍﻳﺎﻳﻲ ﺩﺍﺭﺩ ﻛﻪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
-١-٢-٣ﺳﺒﺐ ﺳﺎﺩﻩ ﺗﺮ ﺷﺪﻥ ﻭ ﻛﻮﺗﺎﻫﺘﺮ ﺷﺪﻥ ﺷﻤﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﻴﮕﺮﺩﺩ ).ﺍﺯ ﻧﻈﺮ ﺗﻌﺪﺍﺩ ﺍﺣﻜﺎﻡ ( .ﺯﻳﺮﺍ ﻻﺯﻡ ﻧﻴﺴﺖ ﻛﻪ ﺩﺭ
ﺗﻤﺎﻡ ﺭﺍﺑﻄﻪ ﻫﺎ ،ﻫﺮﺑﺎﺭ ﻣﺸﺨﺼﺎﺕ ﺻﻔﺎﺕ ﺭﺍ ﺑﺪﻫﻴﻢ٠.
ﺑـﺎ ﺗـﻮﺟﻪ ﺑـﻪ ﺗﻌﺎﺭﻳﻒ ﻣﻲ ﺑﻴﻨﻴﻢ ﻫﺮ ﺍﺑﺮﻛﻠﻴﺪ ﻟﺰﻭﻣﺎ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻧﻴﺴﺖ ﺍﻣﺎ ﻫﺮ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺟﺰﺀ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ ﺍﺑﺮ ﻛﻠﻴﺪ ﺭﺍﺑﻄﻪ
ﻫﺴﺖ.
ﻣﺜﺎﻝ :ﺩﺭ ﺭﺍﺑﻄﻪ Sﺻﻔﺖ ﺧﺎﺻﻪ S#ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺍﺳﺖ ﻭ ﺩﺭ ﺭﺍﺑﻄﻪ ( S#, P# ) SPﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺍﺳﺖ.
ﻧﻜﺘﻪ :١ :ﺭﺍﺑﻄﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﻧﻜـﺘﻪ _٢ﻭﺟـﻮﺩ ﺣـﺪﺍﻗﻞ ﻳﻚ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺩﺭ ﺭﺍﺑﻄﻪ ﺗﻀﻤﻴﻦ ﺍﺳﺖ ﺯﻳﺮﺍ ﺩﺭ ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ ﺑﺎ ﺗﺮﻛﻴﺐ ﺗﻤﺎﻡ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺑﻪ
(All ﻳﻜﺘﺎﻳـﻲ ﻣﻘـﺪﺍﺭ ﻣـﻲ ﺭﺳـﻴﻢ .ﺑﻪ ﺭﺍﺑﻄﻪ ﺍﻱ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﻋﻨﻮﺍﻧﺶ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺁﻥ ﺑﺎﺷﺪ ﺍﺻﻄﻼﺣﹰﺎ ﺭﺍﺑﻄﻪ ﺗﻤﺎﻡ ﻛﻠﻴﺪ
) keyﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ.
ﻧﻜﺘﻪ _٣ﻧﻘﺶ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ :ﺍﻣﻜﺎﻧﻲ ﺍﺳﺖ ﺑﺮﺍﻱ ﺍﺭﺟﺎﻉ ﺑﻪ ﺗﺎﭘﻞ ﻳﻌﻨﻲ ﻧﻮﻋﻲ ﻣﻜﺎﻧﻴﺴﻢ ﺁﺩﺭﺱ ﺩﻫﻲ ﺩﺭ ﺳﻄﺢ ﺗﺎﭘﻞ ﺍﺳﺖ.
ﺩﺭ ﺭﺍﺑﻄـﻪ deparmentﺻـﻔﺖ ﺧﺎﺻـﻪ dept #ﻛﻠـﻴﺪ ﺍﺻـﻠﻲ ﺍﺳـﺖ ﻟـﺬﺍ ﺩﺭ ﺭﺍﺑﻄﻪ Employeﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ ﻭ ﻧﻴﺰ
ﺻـﻔﺖ ﺧﺎﺻـﻪ Emp #ﺩﺭ ﺟـﺪﻭﻝ Employeﻛﻠـﻴﺪ ﺍﺻـﻠﻲ ﺍﺳﺖ ﭘﺲ ﺻﻔﺖ ﺧﺎﺻﻪ Manager - Emp #ﺩﺭ ﺭﺍﺑﻄﻪ
departmentﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ ﻭ ﺟﺰﺋﻲ ﺍﺯ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﻫﻢ ﻧﻴﺴﺖ.
ﻧﻜﺘﻪ :ﻟﺰﻭﻣﻲ ﻧﺪﺍﺭﺩ Rjﺍﺯ Riﻣﺘﻤﺎﻳﺰ ﺑﺎﺷﺪ:
) E mploye ( Emp # , Ename, Manager -Emp # , Salay
ﺭﺍﺑﻄﻪ :ﻛﺎﺭﻣﻨﺪ ﻣﺪﻳﺮ ﺍﺳﺖ .
ﻧﻜﺘﻪ:ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺭﺍﺑﻄﻪ ﺭﺍ ﻧﻴﺰ ﺑﺎﻳﺪ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﻌﺮﻓﻲ ﻧﻤﻮﺩ .ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺍﺯ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻮﺩ :
FOREIGN KEY (Attribute) REFERENCE Relation name
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٣٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻗﺎﻋﺪﻩ :١ﻫﺮ ﻣﻮﺟﻮﺩﻳﺖ ﻗﻮﻱ ﺗﻮﺳﻂ ﻳﻚ ﺟﺪﻭﻝ ﺑﺎ ﻫﻤﺎﻥ ﺻﻔﺎﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﺻـﻔﺎﺕ ﻣـﺮﻛﺐ ﺩﺭ ﻣـﺪﻝ ﺭﺍﺑﻄﻪ ﺍﻱ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﻠﻜﻪ ﻓﻘﻂ ﺻﻔﺎﺕ ﺟﺰﺀ ﺁﻥ ﺻﻔﺎﺕ ﻣﺮﻛﺐ ﺑﻄﻮﺭ ﻣﺠﺰﺍ ﺩﺭ ﺟﺪﻭﻝ
ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ.
ﺻـﻔﺖ ﭼـﻨﺪ ﻣﻘﺪﺍﺭﻱ Mﺍﺯ ﻣﻮﺟﻮﺩﻳﺖ Eﺑﺎ ﻳﻚ ﺟﺪﻭﻝ ﻣﺠﺰﺍﻱ EMﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ .ﺍﻳﻦ ﺟﺪﻭﻝ ﺩﺍﺭﺍﻱ
ﺳﺘﻮﻧﻬﺎﻱ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﻛﻠﻴﺪ ﺍﺻﻠﻲ Eﻭ ﺻﻔﺖ Mﺧﻮﺍﻫﺪ ﺑﻮﺩ.
EMPLOYEE
SKILL
Employee_I Skill
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٣٥ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻗﺎﻋـﺪﻩ :٢ﻫـﺮ ﻣﻮﺟـﻮﺩﻳﺖ ﺿـﻌﻴﻒ ﺗﻮﺳـﻂ ﻳﻚ ﺟﺪﻭﻝ ﺑﺎ ﻫﻤﺎﻥ ﺻﻔﺎﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﻪ ﻫﻤﺮﺍﻩ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻣﻮﺟﻮﺩﻳﺖ ﻗﻮﻱ
)ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺍﻳﻦ ﺟﺪﻭﻝ( ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﺟﺪﻭﻝ ﺟﺪﻳﺪ ،ﺗﺮﻛﻴﺒﻲ ﺍﺳﺖ ﺍﺯ ﺷﻨﺎﺳﻪ ﻣﻮﺟﻮﺩﻳﺖ ﺿﻌﻴﻒ ﻭ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻣﻮﺟﻮﺩﻳﺖ ﻗﻮﻱ ﻣﻮﺭﺩ ﻧﻈﺮ .
ﻣﺜﺎﻝ :ﻣﻮﺟﻮﺩﻳﺖ ﺿﻌﻴﻒDEPENDENT
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٣٦ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺩﺭ ﺍﺭﺗـﺒﺎﻃﺎﺕ ﻳـﻚ ﺑـﻪ ﻳـﻚ ،ﻫـﺮ ﻃﺮﻓـﻲ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﻋﻨﻮﺍﻥ ﭼﻨﺪ ﺍﻧﺘﺨﺎﺏ ﺷﻮﺩ.ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻃﺮﻑ
ﻣﻬﻤﺘﺮ ﺑﻪ ﻋﻨﻮﺍﻥ ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﻃﺮﻑ ﻛﻢ ﺍﻫﻤﻴﺖ ﺗﺮ ﺍﺿﺎﻓﻪ ﻣﻲ ﺷﻮﺩ.
ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﺑﺎﺯﮔﺸﺘﻲ ﻳﻚ ﺑﻪ ﭼﻨﺪ ،ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺑﺎﺯﮔﺸﺘﻲ ﺩﺭ ﻫﻤﺎﻥ ﺟﺪﻭﻝ ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﻮﺟﻮﺩﻳﺖ )ﺑﺎ ﺗﻐﻴﻴﺮ ﻧﺎﻡ
ﻛﻠﻴﺪ ﺍﺻﻠﻲ( ﺩﺍﺭﻳﻢ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٣٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺜﺎﻝ :
ﻣﺜﺎﻝ -۴ :ﻧﻤﻮﺩﺍﺭ E/Rﺯیﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕیﺮیﺪ ﺳﭙﺲ ﺟﺪﺍﻭﻝ ﭘﺎیﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺑﺮ ﺍﺳﺎﺱ ﻧﻤﻮﺩﺍﺭ
ﺍﺳﺘﺨﺮﺍﺝ ﻧﻤﺎییﺪ) .ﮐﻠیﺪ ﻫﺎﯼ ﺧﺎﺭﺟﯽ ﻭ ﺍﺻﻠﯽ ﻣﺸﺨﺺ ﮔﺮﺩﻧﺪ (.
ﺩﺍﺭﻭ PHARMACY : ﭘﺰﺷﮏ DRUG : PATIENT :ﺑیﻤﺎﺭ DOCTOR :
ﺩﺍﺭﻭﺧﺎﻧﻪ PHARM-CO :ﺷﺮﮐﺖ ﺩﺍﺭﻭ ﺳﺎﺯﯼ
!Error
٤١ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
Name Phone
Phone-pharm
PHARM-CO
Name Address
DRUG
Name(pharm- Trade-name formula price Name(pharmacy)
co)
PHARMACY
Name address phone
Contract
Name(pharm- Name(pharmacy) from to text supervisor
co)
PATEIENT
ssn name age address Ssn(doctor)
Prescrip
Doctor
ﺍﻳـﻦ ﺣﻜـﻢ ﻣﻤﻜـﻦ ﺍﺳﺖ ﺑﻄﻮﺭ ﺍﺗﻮﻣﺎﺗﻴﻚ ﺗﻮﺳﻂ D BMSﺗﻮﻟﻴﺪ ﺷﻮﺩ ﻭ ﻣﻤﻜﻦ ﺍﺳﺖ ﻻﺯﻡ ﺑﺎﺷﺪ ﻃﺮﺍﺡ ﺁﻥ ﺭﺍ ﺑﻨﻮﻳﺴﺪ ﻻﺯﻡ
ﺑﻪ ﺫﻛﺮ ﺍﺳﺖ ﺍﮔﺮ ﺩﺳﺘﻮﺭ ﺩﻭﻡ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﻋﻜﺲ ﺁﻥ ﺻﺎﺩﻕ ﻧﻴﺴﺖ ﻳﻌﻨﻲ ﻧﻴﺎﺯ ﺑﻪ ﺣﺬﻑ ﺩﺭ Sﻧﻤﻲ ﺑﺎﺷﺪ.
ﺝ ـ ﺭﻭﺵ ﻫﻴﭻ ﻣﻘﺪﺍﺭ ﮔﺬﺍﺭﻱ Nullified
ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ ﺍﮔﺮ ﺩﺭﺧﻮﺍﺳﺖ ﺷﻮﺩ ﺗﺎﭘﻠﻲ ﺍﺯ ﺭﺍﺑﻄﻪ ﻣﺮﺟﻊ ﺣﺬﻑ ﺷﻮﺩ ،ﺍﻳﻦ ﺣﺬﻑ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﺍﻣﺎ ﺩﺭ ﭘﻲ ﺁﻥ ﻣﻘﺪﺍﺭ ﻛﻠﻴﺪ
ﺧﺎﺭﺟﻲ ﺩﺭ ﺭﺍﺑﻄﻪ ﺍﺭﺟﺎﻉ ﺩﻫﻨﺪﻩ NULLﮔﺬﺍﺷﺘﻪ ﻣﻲ ﺷﻮﺩ) .ﺑﺸﺮﻁ ﺍﻳﻨﻜﻪ ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺟﺰ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻧﺒﺎﺷﺪ(
ﻣﺜﺎﻝ:
Delete From S
’Where S# = ‘S2
Update SP
Set S# = Null
’Where S# = ‘S2
ﺗﻮﺟﻪ :ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﻧﻤﻲ ﺗﻮﺍﻥ ﺭﻭﺵ ﻫﻴﭻ ﻣﻘﺪﺍﺭﮔﺬﺍﺭﻱ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩ ﺯﻳﺮﺍ S #ﺩﺭ SPﺟﺰ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﺍﺳﺖ.
ﻧﻜﺘﻪ :ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﺟﺪﺍﻭﻝ ﻭ ﺗﻌﺎﺭﻳﻒ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻭ ﻛﻠﻴﺪﻫﺎﻱ ﺩﻳﮕﺮ ﻭ ﻣﺤﺪﻭﺩﻳﺘﻬﺎ ﻧﻴﺰ ﺷﻤﺎﻱ ﺭﺍﺑﻄﻪ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﻓـﺮﺽ rﺭﺍﺑﻄﻪ ﺭﻭﻱ ﺍﺳﻜﻴﻤﺎﻱ Rﻭ sﺭﺍﺑﻄﻪ ﺍﻱ ﺭﻭﻱ ﺍﺳﻜﻴﻤﺎﻱ Sﺑﺎﺷﺪ .ﻧﺘﻴﺠﻪ ﺭﺍﺑﻄﻪ ﺍﻱ ﺩﺭ ﺍﺳﻜﻴﻤﺎﻱ R ∪ Sﺍﺳﺖ •
ﻛﻪ ﺑﺎ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﻫﺮ ﺟﻔﺖ ﺗﺎﭘﻞ trﺍﺯ rﻭ tsﺍﺯ sﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ .
ﺍﮔـﺮ trﻭ tsﺩﺍﺭﺍﻱ ﻣﻘﺎﺩﻳـﺮ ﻳﻜﺴـﺎﻥ ﺩﺭ ﻫـﺮ ﻳﻚ ﺍﺯ ﺻﻔﺎﺕ ﺧﺎﺻﻪ R ∩Sﺑﺎﺷﻨﺪ ﻳﻚ ﺗﺎﭘﻞ tﺑﻪ ﻧﺘﻴﺠﻪ ﺍﺿﺎﻓﻪ ﻣﻴﺸﻮﺩ •
ﺑﻄﻮﺭﻳﻜﻪ t :ﻫﻤﺎﻥ ﻣﻘﺎﺩﻳﺮ trﺩﺭ rﻭ tsﺩﺭ sﺭﺍﺩﺍﺭﺩ.
)R = (A,B,C,D ﻣﺜﺎﻝ :
)S = (E,B,D
) == (A,B,C,D,Eﺍﺳﻜﻴﻤﺎﻱ ﻧﺘﻴﺠﻪ
r ∞ sﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻴﺸﻮﺩ : •
ﻣﺜﺎﻝ :ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ،ﻗﻄﻌﺎﺕ ،ﭘﺮﻭﮊﻩ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .ﺳﺎﺧﺘﺎﺭ ﺁﻥ ﺩﺭ ﺯﻳﺮ ﺍﺭﺍﺋﻪ ﺷﺪﻩ ﺍﺳﺖ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
ﺟﺒﺮ ﺭﺍﺑﻄﻪ ﺍﻱ ﺑﻪ ﭘﺮﺱ ﻭ ﺟﻮﻫﺎﻱ ﺯﻳﺮ ﭘﺎﺳﺦ ﺩﻫﻴﺪ .
)S (s# , sname , status , city
)P (p# , pname , color , weight , city
)J (j# , jname , city
)SPJ (s# , p# , j# , Qty
-١ﺟﺰﺋﻴﺎﺕ ﻛﺎﻣﻞ ﺗﻤﺎﻡ ﭘﺮﻭﮊﻩ ﻫﺎﻱ ﺷﻬﺮ “ﺗﻬﺮﺍﻥ” ﺭﺍ ﻣﺸﺨﺺ ﻛﻨﻴﺪ .
) ‘ (Jﺗﻬﺮﺍﻥ‘ = бcity ﻳﺎ ‘ ﺗﻬﺮﺍﻥ‘ = J where city
-٢ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ﻗﻄﻌﻪ P2ﺭﺍ ﺑﺪﻫﻴﺪ :
))∏Sname (бP# = ‘P2’(S ∞ SPJ ﻳﺎ )’∏Sname (S join SPJ where P# = ‘P2
ﻳﺎ temp1 ← S join SPJ
’temp2 ← temp1 where P# =’P2
)result ← ∏Sname (temp2
-٣ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﻛﻪ ﺍﻗﻼ ﻳﻚ ﻗﻄﻌﻪ ﺁﺑﻲ ﺭﺍ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﻨﺪ :
] ‘) ∞ SPJ) ∞ S)[snameﺁﺑﻲ‘ = ((P where color
‘ P) ∞ SPJ) ∞ Sﺁﺑﻲ‘ = ∏Sname ((бcolor
-٤ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﺗﻤﺎﻡ ﻗﻄﻌﺎﺕ ﺭﺍ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﻨﺪ :
)∏Sname ((∏(S# , P#) (SPJ) ÷ ∏P# (P) ∞ S
-٥ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﻛﻪ ﻗﻄﻌﻪ P2ﺭﺍ ﺗﻬﻴﻪ ﻧﻤﻲ ﻛﻨﻨﺪ :
](∏S# (S) – (∏S# (бP# = ‘P2’( SPJ)) ∞ S [sname
ﻳﺎ ](S[S#] – (SPJ where P# = ‘p2’) [S#] ) ∞ S [sname
-٦ﺷﻤﺎﺭﻩ ﻗﻄﻌﺎﺗﻲ ﺭﺍ ﻣﺸﺨﺺ ﻛﻨﻴﺪ ﻛﻪ ﺗﻮﺳﻂ ﻳﻚ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﺩﺭ ﺷﻬﺮ ﺗﻬﺮﺍﻥ ﻳﺎ ﭘﺮﻭﮊﻩ ﺍﻱ ﺩﺭ ﺷﻬﺮ ﺗﻬﺮﺍﻥ ﻋﺮﺿﻪ ﻣﻲ
ﺷﻮﺩ :
]‘ )) [P#ﺗﻬﺮﺍﻥ‘ = ‘ )) [P#] ∪ SPJ ∞ ( J Where cityﺗﻬﺮﺍﻥ‘ = SPJ ∞ ( S Where city
∏P# ∪ )) ‘ (Sﺗﻬﺮﺍﻥ‘ = (SPJ ∞ (бcity ) ‘ Jﺗﻬﺮﺍﻥ‘ = ∏P# (SPJ ∞ (бcity
ﻣﺜﺎﻝ : ٢ﻳﻚ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺭ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺑﺎﻧﻚ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻪ ﺩﺍﺭﺍﻱ ﺟﺪﺍﻭﻝ ﺯﻳﺮ ﻣﻲ ﺑﺎﺷﺪ :
ﺷﻌﺒﻪ ﺑﺎﻧﻚ )ﻧﺎﻡ ﺷﻌﺒﻪ ،ﺷﻬﺮ ﺷﻌﺒﻪ ،ﺩﺍﺭﺍﻳﻴﻬﺎ (
ﻣﺸﺘﺮﻱ )ﻧﺎﻡ ﻣﺸﺘﺮﻱ ،ﺁﺩﺭﺱ (
ﺣﺴﺎﺏ )ﺷﻤﺎﺭﻩ ﺣﺴﺎﺏ ،ﻧﺎﻡ ﺷﻌﺒﻪ ،ﻣﻮﺟﻮﺩﻱ (
ﻭﺍﻡ )ﺷﻤﺎﺭﻩ ﻭﺍﻡ ،ﻧﺎﻡ ﺷﻌﺒﻪ ،ﻣﻘﺪﺍﺭ ﻭﺍﻡ (
٥٣ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
depositor loan_branch
city
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٥٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
queryﻫﺎ :
-١ﺗﻤﺎﻣﻲ ﻭﺍﻣﻬﺎﻱ ﺑﻴﺶ ﺍﺯ ١٠٠٠٠٠ﺭﻳﺎﻝ ﺭﺍ ﺑﺪﻫﻴﺪ :
)бamount > 100000 (loan
-٢ﺷﻤﺎﺭﻩ ﻭﺍﻣﻬﺎﻳﻲ ﺭﺍ ﻛﻪ ﺑﻴﺶ ﺍﺯ ١٠٠٠٠٠ﺭﻳﺎﻝ ﻣﻲ ﺑﺎﺷﻨﺪ ﺑﺪﻫﻴﺪ :
))∏loan_number (бamount > 100000 (loan
-٣ﺍﺳﺎﻣﻲ ﺗﻤﺎﻣﻲ ﻣﺸﺘﺮﻳﺎﻧﻲ ﻛﻪ ﻭﺍﻡ ﮔﺮﻓﺘﻪ ﻭ ﺷﻤﺎﺭﻩ ﺣﺴﺎﺏ ﺩﺍﺭﻧﺪ ﺭﺍ ﺑﺪﻫﻴﺪ :
)∏customer_name (borrower) ∩ ∏customer_name (depositor
-٤ﺍﺳﺎﻣﻲ ﺗﻤﺎﻡ ﻣﺸﺘﺮﻳﺎﻧﻲ ﺭﺍ ﻛﻪ ﺩﺭ ﺷﻌﺒﻪ ﻣﺮﻛﺰﻱ ﻭﺍﻡ ﮔﺮﻓﺘﻪ ﺍﻧﺪ ﺑﺪﻫﻴﺪ :
)))’ ( бborrower.loan_number = loan .loan_number (borrower × loanﻣﺮﻛﺰﻱ‘ = ∏customer_name (бbranch_name
-٥ﺍﺳﺎﻣﻲ ﺗﻤﺎﻡ ﻣﺸﺘﺮﻳﺎﻧﻲ ﻛﻪ ﺩﺭ ﺷﻌﺒﻪ ﻧﺎﺩﺭﻱ ﻭﺍﻡ ﮔﺮﻓﺘﻪ ﺍﻧﺪ ﺭﺍ ﺑﺪﻫﻴﺪ :
’)( бborrower.loan_number = loan .loan_numberﻧﺎﺩﺭﻱ‘ = Q1: ∏customer_name (бbranch_name
)))(borrower × loan
’ﻧﺎﺩﺭﻱ‘ = Q2: ∏customer_name ( бloan .loan_number = borrower.loan_number (бbranch_name
))(loan)) × borrower
-٦ﺍﺳﺎﻣﻲ ﺗﻤﺎﻡ ﻣﺸﺘﺮﻳﺎﻧﻲ ﺭﺍ ﻛﻪ ﻳﻚ ﺣﺴﺎﺏ ﺩﺭ ﺗﻤﺎﻡ ﺷﻌﺒﻪ ﻫﺎﻱ ﺷﻬﺮ ﻗﺰﻭﻳﻦ ﺩﺍﺭﻧﺪ ﺭﺍ ﺑﺪﻫﻴﺪ :
∏customer_name , branch_name (depositor )) ” (branchﻗﺰﻭﻳﻦ“ = ∞ account) ÷∏branch_name (бbranch_city
ﻛﻪ ﺩﺭ ﺁﻥ Tﻣﺘﻐﻴﺮ ﺗﺎﭘﻠﻲ ﻭ X1ﻭ X2ﻭ Xn ...ﻋﺒﺎﺭﺍﺕ ﻣﺤﺎﺳﺒﺎﺕ ﺭﺍﺑﻄﻪ ﺍﻱ ﻫﺴﺘﻨﺪ ﻭ ﻧﻤﺎﻳﺎﻧﮕﺮ ﺭﺍﺑﻄﻪ ﻫﺎﻳﻲ ﻣﺜﻞ R2 , R1ﻭ
Rn ...ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﺪﻳﻬﻲ ﺍﺳﺖ ﺍﮔﺮ ﺩﺭﻟﻴﺴﺖ ﺭﺍﺑﻄﻪ ﻫﺎ ﺗﻨﻬﺎ ﻳﻚ ﺭﺍﺑﻄﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﻣﺘﻐﻴﺮ ﺗﺎﭘﻠﻲ ﻣﻘﺎﺩﻳﺮﺵ ﺭﺍ
ﺍﺯ ﻫﻤﺎﻥ ﺭﺍﺑﻄﻪ Rﻣﻲ ﮔﻴﺮﺩ .
RANGE OF SX IS S ﻣﺜﺎﻝ :
ﻳﺎ ; RANGEVAR SX RANGES OVER S
; RANGE OF SPX IS SP
; RANGEVAR SPX RANGES OVER SPﻳﺎ
: ٢-١-٦-٥ﻋﻤﻠﮕﺮ ﻫﺎ
ﺩﻭ ﻋﻤﻠﮕﺮ ﺩﺭ ﻣﺤﺎﺳﺒﺎﺕ ﺭﺍﺑﻄﻪ ﺍﻱ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺍﻧﺪ ﻛﻪ ﺑﻪ ﺁﻧﻬﺎ ﺳﻮﺭ ﮔﻮﻳﻨﺪ .ﻛﻪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :
Exist Quantifireﺑﻪ ﻣﻌﻨﺎﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ : -ﺳﻮﺭ ﻭﺟﻮﺩﻱ
FOR.ALL Quantifireﺑﻪ ﻣﻌﻨﺎﻱ ﺑﺮﺍﻱ ﻫﻤﻪ : -ﺳﻮﺭ ﻫﻤﮕﺎﻧﻲ
ﺑـﻪ ﻛﻤﻚ ﺍﻳﻦ ﺩﻭ ﺳﻮﺭ ﻋﺒﺎﺭﺍﺕ ﻣﺤﺎﺳﺒﺎﺕ ﺭﺍﺑﻄﻪ ﺍﻱ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﺩﺭ ﺁﻥ ﮔﺰﺍﺭﻩ ﻫﺎﻳﻲ ﺑﺮ ﻧﻬﺎﺩﻩ ﻣﻴﺸﻮﺩ .ﺣﺎﺻﻞ ﺍﺭﺯﻳﺎﺑﻲ
ﺍﻳﻦ ﻋﺒﺎﺭﺍﺕ ﻣﻤﻜﻦ ﺍﺳﺖ trueﻭ ﻳﺎ falseﺑﺎﺷﺪ .
N ﻳﺎﺩﺁﻭﺭﻱ :ﻓﺮﺽ X
)EXISTS X (X>10 True
)EXISTS X (X<-5 False
ﺗﻮﺟﻪ :ﺳﻮﺭ ﻫﻤﮕﺎﻧﻲ FORALLﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﻛﻤﻚ ﺳﻮﺭ ﻭﺟﻮﺩﻱ EXISTSﺑﻴﺎﻥ ﻧﻤﻮﺩ .
)FORALL X(f) =NOT EXISTS X (NOT f
ﺳﻮﺍﻝ : ٤ﻧﺎﻡ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﺩﺳﺖ ﻛﻢ ﻳﻚ ﻗﻄﻌﻪ ﻗﺮﻣﺰ ﺭﺍ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﻨﺪ .
SX.SNAME
WHERE EXISTS SPX (SX.S# =SPX.S# AND EXISTS PX (PX.P# =SPX.P# AND
))`PX.COLOR = `RED
ﺳﻮﺍﻝ : ٥ﻧﺎﻡ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﻣﺸﺨﺺ ﻛﻨﻴﺪ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻚ ﻗﻄﻌﻪ ﺍﺯ ﻗﻄﻌﺎﺕ ﻋﺮﺿﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ S2ﺭﺍ ﺗﺎﻣﻴﻦ
SX.SNAME ﻣﻲ ﻛﻨﻨﺪ .
WHERE EXISTS Spx ( EXISTS SPY ( SX.S# =SPX.S# AND SPX.P# =SPY.P# AND SPY.S#
)) `=`S2
ﺳﻮﺍﻝ : ٦ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﺗﻤﺎﻡ ﻗﻄﻌﺎﺕ ﺭﺍ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﻨﺪ .
SX.SNAME WHERE FORALL PX (EXISTS SPX (SPX.S# =SX.S# AND SPX.P#
)) =PX.P#
FORALL ﺟﻮﺍﺏ ﭘﺮﺱ ﻭ ﺟﻮ ﺑﺪﻭﻥ
Sx.SNAME WHERE NOT EXISTS PX (NOT EXISTS SPX (SPX.S# = SX.S# AND SPX
)) .P# = PX.P#
ﺳﻮﺍﻝ : ٧ﺷﻤﺎﺭﻩ ﻭ ﻭﺯﻥ ﻗﻄﻌﺎﺗﻲ ﺭﺍ ﺗﻬﻴﻪ ﻛﻨﻴﺪ ﻛﻪ ﻭﺯﻥ ﻫﺮ ﻗﻄﻌﻪ ﺑﺮ ﺣﺴﺐ ﮔﺮﻡ ﺑﻴﺸﺘﺮ ﺍﺯ ١٠٠٠ﺑﺎﺷﺪ .
)(px.p# , px.WEIGHT * 454 AS GWMT
)WHERE (px.WEIGHT * 454> 1000
ﺳﻮﺍﻝ : ٨ﺷﻬﺮ ﻗﻄﻌﺎﺗﻲ ﺭﺍ ﻣﺸﺨﺺ ﻛﻨﻴﺪ ﻛﻪ ﺑﻴﺶ ﺍﺯ ﺳﻪ ﻗﻄﻌﻪ ﺁﺑﻲ ﺩﺭ ﺁﻥ ﺍﻧﺒﺎﺭ ﺷﺪﻩ ﺑﺎﺷﺪ .
Px.city
WHERE COUNT (PY WHERE PY.city =px.city AND py.color=`BLUE` )>3
ﺩﺭ SQL 92ﺍﻣﻜﺎﻥ ﺗﻌﺮﻳﻒ ﺩﺍﻣﻨﻪ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﺮﺍﻱ ﺍﻳﻨﻜﺎﺭ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺑﺎﻳﺴﺘﻲ ﻧﻮﺷﺘﻪ ﺷﻮﺩ : •
Create domain ﻧﺎﻡ ﺟﺪﻳﺪ ﻧﻮﻉ ] [ not null
)create domain Dollars numeric(12, 2
DELETE •
INSERT •
Select *
From S as TS , SP as Tsp
Where TS.S# = Tsp.S#
ﻋـﺒﺎﺭﺕ ORDER BYﺑـﻪ ﻣﻌﻨـﻲ ﺁﻥ ﺍﺳـﺖ ﻛﻪ ﻛﺎﺭﺑﺮ ﻣﻲ ﺧﻮﺍﻫﺪ ﺟﻮﺍﺏ ﺭﺍ ﺑﻄﻮﺭ ﻣﻨﻈﻢ ﺭﻭﻱ ﺻﻔﺖ ﺧﺎﺻﻪ ﻣﻮﺭﺩ •
ﻧﻈﺮﺵ ﺑﺒﻴﻨﺪ .ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺩﺭ ﺍﻧﺘﻬﺎ ﻋﺒﺎﺭﺕ d escﺑﻴﺎﻳﺪ ﺗﺮﺗﻴﺐ ﻧﺰﻭﻟﻲ ﻭ ﺍﮔﺮ ascﺑﻴﺎﻳﺪ ﺗﺮﺗﻴﺐ ﺻﻌﻮﺩﻱ ﺍﺳﺖ .
order by S# desc ﻣﺜﺎﻝ :
ﺩﺭ ﺻـﻮﺭﺕ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﭼﻨﺪ ﺟﺪﻭﻝ ﺩﺭ ﺟﻠﻮﻱ ﻋﺒﺎﺭﺕ fromﻭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﺮﻁ ﺧﺎﺹ ﻣﻲ ﺗﻮﺍﻥ ﻋﻤﻞ ﭘﻴﻮﻧﺪ ﺭﺍ ﻧﻴﺰ •
ﺍﻧﺠﺎﻡ ﺩﺍﺩ .
ﻣﺜﺎﻝ :ﻣﺸﺨﺼﺎﺕ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ﻭ ﻗﻄﻌﺎﺕ ﺩﺭ ﻳﻚ ﺷﻬﺮ ﺭﺍ ﺑﺪﻫﻴﺪ .
* Select S . * , P . from S,P
Where S . city = P . city
ﻣﻲ ﺗﻮﺍﻥ ﻋﻤﻞ ﭘﻴﻮﻧﺪ ﺭﺍ ﺑﺎ ﺷﺮﻃﻬﺎﻱ ﺍﺿﺎﻓﻲ ﻧﻴﺰ ﺍﻧﺠﺎﻡ ﺩﺍﺩ . •
Select S . * , P . * from S , P
Where S . city = P . city AND S . Status > 10
ﻧﻜﺘﻪ :ﻣﻲ ﺗﻮﺍﻥ ﻳﻚ ﺟﺪﻭﻝ ﺭﺍ ﺑﺎ ﺧﻮﺩﺵ ﻧﻴﺰ ﺗﺮﻛﻴﺐ ) ﭘﻴﻮﻧﺪ ( ﻛﺮﺩ . •
ﻣﺜﺎﻝ :ﺷﻤﺎﺭﻩ ﺟﻔﺖ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ﺳﺎﻛﻦ ﻳﻚ ﺷﻬﺮ ﺭﺍ ﺑﺪﻫﻴﺪ .
Select First . S # , Second . S #
From S First , S Second
Where First . city = Second . city
AND First . S # < Second . S #
ﺩﺭ ﺯﺑـﺎﻥ SQLﺍﻣﻜـﺎﻥ ﻣﻘﺎﻳﺴـﻪ ﺭﺷـﺘﻪ ﻫـﺎ ﻭ ﺗﻄﺎﺑـﻖ ﺁﻧﻬﺎ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﺍﻳﻦ ﺍﻣﻜﺎﻥ ﺗﻮﺳﻂ ﺩﻭ ﻋﻤﻠﮕﺮ %ﻭ – ﻣﻴﺴﺮ •
ﺍﺳـﺖ :ﻋﻼﻣـﺖ ﺩﺭﺻﺪ %ﺑﺮﺍﻱ ﺗﻄﺎﺑﻖ ﻫﺮ ﺯﻳﺮ ﺭﺷﺘﻪ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ ﻭ ﻋﻼﻣﺖ u nderlineـ ﺑﺮﺍﻱ ﺗﻄﺎﺑﻖ ﻳﻚ ﻛﺎﺭﺍﻛﺘﺮ
ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ .
… Select P# ,
From P
Where Pname like “” w %
w %ﻳﻌﻨﻲ ﺁﻧﻬﺎﻳﻲ ﻛﻪ ﺑﺎ wﺁﻏﺎﺯ ﺷﺪﻩ ﺍﻧﺪ .ﻭ ” “% Wﻳﻌﻨﻲ ﺁﻧﻬﺎﻳﻲ ﻛﻪ ﺑﻪ wﺧﺘﻢ ﺷﺪﻩ ﺍﻧﺪ .
Select *
From S
Where city like ‘‘% C ---
ﺷﻬﺮ ﺣﺪﺍﻗﻞ ﭼﻬﺎﺭ ﺣﺮﻑ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ ﭼﻬﺎﺭﻣﻴﻦ ﺣﺮﻑ ﺍﺯ ﺁﺧﺮ ﺑﺎ Cﺁﻏﺎﺯﺷﻮﺩ .
ﺑــﺮﺍﻱ ﺍﺟـﺘﻤﺎﻉ ﻭ ﻋــﺒﺎﺭﺕUNION ﻋـﺒﺎﺭﺕ. ﻭﺟـﻮﺩ ﺩﺍﺭﻧــﺪSQL ﻋﻤﻠـﻴﺎﺕ ﺍﺟـﺘﻤﺎﻉ ﻭ ﺍﺷــﺘﺮﺍﻙ ﻭ ﻧﻘـﻴﺾ ﻧﻴــﺰ ﺩﺭ •
. ﺑﺮﺍﻱ ﻋﻤﻠﮕﺮ ﻣﻨﻬﺎ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﻧﺪEXCEPT ﺑﺮﺍﻱ ﺍﺷﺘﺮﺍﻙ ﻭ ﻋﺒﺎﺭﺕINTERSECT
ﺁﻧﻬﺎ ﺭﺍ ﺗﻬﻴﻪ ﻛﺮﺩﻩS2 ﭘﻮﻧﺪ ﺑﺎﺷﺪ ﻭ ﻳﺎ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ١٦ ﺷـﻤﺎﺭﻩ ﻗﻄﻌﺎﺗـﻲ ﺭﺍ ﻣﺸـﺨﺺ ﻛﻨـﻴﺪ ﻛﻪ ﻳﺎ ﻭﺯﻥ ﺁﻧﻬﺎ ﺑﻴﺶ ﺍﺯ: ﻣـﺜﺎﻝ
. ﺑﺎﺷﺪ
SELECT P.P#
FROM P WHERE WEIGHT > 16.0
UNION
SELECT SP.P#
FROM SP
WHERE SP.S# = ‘S2’
ﺍﻣﺎ. ﺣﺬﻑ ﻣﻲ ﺷﻮﻧﺪEXCEPT ﻭ ﻳﺎINTERSECT ، U NION ﺳﻄﺮﻫﺎﻱ ﺗﻜﺮﺍﺭﻱ ﺍﺿﺎﻓﻲ ﻫﻤﻴﺸﻪ ﺍﺯ ﻧﺘﻴﺠﻪ ﻳﻚ
. ﻓﺮﺍﻫﻢ ﺷﺪﻩ ﻛﻪ ﺩﺭ ﺁﻥ ﺳﻄﺮﻫﺎﻱ ﺗﻜﺮﺍﺭﻱ ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﻨﺪEXCEPT ALL ، UNION ALL ﻧﺴﺨﻪ ﻫﺎﻱSQL ﺩﺭ
Find the names of all branches in the loan relations, and remove duplicates
select distinct branch-name
from loan
To find all loan number for loans made at the Perryridge branch with loan amounts
greater than $1200.
select loan-number
from loan
where branch-name = ‘Perryridge’ and amount > 1200
Find the name, loan number and loan amount of all customers
having a loan at the Perryridge branch.
٦٦ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
Find the customer names and their loan numbers for all customers having a loan at
some branch.
select customer-name, T.loan-number, S.amount
from borrower as T, loan as S
where T.loan-number = S.loan-number
Find the names of all branches that have greater assets than
some branch located in Brooklyn.
Find the names of all customers whose street includes the substring “Main”.
select customer-name
from customer
where customer-street like ‘%Main%’
Match the name “Main%”
like ‘Main\%’ escape ‘\’
List in alphabetic order the names of all customers having a loan in Perryridge branch
select distinct customer-name
from borrower, loan
where borrower loan-number = loan.loan-number and
branch-name = ‘Perryridge’
order by customer-name
Find all customers who have a loan, an account, or both:
(select customer-name from depositor)
union
(select customer-name from borrower)
Find all customers who have both a loan and an account.
(select customer-name from depositor)
intersect
(select customer-name from borrower)
Find all customers who have an account but no loan.
(select customer-name from depositor)
except
(select customer-name from borrower)
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٦٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻋﺒﺎﺭﺕ group byﺩﺭ ﺩﺳﺘﻮﺭ ﺑﺎﻋﺚ ﻣﻲ ﺷﻮﺩ ﺭﺍﺑﻄﻪ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﻌﺪ ﺍﺯ ﺟﻤﻠﻪ fromﺭﺍ ﺑﺮﺣﺴﺐ ﻣﻘﺎﺩﻳﺮ ﺳﺘﻮﻥ ﺩﺍﺩﻩ ﺷﺪﻩ
ﮔﺮﻭﻩ ﺑﻨﺪﻱ ﻛﺮﺩﻩ ﻭ ﺁﻧﮕﺎﻩ ﺣﻜﻢ SELECTﺩﺭ ﺍﻳﻦ ﺟﺪﻭﻝ ﺑﺎﺯﺁﺭﺍﻳﻲ ﺷﺪﻩ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ .
ﻣﺜﺎﻝ : Q1 :ﺷﻤﺎﺭﻩ ﻗﻄﻌﺎﺕ ﻭ ﻛﻞ ﺗﻌﺪﺍﺩ ﺗﻬﻴﻪ ﺷﺪﻩ ﺍﺯ ﻫﺮ ﻗﻄﻌﻪ ﺭﺍ ﺑﺪﻫﻴﺪ .
)SELECT P# ، SUM(QTY
FORM SP
GROUP ; BY P#
ﻇﺎﻫﺮ ﺷﺪﻩ ﺑﺎﺷﻨﺪ ﺩﺭ ﻏﻴﺮGroup by ﺧﺎﺭﺝ ﺍﺯ ﺗﻮﺍﺑﻊ ﺟﻤﻌﻲ ﺑﺎﻳﺴﺘﻲ ﺩﺭ ﻟﻴﺴﺖ ﮔﺮﻭﻩselect ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺩﺭ ﺩﺳﺘﻮﺭ: ﻧﻜـﺘﻪ
. ﺍﻳﻦ ﺻﻮﺭﺕ ﺧﻄﺎ ﺭﺥ ﻣﻲ ﺩﻫﺪ
. ﺷﻤﺎﺭﻩ ﻗﻄﻌﺎﺗﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﺗﻮﺳﻂ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﺗﻬﻴﻪ ﻣﻲ ﺷﻮﺩ: ﻣﺜﺎﻝ •
Select P#
From sp
Group by p#
Having count(*) >1
ﺩﺭ ﺳﻄﺮWhere ﻣﻲ ﺁﻳﺪ ﻭ ﻧﻘﺶ ﺁﻥ ﺩﺭ ﮔﺮﻭﻩ ﻫﻤﺎﻧﻨﺪ ﻧﻘﺶGroup by ﻣﻌـﻨﺎﻱ ﻣﺴـﺘﻘﻞ ﻧﺪﺍﺭﺩ ﻭ ﻫﻤﻴﺸﻪ ﺑﺎHaving : ﻧﻜـﺘﻪ
. ﻣﻲ ﺑﺎﺷﺪ
SQLﺩﺭ ﺑـﺮﺧﻮﺭﺩ ﺑـﺎ ﻣﻘـﺪﺍﺭ NULLﺑـﻪ ﻋـﻨﻮﺍﻥ ﻳـﻚ ﻋﻤﻠـﻮﻧﺪ ﺩﺭ ﻋﻤـﻞ ﻣﻘﺎﻳﺴـﻪ ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺗﺼﻤﻴﻤﻲ ﺑﮕﻴﺮﺩ .ﻳﻌﻨﻲ •
ﺳـﻄﺮﻫﺎﻱ ﺩﺍﺭﺍﻱ NULLﺩﺭ ﺳﺘﻮﻥ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺩﺭ ﻛﺎﺭ ﺩﺧﺎﻟﺖ ﻧﻤﻲ ﺩﻫﺪ .ﺍﻣﺎ ﺍﮔﺮ ﺍﺯ ﻋﺒﺎﺭﺕ IS NULLﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ
ﺁﻧﮕﺎﻩ ﺳﻴﺴﺘﻢ ﺑﺎ ﻣﻘﺪﺍﺭ NULLﺑﺮﺧﻮﺭﺩ ﻣﻲ ﻛﻨﺪ .
Select S#
From sp
Where (status > 15) OR (status ) is NULL
ﺍﺳﺖ . NULLﻧﻴﺰ NULL ﻧﺘﻴﺠﻪ ﻫﺮ ﻋﻤﻞ ﺭﻳﺎﺿﻲ ﺭﻭﻱ •
5 + NULL NULL
ﺩﺭ ﺁﻥ ﺻﻔﺖ ﺧﺎﺻﻪ ﺭﺍ ﻧﺎﺩﻳﺪﻩ ﻣﻲ ﮔﻴﺮﻧﺪ . ﺗﻤﺎﻡ ﺗﻮﺍﺑﻊ ﺟﻤﻌﻲ ﺑﺠﺰ)*( Countﺗﺎﭘﻠﻬﺎﻱ ﺑﺎ ﻣﻘﺎﺩﻳﺮNULL •
E.g. Find all loan number which appear in the loan relation with null values
for amount. select loan-number
from loan
where amount is null
ﺩﺭ ﺑﺮﺧﻲ ﻧﺴﺨﻪ ﻫﺎﻱ ، SQLﺗﻮﺍﺑﻊ ﺩﻳﮕﺮﻱ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪﻛﻪ ﺍﺯ ﺟﻤﻠﻪ ﻣﻲ ﺗﻮﺍﻥ ﺗﻮﺍﺑﻊ ﺯﻳﺮ ﺭﺍ ﻧﺎﻡ ﺑﺮﺩ : •
• SYSDATE , NEXT-DAY , LN, EXP, TAN ,TANH, SIN , SINH, COS,
COSH,CEIL,FLOOR,STTDEV,VARIANCE,POWER,MOD,SIGN,CHR,CONCAT,UPPER
,LOWER,LPAD,RPAD,LTRIM,RTRIM,REPLACE,TRANSLATE,
lENGTH,TO_CHAR,USER,TO_NUMBER
ﺳﻴﺴﺘﻢ ﺍﺑﺘﺪﺍ ﭘﺮﺱ ﻭ ﺟﻮﻱ ﻓﺮﻋﻲ ﺭﺍ ﺍﺟﺮﺍ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺣﺎﺻﻞ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﺯ S #ﻫﺎﺳﺖ . •
ﻣﺜﺎﻝ :ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﺍﻗﻼ ﻳﻚ ﻗﻄﻌﻪ ﺁﺑﻲ ﺭﻧﮓ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﻨﺪ .
ﺩﺭ ﺍﻳﻦ ﭘﺮﺱ ﻭ ﺟﻮ ﺳﻪ ﺟﺪﻭﻝ SP ، P، Sﺩﺧﺎﻟﺖ ﺩﺍﺭﻧﺪ :
Select Sname
From S
Where S# IN (Select S# from SP
Where P# IN (Select P#
From P
)‘ ﺁﺑﻲ‘ = Where Color
ﺍﮔﺮ ﻧﺘﻴﺠﻪ ﭘﺮﺱ ﻭ ﺟﻮﻱ ﻓﺮﻋﻲ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻣﻘﺪﺍﺭ ﺑﺎﺷﺪ ﺍﺯ ﻋﺒﺎﺭﺕ I Nﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﺍﮔﺮ ﻗﻄﻌﺎ ﺗﻚ •
ﻣﻘﺪﺍﺭﻱ ﺑﺎﺷﺪ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﻋﻤﻠﮕﺮﺩ = ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩ .
ﻣﺜﺎﻝ :ﺷﻤﺎﺭﻩ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ﻫﻢ ﺷﻬﺮ ﺑﺎ S1ﺭﺍ ﺑﺪﻫﻴﺪ .
Select S#
From S
Where city = ( Select city from S
Where )’S# = ‘S1
ﺟﻮﺍﺏ ﭘﺮﺱ ﻭ ﺟﻮﻱ ﻓﺮﻋﻲ ﺑﺎﻻ ﻳﻚ ﻣﻘﺪﺍﺭ ﺍﺳﺖ .
ﻣﻲ ﺗﻮﺍﻥ ﺩﺭ ﭘﺮﺱ ﻭ ﺟﻮﻫﺎﻱ ﻓﺮﻋﻲ ﺍﺯ ﺗﺎﺑﻊ ﺟﻤﻌﻲ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ . •
ﻣﺜﺎﻝ :ﺷﻤﺎﺭﻩ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺭﺍ ﺑﺪﻫﻴﺪ ﻛﻪ ﻣﻘﺪﺍﺭ ﻭﺿﻌﻴﺖ ﺁﻧﻬﺎ ﺍﺯ ﻣﺎﻛﺰﻳﻤﻢ ﻣﻘﺪﺍﺭ ﻭﺿﻌﻴﺖ ﻣﻮﺟﻮﺩ ﺩﺭ Sﻛﻤﺘﺮ ﺑﺎﺷﺪ
SELECT S#
FROM S
WHERE STATUS < ( SELECT )MAX (STATUS
FROM ;) S
ﺩﺭ SQLﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﺳﻮﺭ ﻭﺟﻮﺩﻱ ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ . •
ﻣﺜﺎﻝ :ﺍﺳﺎﻣﻲ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ ﻗﻄﻌﻪ P 2ﺭﺍ ﺑﺪﻫﻴﺪ .
SELECT SNAME
FROM S
WHERE EXISTS ( SELECT * FROM SP
)’WHERE SP.S# = S.S# AND SP.P#=’P 2
ﻋﺒﺎﺭﺕ EXISTSﺩﺭ SQLﺩﺍﺭﺍﻱ ﺍﺭﺯﺵ ﺩﺭﺳﺖ ﺍﺳﺖ ﺍﮔﺮ ﻭﻓﻘﻂ ﺍﮔﺮ ﻧﺘﻴﺠﻪ ﺍﺭﺯﻳﺎﺑﻲ ) … (Selectﺗﻬﻲ ﻧﺒﺎﺷﺪ. •
Find all customers who have both an account and a loan at the bank.
select branch-name
from branch
where assets > some
(select assets
from branch
where branch-city = ‘Brooklyn’)
(= some) =in
However, (<> some) = not in
Find the names of all branches that have greater assets than all branches located
in Brooklyn.
select branch-name
from branch
where assets > all
(select assets
from branch
where branch-city = ‘Brooklyn’)
The unique construct tests whether a subquery has any duplicate tuples in its
result.
Find all customers who have at most one account at the Perryridge branch.
select T.customer-name
from depositor as T
where unique ( select R.customer-name
from account, depositor as R
where T.customer-name = R.customer-name and
R.account-number = account.account-number and
account.branch-name = ‘Perryridge’)
Find all customers who have at least two accounts at the Perryridge branch.
ﻣﺜﺎﻝ :
INSERT INTO P
VALUES ( ‘P8’,’PN8’,’BLUE’,’10’,’C3’),
ﻣﺜﺎﻟﻲ ﺍﺯ ﺩﺭﺝ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ ﺟﺪﻭﻝ ﺩﻳﮕﺮ :
( INSERT INTO ACCOUNT
SELECT LOAN-NUMBER, BRANCH-NAME,200
FROM LOAN
; ‘ ﻧﺎﺩﺭﻱ‘ = WHERE BRANCH-NAME
SELECTﺍﺑﺘﺪﺍ ﻗﺒﻞ ﺍﺯ ﻫﺮ ﺩﺭﺟﻲ ﺍﺭﺯﻳﺎﺑﻲ ﺷﺪﻩ ﻭ ﺳﭙﺲ ﻧﺘﻴﺠﻪ ﺑﻪ ﺭﺍﺑﻄﻪ ﺩﺭ ﺟﻤﻠـﻪ INSERTﺩﺳﺘﻮﺭ FROM …..
ﻣﻮﺭﺩ ﻧﻈﺮ ﺩﺭﺝ ﻣﻲ ﺷﻮﺩ .
ﺩﺭ ﻏﻴـﺮ ﺍﻳـﻦ ﺻـﻮﺭﺕ ﺩﺳـﺘﻮﺭ I NSERT INTO TABLE1 SELECT * FROM TABLE1ﺩﭼﺎﺭ ﻣﺸﻜﻞ
ﻣﻲ ﺷﻮﺩ .
: ٣ – ٢ – ٣ -٥ﺣﻜﻢ ﺗﻐﻴﻴﺮ ﺭﻛﻮﺭﺩ
ﺷـﻜﻞ ﻛﻠـﻲ ﺍﻳـﻦ ﺣﻜﻢ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ .ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﺗﻤﺎﻡ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺟﺪﻭﻝ ﻛﻪ ﺣﺎﺋﺰ ﺷﺮﻁ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﺎﺷﻨﺪ ﺑﺎ
ﺗﻮﺟﻪ ﺑﻪ ﻣﻘﺪﺍﺭ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ S etﺗﻐﻴﻴﺮ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ .
UPDATE TABLE
SET ﻋﺒﺎﺭﺕ = FIELD
] [ WHERE PERDICATE
ﻣﺜﺎﻝ :
.١ﺭﻧﮓ ﻗﻄﻌﻪ P2ﺭﺍ ﺑﻪ ﺯﺭﺩ ﺗﻐﻴﻴﺮ ﺩﺍﺩﻩ ﻭ ﺑﻪ ﻭﺯﻥ ﺁﻥ ٥ﻭﺍﺣﺪ ﺑﻴﻔﺰﺍﺋﻴﺪ .
UPDATE P
٧٤ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
ﮔﺮﻡ ﺭﺍ١٠ ﻭﺍﺣﺪ ﺍﺿﺎﻓﻪ ﻛﻨﻴﺪ ﻭ ﻗﻄﻌﺎﺕ ﻛﻤﺘﺮ ﺍﺯ٥ ﮔﺮﻡ ﻳﺎ ﺑﻴﺸﺘﺮ ﺭﺍ١٠ ﻭﺯﻥ ﻗﻄﻌﺎﺕ ﺩﺍﺭﺍﻱ ﻭﺯﻧﻲ ﺑﺎ ﻣﻘﺪﺍﺭ .٢
. ﻭﺍﺣﺪ ﺍﺿﺎﻓﻪ ﻛﻨﻴﺪ٣
UPDATE P
SET WEIGHT = WEIGHT + 5
WHERE WEIGHT =10
UPDATE P
SET WEIGHT = WEIGHT + 3
WHERE WEIGHT < 10
. ﺗﺮﺗﻴﺐ ﺟﻤﻼﺕ ﺑﺎﻻ ﻣﻬﻢ ﺍﺳﺖ •
: ﺑﻄﻮﺭ ﺳﺎﺩﻩ ﺗﺮ ﭘﺮﺱ ﻭ ﺟﻮ ﺭﺍ ﻧﻮﺷﺖCASEﻣﻲ ﺗﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺟﻤﻠﻪ •
UPDATE P
SET WEIGHT = CASE
WHEN WEIGHT >= 10 THEN
WEIGHT + 5
ELSE WEIGHT + 3
END
Provide as a gift for all loan customers of the Perryridge branch, a $200
savings account. Let the loan number serve as the account number for the
new savings account
Increase all accounts with balances over $10,000 by 6%, all other accounts
receive 5%.
٧٥ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
Same query as before: Increase all accounts with balances over $10,000 by
6%, all other accounts receive 5%. update account
set balance = case
when balance <= 10000 then balance *1.05
else balance * 1.06
end
ﻭ ﺳﻄﺢ ﺧﺎﺭﺟﻲSQL: ٤ – ٦
. ﺑﺮﺍﻱ ﺗﻌﺮﻳﻒ ﺩﻳﺪ ﺍﺯ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩS QL ﺩﺭ. ﻋﺒﺎﺭﺗﻲ ﻧﺎﻣﺪﺍﺭ ﺍﺯ ﺟﺒﺮ ﺭﺍﺑﻄﻪ ﺍﻱ ﺍﺳﺖ، ﻣﻲ ﺩﺍﻧﻴﻢ ﺩﻳﺪ
CREATE VIEW VIEW_NAME [ ( COLUMN[,COLUMN, ….]….).]
AS SUB QUERY
ﻳﻚ ﭘﺮﺱ ﻭ ﺟﻮ ﺍﺳﺖ ﻛﻪ ﺍﺯ ﻃﺮﻳﻖview ﺍﺳﺖ ﻭ ﺩﺭ ﻭﺍﻗﻊ ﻣﻜﺎﻧﻴﺰﻡ ﺍﺷﺘﻘﺎﻕview ﺩﺭ ﺧﺪﻣﺖSelect ﺗﻤـﺎﻡ ﻗـﺪﺭﺕ ﺩﺳـﺘﻮﺭ
ﺍﺟﺮﺍ ﻧﻤﻲ ﺷﻮﺩ ﺑﻠﻜﻪ ﻓﻘﻂ ﺑﻪ ﻋﻨﻮﺍﻥ ﺗﻌﺮﻳﻒ ﺑﺎ ﺷﻤﺎﻱview ﭘﺮﺱ ﻭ ﺟﻮﻱ ﻣﺮﺑﻮﻃﻪ ﺩﺭ ﺯﻣﺎﻥ ﺗﻌﺮﻳﻒ. ﺩﺍﺩﻩ ﻣـﻲ ﺷـﻮﺩSelect
. ﺧﺎﺭﺟﻲ ﺩﺭ ﻛﺎﺗﺎﻟﻮﮒ ﻧﮕﻬﺪﺍﺭﻱ ﻣﻲ ﺷﻮﺩ ﺗﺎ ﻫﺮﮔﺎﻩ ﻻﺯﻡ ﺑﺎﺷﺪ ﺳﻴﺴﺘﻢ ﺑﻪ ﺁﻥ ﻣﺮﺍﺟﻌﻪ ﻛﻨﺪ
: ﻣﺜﺎﻝ
CREATE VIEW PARTS (P#,PNAME,WT,CITY)
AS SELECT P#,PNAME, WEIGHT,CITY
FROM P
WHERE COLOR = ‘RED’
. ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﺩParts ﺑﺎ ﺣﻜﻢ ﺑﺎﻻ ﻳﻚ ﺩﻳﺪ ﺑﻨﺎﻡ
: ١ – ٤ – ٦ﻋﻤﻠﻴﺎﺕ ﺩﺭ ﺩﻳﺪ
ﺍﻟﻒ( ﺑﺎﺯﻳﺎﺑﻲ :
ﻋﻤـﻞ ﺑﺎﺯﻳﺎﺑـﻲ ﺍﺯ ﻧﻈـﺮ ﺗـﺌﻮﺭﻱ ﻣﺸﻜﻠﻲ ﻧﺪﺍﺭﺩ ﻫﺮ ﭼﻨﺪ ﺩﺭ ﺑﻌﻀﻲ ﺳﻴﺴﺘﻢ ﻫﺎ ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎﻳﻲ ﺩﺭ ﺍﻳﻦ ﺯﻣﻴﻨﻪ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﭼﻮﻥ
viewﻣﺎﻫﻴﺘﺎ ﺟﺪﻭﻝ ﺍﺳﺖ .ﻟﺬﺍ ﻫﻤﺎﻥ ﺣﻜﻢ Selectﻧﻴﺰ ﺑﺮﺍﻱ ﺁﻥ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ .
ﻣﺜﺎﻝ :
SELECT * FROM PARTS
’WHERE P# = ‘P2
ﺑـﺮﺍﻱ ﺍﺟـﺮﺍﻱ ﺣﻜـﻢ ﺑـﺎﻻ ﺑﺎﻳﺴـﺘﻲ ﺳﻴﺴﺘﻢ ﺁﻥ ﺭﺍ ﺑﻪ ﺣﻜﻤﻲ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﺗﺒﺪﻳﻞ ﻛﻨﺪ ﻭ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺷﺮﻁ ﻳﺎ ﺷﺮﺍﻳﻂ
ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺗﻌﺮﻳﻒ ﺩﻳﺪ ﺭﺍ ﺑﺎ ﺷﺮﻁ ﺩﺭ ﺣﻜﻢ ﺑﺎﺯﻳﺎﺑﻲ ﺗﺮﻛﻴﺐ ﻣﻲ ﻛﻨﺪ .
ﻣﺜﺎﻝ :
SELECT *
FROM PARTS
ﺩﻳﺪ ﻛﺎﺭﺑﺮ ﺭﺍ ﺑﻪ ﻋﻴﻨﻴﺖ ﺩﺭﻣﻲ ﺁﻭﺭﺩ .
ﭼـﻮﻥ VIEWﺧـﻮﺩ ﻳـﻚ ﺟـﺪﻭﻝ ﺍﺳـﺖ ﻭ ﻟـﺬﺍ ﻣـﻲ ﺗﻮﺍﻥ ﺭﻭﻱ ﺁﻥ VIEWﺗﻌﺮﻳﻒ ﻛﺮﺩ ﻭ ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ ﺳﻄﻮﺡ ﺩﻳﮕﺮﻱ ﺍﺯ
ﺍﻧﺘﺰﺍﻉ ﺭﺍ ﺍﻳﺠﺎﺩ ﻛﺮﺩ .
Find all customers of the Perryridge branch
select customer-name
from all-customer
’where branch-name = ‘Perryridge
Find the average account balance of those branches where the average
account balance is greater than $1200.
select branch-name, avg-balance
)from (select branch-name, avg (balance
from account
)group by branch-name
)as result (branch-name, avg-balance
where avg-balance > 1200
ﺩﺭ ﺑﺮﺧـﻲ ﺳﻴﺴـﺘﻢ ﻫـﺎ ﺩﺭ ﻋﻤﻞ ﺑﺎﺯﻳﺎﺑﻲ ﺍﺯ VIEWﻣﺤﺪﻭﺩﻳﺖ ﻫﺎﻳﻲ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺍﺯ ﺟﻤﻠﻪ ﻣﻲ ﺗﻮﺍﻥ ﻣﺸﻜﻞ ﺗﺎﺑﻊ
ﺟﻤﻌﻲ ﺭﺍ ﻣﻄﺮﺡ ﻛﺮﺩ .
CREATE VIEW PQ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٧٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
UPDATE SUPC2
’****‘ = Set Sname
Where ’S# = ‘S2
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺩﺳﺘﻮﺭﻱ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﻧﮕﺎﺷﺘﻪ ﺷﻮﺩ .
UPDATE S
’****‘ = SET SNAME
WHERE ’S# = ‘S2
AND ’CITY = ‘C2
ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺳﻄﺮﻱ ﺑﻪ ﺩﻳﺪ ﺩﺭﺝ ﻛﻨﻴﻢ :
INSERT INTO SUPC2
)VALUES(S12,SN12
ﻛﻤﺘـﺮﻳﻦ ﻣﺸـﻜﻞ ﺁﻥ ﺍﺳـﺖ ﻛـﻪ ﺩﺭ ﺩﻭ ﺳـﺘﻮﻥ status، cityﭘﺪﻳـﺪﻩ ﻫـﻴﭽﻤﻘﺪﺍﺭ ﺑﺮﻭﺯ ﻣﻲ ﻛﻨﺪ .ﺻﺮﻓﻨﻈﺮ ﺍﺯ ﺍﻳﻨﻜﻪ ﻭﺟﻮﺩ ﺍﻳﻦ
ﭘﺪﻳﺪﻩ ﻣﻄﻠﻮﺏ ﻧﻴﺴﺖ ،ﺑﺮﻭﺯ ﺁﻥ ﻣﻲ ﺗﻮﺍﻧﺪ ﻳﻜﻲ ﺍﺯ ﻗﻮﺍﻋﺪ ﺟﺎﻣﻌﻴﺖ ﭘﺎﻳﮕﺎﻩ ﺭﺍ ﺧﺪﺷﻪ ﺩﺍﺭ ﻛﻨﺪ .
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٧٨ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﻘﺪﺍﺭﻱ ﺍﺳﺖ ﺑﺮﺍﻱ ) sum(Qtyﻭ ﻧﻪ ﺑﺮﺍﻱ . Qtyﻟﺬﺍ ﻋﻤﻞ ﺩﺭﺝ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﻧﻴﺴﺖ .
ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ ﺩﻳﺪﻫﺎﻱ ﺣﺎﺻﻞ ﻋﻤﻞ ﭘﻴﻮﻧﺪ)ﺗﺮﻛﻴﺐ( : •
ﻃـﺒﻖ ﻧﻈـﺮ ﭼﻤﺒـﺮﻟﻴﻦ ﺍﻳـﻦ ﺩﻳـﺪﻫﺎ ﻗﺎﺑﻞ ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ ﻧﻴﺴﺘﻨﺪ ﺍﻣﺎ ﺍﻳﻦ ﻧﻈﺮ ﺭﺩ ﺷﺪﻩ ﺍﺳﺖ .ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﺑﺠﺎﻱ ﺭﺍﺑﻄﻪ S
ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ :
)SX(S#,Sname,city
)SY(S#,Status
ﻭ S#ﺩﺭ ﻫﺮ ﺩﻭ ﺭﺍﺑﻄﻪ SY,SXﻛﻠﻴﺪ ﺍﺳﺖ .
SX ∞ SY = S
ﺍﮔﺮ ﺩﻳﺪﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺑﻔﺮﻡ ﻣﻘﺎﺑﻞ :
CREATE VIEW S
AS SELECT SX.S#,SNAME,STATUS,CITY
FROM SX,SY
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٧٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
S V5
S#……Status S#…….Status
S1……16 S1……16
S2……10 S3……17
S3……17
S4…….15
ﺗﻬﻴﻪ ﻛﻨﻨﺪ S2ﻳﺎ S4ﺩﺭ ﺍﻳﻦ ﺩﻳﺪ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ .ﺁﻳﺎ ﻛﺎﺭﺑﺮ ﺣﻖ ﺩﺍﺭﺩ ﻋﻤﻞ ﺯﻳﺮ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ؟
Insert Into V5
Values )(S2,18
ﺩﺭ ﺍﻳـﻦ ﺻـﻮﺭﺕ ﺑﺎﻳﺴـﺘﻲ ﺟﻠﻮﻱ ﻋﻤﻞ ﺩﺭﺝ ﺭﺍ ﺑﮕﻴﺮﺩ ﺯﻳﺮﺍ ﺑﺎﻋﺚ ﺗﻜﺮﺍﺭ ﺩﺭ ﻛﻠﻴﺪ ﻣﻲ ﺷﻮﺩ .ﻭ ﻧﻴﺰ ﺁﻳﺎ ﻛﺎﺭﺑﺮ ﺣﻖ ﺩﺍﺭﺩ ﺩﺳﺘﻮﺭ
ﻣﻘﺎﺑﻞ ﺭﺍ ﻭﺍﺭﺩ ﻛﻨﺪ ؟
update V5
Set Status = 10
Where ’S# = ‘S3
Withﺭﺍ ﻗـﺮﺍﺭ ﻣـﻲ ﺩﻫـﻨﺪ .ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﺍﮔﺮ ﺩﺭ ﭼﻨـﻴﻦ ﻣـﻮﺍﺭﺩﻱ ﺩﺭ ﺑﻌﻀـﻲ ﺳﻴﺴـﺘﻢ ﻫـﺎ ﮔـﺰﻳﻨﻪcheck option
ﻋﻤﻠـﻴﺎﺕ ﺩﺭﺝ ﻭ ﺑـﻪ ﻫـﻨﮕﺎﻡ ﺳﺎﺯﻱ ﺟﺎﻣﻌﻴﺖ ﺍﻋﻤﺎﻝ ﺷﺪﻩ ﺗﻮﺳﻂ ﻋﺒﺎﺭﺕ ﺗﻌﺮﻳﻒ ﻛﻨﻨﺪﻩ ﺩﻳﺪ ﺭﺍ ﻧﻘﺾ ﻛﻨﻨﺪ ﺁﻧﮕﺎﻩ ﺍﻳﻦ ﻋﻤﻠﻴﺎﺕ
ﺭﻭﻱ ﺩﻳﺪ ﺭﺩ ﻣﻲ ﺷﻮﻧﺪ .
a user-id
public, which allows all valid users the privilege granted
A role (more on this later)
Granting a privilege on a view does not imply granting any privileges on the
underlying relations.
The grantor of the privilege must already hold the privilege on the specified
item (or be the database administrator).
select: allows read access to relation,or the ability to query using the view
Example: grant users U1, U2, and U3 select authorization on the branch
relation:
grant select on branch to U1, U2, U3
insert: the ability to insert tuples
update: the ability to update using the SQL update statement
delete: the ability to delete tuples.
references: ability to declare foreign keys when creating relations.
usage: In SQL-92; authorizes a user to use a specified domain
٨٢ / ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ: ﻣﺪﺭﺱ اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ: ﺧﻼﺻﻪ درس
all privileges: used as a short form for all the allowable privileges
Roles permit common privileges for a class of users can be specified just
once by creating a corresponding “role”
Example:
revoke select on branch from U1, U2, U3 cascade
Revocation of a privilege from a user may cause other users also to lose
that privilege; referred to as cascading of the revoke.
-٦-٥ﺗﻌﺮﻳﻒ ﺗﺮﺍﻛﻨﺶ
ﺗـﺮﺍﻛﻨﺶ ﻭﺍﺣـﺪ ﺑـﺮﻧﺎﻣﻪ ﻧﻮﻳﺴـﻲ ﺍﺳـﺖ ﻛـﻪ ﺷـﺎﻣﻞ ﻳﻜﺴـﺮﻱ ﻋﻤﻠـﻴﺎﺕ ﻣﺮﺗﺒﻂ ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﻭ ﺗﻐﻴﻴﺮ ﺍﻃﻼﻋﺎﺕ ﻳﻚ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗـﻲ ﻛـﻪ ﺩﺭ ﺟﻬـﺎﻥ ﻭﺍﻗﻌـﻲ ﺩﺭ ﺣﻜـﻢ ﻳـﻚ ﻋﻤـﻞ ﻭﺍﺣﺪ ﺗﻠﻘﻲ ﻣﻲ ﺷﻮﻧﺪ .ﻣﻌﻤﻮﻻ” ﺩﺳﺘﻮﺭﺍﺕ ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﺩﺳﺘﻮﺭﺷﺮﻭﻉ
ﺗـﺮﺍﻛﻨﺶ ) ( begin transactionﺁﻏﺎﺯ ﻭ ﺑﺎ ﻳﻚ ﻋﻤﻞ commitﻭﻳﺎ undoﭘﺎﻳﺎﻥ ﻣﻲ ﭘﺬﻳﺮﺩ .ﺩﺭ ﺧﺼﻮﺹ ﺗﺮﺍﻛﻨﺶ ﭼﻨﺪ
ﻧﻜﺘﻪ ﻭﺟﻮﺩ ﺩﺍﺭﺩ :
ﻃﺮﺍﺣﻲ ﺻﺤﻴﺢ correctness •
ﺑــﺮﻧﺎﻣﻪ ﻧــﻮﻳﺲ ﺑﺎﻳــﺪ ﻋﻤﻠــﻴﺎﺕ ﺍﺟﺮﺍﻳــﻲ ﻳــﻚ ﺗــﺮﺍﻛﻨﺶ ﺭﺍ ﺑﺼــﻮﺭﺕ ﻭﺍﺣــﺪ ﻳﻜــﭙﺎﺭﭼﻪ ﻃﺮﺍﺣــﻲ ﻛــﻨﺪ ﻭ ﺍﻳــﻦ ﺑــﻪ ﺧــﻮﺩ
dbmsﺭﺑﻄﻲ ﻧﺪﺍﺭﺩ.
ﺧﻮﺍﻧﺪﻥ ﺍﻃﻼﻋﺎﺕ •
ﻫﺮ ﻣﻮﺭﺩ ﺍﻃﻼﻋﺎﺗﻲ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺪ ﻓﻘﻂ ﻳﻜﺒﺎﺭ ﺧﻮﺍﻧﺪﻩ ﺷﻮﺩ .ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺩﺭ ﺩﺍﺧﻞ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻳﻚ ﺭﻛﻮﺭﺩ
ﺩﻭﺑﺎﺭ ﺧﻮﺍﻧﺪﻩ ﻧﺸﻮﺩ.
ﻧﻮﺷﺘﻦ ﺍﻃﻼﻋﺎﺕ: •
ﻫﺮ ﻣﻮﺭﺩ ﺍﻃﻼﻋﺎﺗﻲ ﻣﻮﺭﺩ ﻋﻤﻞ ﺩﺭ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﺻﻮﺭﺕ ﺗﻐﻴﻴﺮ ﻓﻘﻂ ﻳﻜﺒﺎﺭ ﻧﻮﺷﺘﻪ ﺷﻮﺩ.
-١-٦-٥ﻭﻳﮋﮔﻴﻬﺎﻱ ﺗﺮﺍﻛﻨﺶ
ﺑﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﭼﻬﺎﺭ ﻭﻳﮋﮔﻲ ﻧﻴﺰ ﺫﻛﺮ ﻛﺮﺩﻩ ﺍﻧﺪ ﻛﻪ ﻣﻲ ﺗﻮﺍﻥ ﺁﻧﻬﺎ ﺭﺍ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻧﺎﻡ ﺑﺮﺩ:
ﺍﻟﻒ :ﻭﻳﮋﮔﻲ ﺍﺗﻤﻲ ﺑﻮﺩﻥ Atomicity
ﺗﺮﺍﻛﻨﺶ ﻫﺎ ،ﺳﺎﺩﻩ ﻭ ﻏﻴﺮ ﻗﺎﺑﻞ ﺗﺠﺰﻳﻪ ﻫﺴﺘﻨﺪ ﺑﻌﺒﺎﺭﺗﻲ ﻛﻠﻴﻪ ﻋﻤﻠﻴﺎﺕ ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﻳﺎ ﺗﻤﺎﻣﺎ“ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﻳﺎ ﻫﻴﭽﻜﺪﺍﻡ
ﺍﺟﺮﺍ ﻧﻤﻲ ﮔﺮﺩﻧﺪ.
ﺏ :ﻭﻳﮋﮔﻲ ﺳﺎﺯﮔﺎﺭﻱ consistency
ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺳﺎﺯﮔﺎﺭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺣﻔﻆ ﻣﻲ ﻛﻨﻨﺪ .ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺗﺮﺍﻛﻨﺶ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺍﺯ ﻳﻚ ﺣﺎﻟﺖ ﺳﺎﺯﮔﺎﺭ ﺑﻪ ﺣﺎﻟﺖ
ﺳﺎﺯﮔﺎﺭ ﺩﻳﮕﺮﻱ ﺗﺒﺪﻳﻞ ﻣﻲ ﻛﻨﺪ.
ﺝ :ﻭﻳﮋﮔﻲ ﺟﺪﺍﺳﺎﺯﻱ Isolation
ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﺯ ﻳﻜﺪﻳﮕﺮ ﻣﺠﺰﺍ ﻫﺴﺘﻨﺪ ﻳﻌﻨﻲ ﺍﺛﺮ ﻣﺨﺮﺏ ﺭﻭﻱ ﻳﻜﺪﻳﮕﺮ ﻧﺪﺍﺭﻧﺪ.
ﺩ :ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﭘﺎﻳﺪﺍﺭﻱDurability
ﭘﺲ ﺍﺯ ﺁﻧﻜﻪ ﺗﺮﺍﻛﻨﺶ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪ ﺍﺛﺮ ﺁﻥ ﺭﺍ ﺩﺭ ﺑﺎﻧﻚ ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪ ﺣﺘﻲ ﺍﮔﺮ ﺳﻴﺴﺘﻢ ﺍﻧﺪﻛﻲ ﺑﻌﺪ ﺍﺯ ﻛﺎﺭ ﺑﻴﻔﺘﺪ.
-٢-٦-٥ﻣﺜﺎﻝ ﺍﺯ ﺗﺮﺍﻛﻨﺶ
ﻓﺮﺽ ﻛﻨﻴﻢ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﻣﺒﻠﻎ ٥٠٠٠٠ﺭﻳﺎﻝ ﺍﺯ ﺣﺴﺎﺏ Aﺑﻪ ﺣﺴﺎﺏ Bﻣﻨﺘﻘﻞ ﻛﻨﻴﻢ ﺩﺍﺭﻳﻢ :
)1.read (A
2.A:=A-50000
)3.write(A
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٨٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
)4.read(B
5.B:=B+50000
)6.write(B
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺧﻮﺍﺹ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺩﺍﺭﻳﻢ :
ﺍﻟﻒ( ﺧﺎﺻﻴﺖ ﺳﺎﺯﮔﺎﺭﻱ
ﻣﺠﻤﻮﻉ ﻣﻘﺎﺩﻳﺮ Aﻭ Bﭘﺲ ﺍﺯ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﺗﻐﻴﻴﺮ ﻧﻤﻲ ﻛﻨﺪ.
ﺏ(ﺧﺎﺻﻴﺖ ﺍﺗﻤﻲ ﺑﻮﺩﻥ:
ﺍﮔـﺮ ﺗﺮﺍﻛﻨﺶ ﭘﺲ ﺍﺯ ﻣﺮﺣﻠﻪ ٣ﻭ ﻗﺒﻞ ﺍﺯ ﻣﺮﺣﻠﻪ ٦ﻣﺘﻮﻗﻒ ﮔﺮﺩﺩ ،ﺳﻴﺴﺘﻢ ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﺑﺎﻧﻚ ﺛﺒﺖ
ﻧﮕﺮﺩﻧﺪ.
ﺝ(ﭘﺎﻳﺪﺍﺭﻱ:
ﭘﺲ ﺍﺯ ﺁﻧﻜﻪ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﻣﻮﺭﺩ ﺗﺎﻳﻴﺪ ﻗﺮﺍﺭ ﮔﺮﻓﺖ ﻭ ﺗﺮﺍﻛﻨﺶ ﻛﺎﻣﻞ ﮔﺮﺩﻳﺪ ،ﺍﻳﻦ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﺑﺎﻧﻚ ﭘﺎﻳﺪﺍﺭ ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
ﺩ(ﺟﺪﺍﺳﺎﺯﻱ:
ﺍﮔـﺮ ﺑـﻴﻦ ﻣـﺮﺍﺣﻞ ٣ﻭ ٦ﻳـﻚ ﺗﺮﺍﻛﻨﺶ ﺩﻳﮕﺮ ﺍﺟﺎﺯﻩ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﺑﺎﻧﻚ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺎﻋﺚ ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺩﺭ
ﺑﺎﻧﻚ ﺧﻮﺍﻫﺪ ﮔﺮﺩﻳﺪ)ﻣﺠﻤﻮﻉ A+Bﻛﻤﺘﺮ ﺍﺯ ﻣﻘﺪﺍﺭ ﺍﺻﻠﻲ ﺧﻮﺍﻫﺪ ﺷﺪ( ﻟﺬﺍ ﻧﺒﺎﻳﺴﺘﻲ ﺍﻣﻜﺎﻥ ﺍﺟﺎﺯﻩ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺩﻳﮕﺮ ﺑﺮﺍﻱ
ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ ﭘﺎﻳﮕﺎﻩ ﺭﺍ ﺑﻮﺟﻮﺩ ﺁﻭﺭﺩ.
-٣-٦-٥ﺣﺎﻟﺘﻬﺎﻱ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ
ﺍﻟﻒ :ﻧﺎﻗﺺ Aborted
ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺩﺭ ﺣﻴﻦ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﺍﺷﻜﺎﻟﻲ ﭘﻴﺶ ﺁﻣﺪﻩ ﺍﺳﺖ ﻛﻪ ﻣﻨﺠﺮ ﺑﻪ ﺗﻮﻗﻒ ﺍﺟﺮﺍﻱ ﺁﻥ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﻟﺬﺍ ﺗﺮﺍﻛﻨﺶ
ﻧﻴﻤﻪ ﺗﻤﺎﻡ ﺭﻫﺎ ﻣﻲ ﺷﻮﺩ.
ﺏ :ﺑﺮﮔﺸﺖ Rolled back
ﺩﺭ ﺻـﻮﺭﺕ ﺑـﺮﻭﺯ ﺍﺷﻜﺎﻝ ﺩﺭ ﺍﺟﺮﺍﻱ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ،ﺑﺮﺍﻱ ﺣﻔﻆ ﻳﻜﭙﺎﺭﭼﮕﻲ ﺍﻃﻼﻋﺎﺕ ،ﺍﺛﺮﺍﺕ ﺍﺣﺘﻤﺎﻟﻲ ﺑﺨﺸﻲ ﺍﺯ ﺗﺮﺍﻛﻨﺶ
ﻛﻪ ﺍﺟﺮﺍ ﺷﺪﻩ ﺭﻭﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎﻳﺪ ﺧﻨﺜﻲ ﺷﻮﺩ .ﺑﻪ ﺍﻳﻦ ﺣﺎﻟﺖ ﺑﺮﮔﺸﺖ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ .ﻣﺴﺌﻮﻟﻴﺖ ﺍﻳﻦ ﺍﻣﺮ ﺑﻌﻬﺪﻩ dbms
ﺍﺳﺖ.
ﺝ :ﭘﺬﻳﺮﺵ ﺷﺪﻩ Commited
ﺣﺎﻟﺘﻲ ﺍﺳﺖ ﻛﻪ ﻋﻤﻠﻴﺎﺕ ﺗﺮﺍﻛﻨﺶ ﺑﻄﻮﺭﻛﺎﻣﻞ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﻭ ﺍﺛﺮ ﺁﻥ ﻧﻴﺰ ﺛﺒﺖ ﺷﺪﻩ ﺍﺳﺖ ﭘﺲ ﺍﺯ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ
ﺧﻨﺜﻲ ﻛﺮﺩﻥ ﺗﻐﻴﻴﺮﺍﺕ ﺍﺣﺘﻤﺎﻟﻲ ﺗﺮﺍﻛﻨﺶ ﺭﻭﻱ ﺑﺎﻧﻚ ﻏﻴﺮ ﻣﻤﻜﻦ ﺍﺳﺖ.
ﺩﺭ ﺑﻴﺸﺘﺮ ﺳﻴﺴﺘﻤﻬﺎ ﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ،ﻫﺮ ﺩﺳﺘﻮﺭ SQLﻛﻪ ﺍﺟﺮﺍﻱ ﻣﻮﻓﻘﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺑﻄﻮﺭ ﺧﻮﺩﻛﺎﺭ ﭘﺬﻳﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﺩﺭ SQL:1999ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺑﻪ ﻓﺮﻡ ﺗﺮﺍﻛﻨﺶ ﺍﺯ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻮﺩ.
begin atomic
…
end
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٨٥ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻓﺼﻞ ﺷﺸﻢ:
ﻧﺮﻣﺎﻟﺘﺮ ﺳﺎﺯﻱ ﺭﺍﺑﻄﻪ ﻫﺎ
١-٦ﻣﻘﺪﻣﻪ :
ﺍﻳـﺪﻩ ﺍﺻـﻠﻲ ﻧﺮﻣﺎﻟﺘـﺮ ﺳﺎﺯﻱ ﺭﺍﺑﻄﻪ ﻫﺎ ﺑﺮ ﻣﺒﻨﺎﻱ ﺭﻓﻊ ﺁﻧﻮﻣﺎﻟﻲ ﻫﺎﻱ ﺭﺍﺑﻄﻪ ﻫﺎ ﺳﺖ .ﻣﻲ ﺩﺍﻧﻴﻢ ﺍﺻﻄﻼﺡ ﺁﻧﻮﻣﺎﻟﻲ ﻳﻌﻨﻲ ﺑﺮﻭﺯ
ﻭﺿـﻌﻴﺖ ﻧﺎﻣﻄﻠـﻮﺏ ﺩﺭ ﺍﻧﺠـﺎﻡ ﻋﻤـﻞ ﻛـﻪ ﻣﻲ ﺗﻮﺍﻧﺪ ﻧﺎﻣﻤﻜﻦ ﺑﻮﺩﻥ ﺍﻧﺠﺎﻡ ﻳﻚ ﻋﻤﻞ ﻭ ﻳﺎ ﺑﺮﻭﺯ ﺗﺒﻌﺎﺕ ﻧﺎﻣﻄﻠﻮﺏ ﺩﺭ ﺍﻧﺠﺎﻡ ﻳﻚ
ﻋﻤـﻞ ﻭ ﻳـﺎ ﺑـﺮﻭﺯ ﺩﺷـﻮﺍﺭﻱ ) ﻓـﺰﻭﻧﻜﺎﺭﻱ( ﺩﺭ ﻋﻤﻠـﻴﺎﺕ ﺑﺎﺷـﺪ .ﺑﺮﺍﻱ ﺭﻓﻊ ﺁﻧﻮﻣﺎﻟﻲ ﻫﺎ ﺑﺎﻳﺪ ﺭﺍﺑﻄﻪ ﻫﺎ ﻧﺮﻣﺎﻟﺘﺮ ﺷﻮﻧﺪ .ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ
ﺭﺍﺑﻄﻪ ﻱ ﻣﺎﻧﻨﺪ SPCﺭﺍ ﺯﻳﺮ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ:
ﺍﻫﺪﺍﻑ ﻧﺮﻣﺎﻝ ﺳﺎﺯﻱ :
S# P# QTY CITY -١ﻛﺎﻫﺶ ﺑﺮﺧﻲ ﺍﺯ ﺁﻧﻮﻣﺎﻟﻲ ﻫﺎ
c2 100 p1 s1
-٢ﻛﺎﻫﺶ ﺍﻓﺰﻭﻧﮕﻲ
c2 200 p2 s1
c2 150 p3 s1 -٣ﺗﺎﻣﻴﻦ ﻃﺮﺡ ﺑﻬﺘﺮ ﺑﺮﺍﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻗﺎﺑﻞ
c3 100 p1 s2 ﺩﺭﻙ ﺗﺮ
c3 80 p2 s2
-٤ﺍﻋﻤﺎﻝ ﺑﺮﺧﻲ ﻗﻮﺍﻋﺪ ﺟﺎﻣﻌﻴﺘﻲ ﻧﺎﺷﻲ ﺍﺯ
c3 90 p1 s3
ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ
ﺍﻳـﻦ ﺭﺍﺑﻄـﻪ ﻋﻨﺎﺻـﺮﺵ ﺍﺗﻤـﻴﻚ ) ﺳـﺎﺩﻩ ( ﻣـﻲ ﺑﺎﺷـﻨﺪ ﻛـﻪ ﺑـﻪ ﺁﻥ ﺭﺍﺑﻄﻪ ﻧﺮﻣﺎﻝ INFﻧﻴﺰ ﻣﻲ ﮔﻮﻳﻨﺪ .ﺍﻣﺎ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺩﺭ ﻋﻤﻠﻴﺎﺕ
ﺁﻧﻮﻣﺎﻟﻲ ﺩﺍﺭﺩ:
svﺳﺎﻛﻦ cvﺍﺳﺖ . -١ﺩﺭ ﻋﻤﻞ ﺩﺭﺝ :ﺩﺭﺝ ﻛﻦ ﺍﻃﻼﻉ 〉〈 sv, cv
ﺍﻳﻦ ﺩﺭﺝ ﻧﺎﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺎ ﻭﻗﺘﻴﻜﻪ ﻧﺪﺍﻧﻴﻢ ﭼﻪ ﻗﻄﻌﻪ ﺍﻱ ﺭﺍ ﺗﻬﻴﻪ ﻛﺮﺩﻩ ﺍﺳﺖ.
-٢ﺩﺭ ﻋﻤﻞ ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ:
ﺷـﻬﺮ s1ﺭﺍ ﻋﻮﺽ ﻛﻨﻴﺪ .ﻋﻤﻞ ﻣﻨﻄﻘﹰﺎ ﺗﺎﭘﻠﻲ ﺑﻪ ﻋﻤﻠﻲ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺗﺒﺪﻳﻞ ﻣﻲ ﺷﻮﻧﺪ .ﻭ ﺑﻪ ﻧﻮﻋﻲ ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ ﻣﻨﺘﺸﺮ ﺷﻮﻧﺪﻩ
ﺩﺍﺭﻳﻢ.
-٣ﺩﺭ ﻋﻤﻞ ﺣﺬﻑ :
〉 〈 s3 , p1 ,90ﺍﻃﻼﻉ ﻧﺎﺧﻮﺍﺳﺘﻪ ﺍﺯ ﺑﻴﻦ ﻣﻲ ﺭﻭﺩ ) s3ﺳﺎﻛﻦ ﺷﻬﺮ c3ﺍﺳﺖ(. ﺑﺎ ﺣﺬﻑ ﺍﻃﻼﻉ
ﺭﺍﺑﻄـﻪ spcﺧـﻮﺵ ﺳـﺎﺧﺘﺎﺭ ﻧﻴﺴـﺖ ﺭﻭﺵ ﻫـﺎﻱ ﻧﺮﻣﺎﻟﺘﺮ ﺳﺎﺯﻱ ﺑﻌﻨﻮﺍﻥ ﻳﻚ ﺍﺑﺰﺍﺭ ﻃﺮﺍﺣﻲ ﺑﻪ ﻃﺮﺍﺡ ﻣﻲ ﮔﻮﻳﺪ ﺩﺭ ﻳﻚ
ﻣﺤـﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﻣﺸﺨﺺ ﭼﻪ ﺭﺍﺑﻄﻪ ﻫﺎﻳﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺩﺭ ﻫﺮ ﺭﺍﺑﻄﻪ ﭼﻪ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺍﻱ ﺗﺎ ﺭﻓﺘﺎﺭ DBMSﺩﺭ ﻋﻤﻠﻴﺎﺕ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٨٦ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺭﻭﻱ ﭘﺎﻳﮕـﺎﻩ ﺑـﺎ ﻛﻤﺘـﺮﻳﻦ ﺁﻧﻮﻣﺎﻟـﻲ ﻫﻤـﺮﺍﻩ ﺑﺎﺷـﺪ .ﺩﺭ ﻣﺜﺎﻝ ﻓﻮﻕ ﺩﻟﻴﻞ ﺑﺮﻭﺯ ﺁﻧﻮﻣﺎﻟﻴﻬﺎﻱ ﺭﺍﺑﻄﻪ SPCﭘﺪﻳﺪﻩ ﺍﻱ ﺍﺳﺖ ﺑﻨﺎﻡ
ﺍﺧـﺘﻼﻁ ﺍﻃﻼﻋﺎﺗـﻲ ﻳﻌﻨـﻲ ﺍﻃﻼﻋـﺎﺕ ﺩﺭ ﻣـﻮﺭﺩ ﺩﻭ ﭘﺪﻳـﺪﻩ ) ﻣﻮﺟـﻮﺩﻳﺖ ( ﺑﻄﻮﺭ ﻏﻴﺮ ﻻﺯﻡ ﺩﺭ ﻳﻜﺪﻳﮕﺮ ﻣﺨﻠﻮﻁ ﺷﺪﻩ ﺍﻧﺪ
ﺑﻌﺒﺎﺭﺗﻲ ﺍﻃﻼﻉ ﺩﺭ ﻣﻮﺭﺩ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﻭ ﺷﻬﺮﺵ ﺑﺎ ﺍﻃﻼﻉ ﻗﻄﻌﻪ ﻣﺨﻠﻮﻁ ﺷﺪﻩ ﺍﺳﺖ.
X Y Z ﻣﺜﺎﻝ ﻣﻘﺪﻣﺎﺗﻲ :ﻓﺮﺽ ﻛﻨﻴﺪ ﺭﺍﺑﻄﻪ ﻣﻘﺎﺑﻞ ﺭﺍ ﺩﺍﺭﻳﻢ
-١ﻭﺍﺑﺴـﺘﮕﻲ ﺗﺎﺑﻌـﻲ ﺑﺎﻳـﺪ ﺑﺮﺍﻱ ﺗﻤﺎﻡ ﺭﺍﺑﻄﻪ ﻫﺎ ﺩﺭﺳﺖ ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﺍﺯ ﻣﻔﻬﻮﻡ ﻭ ﻣﻌﻨﻲ ﺁﻥ ﺻﻔﺎﺕ ﺳﺮﭼﺸﻤﻪ ﺑﮕﻴﺮﺩ ﻧﻪ ﺍﺯ ﻣﻮﺍﺭﺩ
ﺧـﺎﺹ ﺩﺭ ﻳـﻚ ﻳـﺎ ﭼـﻨﺪ ﺭﺍﺑﻄـﻪ .ﺑﻌـﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺯﻳﺎﺩﻱ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺩﺭ ﻭﺍﻗﻊ ﺻﺤﻴﺢ
ﻧﻴﺴﺖ.
ﺍﺳﺘﺎﺩ ﺩﺭﺱ ﺗﺮﻡ ﻛﻼﺱ
ﺣﻤﻴﺪﻱ ﺍﺳﻤﺒﻠﻲ ٧٩١ ١٠٦ ﺍﺳﺘﺎﺩ → ﻛﻼﺱ
ﺷﺮﻳﻔﻲ ﻣﺒﺎﻧﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ ٧٩٢ ١٠٥ ﻛﻼﺱ → ﺩﺭﺱ
ﻣﺪﺍﺭ ﺍﻟﻜﺘﺮﻳﻜﻲ ﺭﺣﻴﻤﻲ ٧٩٣ ١٠٤ ﺍﺳﺘﺎﺩ → ﺩﺭﺱ
ﺯﻳﻨﺎﻟﻲ ﻣﺪﺍﺭ ﻣﻨﻄﻘﻲ ٨٠١ ٣٠١ ﺩﺭﺱ → ﺍﺳﺘﺎﺩ
-٢ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺑﺮﺍﻱ ﺗﻌﺮﻳﻒ ﻣﺤﺪﻭﻳﺘﻬﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻧﻴﺰ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ .ﻳﻚ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺮﺍﻱ ﻳﻚ
ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺩﺭﺳﺖ ﻭ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺩﻳﮕﺮ ﻏﻠﻂ ﺑﺎﺷﺪ ﻟﺬﺍ ﻃﺮﺍﺡ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﻲ ﺗﻮﺍﻧﺪ ﻗﻮﺍﻋﺪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺕ ﺧﻮﺩ ﺭﺍ
ﺑﺎ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻧﻴﺰ ﺑﻴﺎﻥ ﻧﻤﺎﻳﺪ.
ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ ﺯﻳﺮ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﺮﺍﻱ ﺭﺍﺑﻄﻪ SPCﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ.
)(s# ,p# → Qty
)(s# ,p# → city
) (s# → city
)(s# ,p# → s#
)(s# ,p# → )( city ,Qty
-١-٣-٦ﻣﻔﻬﻮﻡ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻛﺎﻣﻞ )(FFD
ﺻـﻔﺖ ﺧﺎﺻـﻪ yﺍﺯ ﺭﺍﺑﻄـﻪ Rﺑـﺎ ﺻـﻔﺖ ﺧﺎﺻﻪ xﺍﺯ ﺁﻥ FDﻛﺎﻣﻞ ﺩﺍﺭﺩ ﻫﺮ ﮔﺎﻩ yﺑﺎ FD ، xﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺍﻣﺎ ﺑﺎ ﻫﻴﭽﻜﺪﺍﻡ ﺍﺯ
R.Xﻧﺸﺎﻥ ﻣﻲ ﺩﻫﻴﻢ ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﺭﺍﺑﻄﻪ SPC ﺍﺟـﺰﺍ ﺗﺸـﻜﻴﻞ ﺩﻫﻨﺪﻩ ﺁﻥ FDﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ ﺁﻥ ﺭﺍ ﺑﺼﻮﺭﺕ ⇒ R.Y
ﻭ ﭘﺲ ( s ≠, p ≠) ⇒ Qty ( S ≠, P ≠ ) → Qty ﺩﺍﺭﻳﻢ :
s ≠→ Qty
p ≠→ Qty
ﺍﮔﺮ ﺑﺮﺍﻱ ﺗﻤﺎﻡ ﺻﻔﺎﺕ ﺧﺎﺻﻪ yﺩﺭ Rﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ x → yﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ xﺭﺍ ﺍﺑﺮ ﻛﻠﻴﺪ Rﻣﻲ ﻧﺎﻣﻨﺪ ﻭ ﺑﺼﻮﺭﺕ •
x → Rﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﻨﺪ .ﺍﮔﺮ ﺍﻳﻦ ﻭﺍﺑﺴﺘﮕﻲ ﺍﺯ ﻧﻮﻉ FFDﺑﺎﺷﺪ ﺁﻧﮕﺎﻩ Xﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ Rﺍﺳﺖ .
-٢-٣-٦ﺗﻌﺮﻳﻒ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺑﺪﻳﻬﻲ:
ﺍﮔـﺮ Yﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ Xﺑﺎﺷﺪ ﺁﻧﮕﺎﻩ x → yﺍﻳﻦ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺭﺍ ﺑﺪﻳﻬﻲ ) (trivalﻣﻲ ﻧﺎﻣﻴﻢ .ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ
ﻳﻚ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺭﺍ ﺑﺪﻳﻬﻲ ﮔﻮﻳﻨﺪ ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﺳﻤﺖ ﺭﺍﺳﺖ ﺁﻥ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺳﻤﺖ ﭼﭗ ﺑﺎﺷﺪ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٨٨ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﻤﻜـﻦ ﺍﺳﺖ ﺑﻌﻀﻲ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ ﺭﺍ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ ﺩﻳﮕﺮ ﻧﺘﻴﺠﻪ ﮔﺮﻓﺖ ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ
ﺗﺎﺑﻌــﻲ ) ( s ≠, p ≠) → (city, Qtyﻣــﻲ ﺗــﻮﺍﻥ ﺩﻭ ﻭﺍﺑﺴــﺘﮕﻲ ( s ≠, p ≠) → Qty, ( s ≠, p ≠) → cityﺭﺍ ﻧﺘــﻴﺠﻪ
ﮔﺮﻓﺖ.
ﻣﺠﻤـﻮﻋﻪ ﺗﻤـﺎﻡ ﻭﺍﺑﺴـﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ ﻛﻪ ﺗﻮﺳﻂ ﻣﺠﻤﻮﻋﻪ ﻣﻌﻴﻨﻲ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﻨﺪ ﺭﺍ ﺑﺴﺘﺎﺭ ﺭﺍﺑﻄﻪ
ﮔﻮﻳـﻨﺪ .ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺍﮔﺮ Fﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ FDﻫﺎﻱ ﺭﺍﺑﻄﻪ Fﺑﺎﺷﺪ ،ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻡ FDﻫﺎﻳﻲ ﻛﻪ Fﻗﺎﺑﻞ ﺍﺳﺘﻨﺘﺎﺝ
ﻫﺴـﺘﻨﺪ ﺭﺍ ﺑﺴـﺘﺎﺭ ) ﭘﻮﺷﺸـﻲ( ) (CLOSUREﻣﺠﻤﻮﻋﻪ Fﮔﻮﻳﻨﺪ ﻭ ﺑﺎ F+ﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﻨﺪ ،ﺍﻭﻟﻴﻦ ﺗﻼﺵ ﺩﺭ ﺟﻬﺖ
ﺣـﻞ ﺍﻳـﻦ ﻣﺴﺄﻟﻪ ﺩﺭ ﻣﻘﺎﻟﻪ ﺍﻱ ﻛﻪ ﺗﻮﺳﻂ ﺁﺭﻣﺴﺘﺮﺍﻧﮓ ﻣﻨﺘﺸﺮ ﺷﺪ ،ﺻﻮﺭﺕ ﮔﺮﻓﺖ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺍﺳﺘﻨﺘﺎﺝ
ﻛـﻪ ﺑﻌـﻨﻮﺍﻥ ﺍﺻـﻮﻝ ﺁﺭﻣﺴـﺘﺮﺍﻧﮓ ﻧﺎﻣـﻴﺪﻩ ﻣـﻲ ﺷـﺪﻧﺪ ﺭﺍ ﺍﺭﺍﺋـﻪ ﺩﺍﺩ ﻛﻪ ﺑﻪ ﻛﻤﻚ ﺁﻥ ﻣﻲ ﺗﻮﺍﻥ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ
ﺟﺪﻳﺪﻱ ﺭﺍ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﺗﺎﺑﻌﻲ ﻣﻮﺟﻮﺩ ﺍﺳﺘﻨﺘﺎﺝ ﻛﺮﺩ.
-٣-٣-٦ﺍﺻﻮﻝ ﺁﺭﻣﺴﺘﺮﺍﻧﮓ
-١ﻗﺎﻋﺪﻩ ﺍﻧﻌﻜﺎﺳﻲ ) : (Reflexivity
A → B ﺍﮔﺮ Bﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ Aﺑﺎﺷﺪ ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ
-٢ﻗﺎﻋﺪﻩ ﺍﻓﺰﺍﻳﺶ ) (augmentationﺍﮔﺮ A → Bﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ )(A,C) → (B,C
-٣ﻗﺎﻋﺪﻩ ﺗﻌﺪﻱ ) : (transitivityﺍﮔﺮ A → Bﻭ B → Cﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ A →C
-٤ﻗﺎﻋﺪﻩ ﺗﺠﺰﻳﻪ ﭘﺬﻳﺮﻱ ) : (decompositionﺍﮔﺮ ) A → (B,Cﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ A → C,A → B
-٥ﻗﺎﻋﺪﻩ ﺍﺟﺘﻤﺎﻉ ) : (unionﺍﮔﺮ A → Bﻭ A →Cﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ )A → (B,C
-٦ﻗﺎﻋﺪﻩ ﺷﺒﻪ ﺗﻌﺪﻱ ) : (psoudo transitivityﺍﮔﺮ A → Bﻭ (C,B) → Dﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ (A,C) → D
-٦ﻗﺎﻋﺪﻩ ﺗﺮﻛﻴﺐ :ﺍﮔﺮ A→Bﻭ C→Dﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ )(A,C) → (B,D
ﺗﻤﺮﻳﻦ :ﻓﺮﺽ ﻛﻨﻴﺪ A D CD B ,ad Cﻧﺎﻥ ﺩﻫﻴﺪ ADﺍﺑﺮ ﻛﻠﻴﺪ ﺍﺳﺖ ﻭﻟﻲ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻧﻴﺴﺖ.
ﻣﺜﺎﻝ :ﻓﺮﺽ ﻛﻨﻴﺪ ﻣﺘﻐﻴﺮ ﺭﺍﺑﻄﻪ ﺍﻱ Rﺑﺎ ﺻﻔﺎﺕ ﺧﺎﺻﻪ FD ,F,E,D,C,B,Aﺯﻳﺮ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻭﺍﺑﺴﺘﮕﻲ
ﺗﺎﺑﻌﻲ (A,D)→ Fﺑﺮﺍﻱ Rﺑﺮﻗﺮﺍﺭ ﺍﺳﺖ.
)R=(A,B,C,D,E,F
})FD={ A → (B,C) , B → E , (C,D) → (E,F
)1) A → (B,C
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٨٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
) R=(U,V,W,X,Y,Zﻭ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ Fﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ F + .ﺭﺍ ﻣﺜﺎﻝ :ﺭﺍﺑﻄﻪ Rﺑﺎ ﺻﻔﺎﺕ ﺧﺎﺻﻪ
ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ.
})F={ U→ (X,Y) , X → Y , (X,Y) → (Z,V
} )F + = { U → X , U → Y , X → Y , (X, Y ) → ( Z,V ), U → (Z,V
♦ ﺁﻧﻮﻣﺎﻟﻴﻬﺎ:
〉〈 sv, c3,14 -١ﺩﺭﺝ ﻛﻦ ﺍﻃﻼﻉ
ﺍﻳﻦ ﺩﺭﺝ ﻧﺎﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺎ ﻧﺪﺍﻧﻴﻢ ﭼﻪ ﻗﻄﻌﻪ ﺍﻱ ﺗﻬﻴﻪ ﻛﺮﺩﻩ ﺍﺳﺖ.
〉〈 s3, p1,100 -٢ﺣﺬﻑ ﻛﻦ
ﻣﻨﺠﺮ ﺑﻪ ﺣﺬﻑ ﺍﻃﻼﻉ ﻧﺎﺧﻮﺍﺳﺘﻪ 〉 〈 s3, c 2,15ﻣﻲ ﺷﻮﺩ
ﺭﺍﺑﻄﻪ FIRSTﺭﺍﺑﻄﻪ ﺧﻮﺵ ﺳﺎﺧﺘﺎﺭﻱ ﻧﻴﺴﺖ ،ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺑﺎﻳﺪ ﺑﺎ ﺍﻧﺘﺨﺎﺏ ﭘﺮﺗﻮﻫﺎﻱ ﻣﻨﺎﺳﺐ ﺑﻪ ﺩﻭ ﺭﺍﺑﻄﻪ ﺗﺠﺰﻳﻪ ﺷﻮﺩ:
) sp ( s ≠, p ≠, Qty ﻭ ) sec ond ( s ≠, status, city
ﻧﻜﺘﻪ :ﺭﺍﺑﻄﻪ FIRSTﺑﺎﻳﺪ ﺑﮕﻮﻧﻪ ﺍﻱ ﺗﺠﺰﻳﻪ ﺷﻮﺩ ﻛﻪ ﺩﺭ ﺭﺍﺑﻄﻪ ﻫﺎﻱ ﺣﺎﺻﻠﻪ FDﻧﺎﻛﺎﻣﻞ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٩١ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
- ٢-٤-٦ﺭﺍﺑﻄﻪ 2NF
ﺭﺍﺑﻄﻪ ﺍﻱ 2NFﺍﺳﺖ ﻛﻪ :
INF -١ﺑﺎﺷﺪ
-٢ﻫﺮ ﺻﻔﺖ ﺧﺎﺻﻪ ﻏﻴﺮ ﻛﻠﻴﺪﺑﺎ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻛﺎﻣﻞ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻌﺮﻳﻒ 2NFﻣﻲ ﺑﻴﻨﻴﻢ ﺭﺍﺑﻄﻪ 2NF ، FIRSTﻧﻴﺴﺖ ،ﺭﺍﺑﻄﻪ SECONDﻭ SPﻫﺮ ﺩﻭ 2NFﻣﻲ ﺑﺎﺷﻨﺪ.
ﻧﻜـﺘﻪ FD -١ﻫـﺎﻱ ﺑـﻴﻦ ﻣﺠﻤﻮﻋﻪ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﻳﻚ ﻣﺤﻴﻂ ﺑﻴﺎﻧﮕﺮ ﻗﻮﺍﻧﻴﻦ ﺳﻤﺎﻧﺘﻴﻚ ﺣﺎﻛﻢ ﺑﺮ ﺁﻥ ﻣﺤﻴﻂ ﻣﻲ ﺑﺎﺷﻨﺪ .ﺑﻌﻨﻮﺍﻥ
ﻣـﺜﺎﻝ ﻭﻗﺘـﻲ ﻣـﻲ ﮔﻮﺋـﻴﻢ ﺩﺭﺱ ≠ PR ≠→ COﺍﺳﺘﺎﺩ ﻳﻌﻨﻲ ﺍﻳﻦ ﻗﺎﻋﺪﻩ ﺑﺮ ﻣﺤﻴﻂ ﺣﺎﻛﻢ ﺍﺳﺖ ﻛﻪ ﻫﺮ ﺍﺳﺘﺎﺩ ﻓﻘﻂ ﻳﻚ ﺩﺭﺱ
ﻣـﻲ ﺩﻫـﺪ .ﺍﻳـﻦ ﻗﻮﺍﻧـﻴﻦ ﺳـﻤﺎﻧﺘﻴﻚ ﺑﺎﻳﺪ ﺑﻨﺤﻮﻱ ﺑﻪ ﺳﻴﺴﺘﻢ ﺩﺍﺩﻩ ﺷﻮﺩ .ﺍﻳﻨﮕﻮﻧﻪ ﻗﻮﺍﻋﺪ ﻧﻮﻋﻲ ﻗﻮﺍﻋﺪ ﺟﺎﻣﻌﻴﺘﻲ ﺑﺮﮔﺮﻓﺘﻪ ﺍﺯ ﻣﺤﻴﻂ
ﻋﻤﻠﻴﺎﺗﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﻮﺳﻮﻡ ﺑﻪ ﻗﻮﺍﻧﻴﻦ ﺟﺎﻣﻌﻴﺖ ﻧﺎﺷﻲ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻣﻲ ﺑﺎﺷﻨﺪ.
ﻧﻜﺘﻪ -٢ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ INFﺑﻪ 2NFﺍﺯ ﻋﻤﻠﮕﺮ ﭘﺮﺗﻮ ﺑﻄﻮﺭ ﻣﻨﺎﺳﺐ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
SECOND ﺁﻧﻮﻣﺎﻟﻴﻬﺎﻱ ﺭﺍﺑﻄﻪ •
-١ﺩﺭ ﺩﺭﺝ :ﺩﺭﺝ ﻛﻦ ﺍﻃﻼﻉ > : <C5,18ﻭﺿﻌﻴﺖ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﻪ ﺷﻬﺮ ١٨ ، C5ﺍﺳﺖ ﺍﻳﻦ ﻋﻤﻞ ﻧﺎﻣﻤﻜﻦ ﺍﺳﺖ ﺗﺎ
ﻧﺪﺍﻧﻴﻢ ﭼﻪ ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﺍﻱ ﺩﺭ ﺷﻬﺮ ﺳﺎﻛﻦ ﺍﺳﺖ .ﺯﻳﺮﺍ ﻛﻠﻴﺪ ≠ Sﺍﺳﺖ.
-٢ﺩﺭ ﺣﺬﻑ :ﻣﻲ ﺩﺍﻧﻴﻢ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻧﻲ ﺳﺎﻛﻦ ﺷﻬﺮﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ .ﺍﻃﻼﻉ > <S5,15ﺭﺍ ﺣﺬﻑ ﻛﻦ ﺍﻳﻦ ﺣﺬﻑ ﻣﻨﺠﺮ ﺑﻪ
≠s city Status ﺣﺬﻑ ﺍﻃﻼﻉ > <C4,15ﻣﻲ ﮔﺮﺩﺩ.
s1 c1 ١٠ -٣ﺩﺭ ﺑﻪ ﻫﻨﮕﺎﻡ ﺳﺎﺯﻱ :ﻭﺿﻌﻴﺖ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﻪ ﺷﻬﺮ c2ﺭﺍ ﻋﻮﺽ ﻛﻦ
s2 c2 ٢٠ ﺩﺭ ﺍﻳﻨﺠﺎ ﻋﻤﻞ ﺗﺎﭘﻠﻲ ﺑﻪ ﻋﻤﻞ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺗﺒﺪﻳﻞ ﻣﻴﺸﻮﺩ.
s3 c2 ٢٠
s4 c1 ١٠
S5 c4 ١٥
ﺭﺍﺑﻄﻪ secondﻫﻢ ﺑﺎﻳﺪ ﺑﺎ ﻋﻤﻠﮕﺮ ﭘﺮﺗﻮ ﻣﻨﺎﺳﺐ ﺑﻪ ﺩﻭ ﺭﺍﺑﻄﻪ ﺗﺠﺰﻳﻪ ﺷﻮﺩ .ﻓﺮﺽ ﻛﻨﻴﻢ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺑﻪ ﺩﻭ ﺭﺍﺑﻄﻪ
city status
c1 ١٠ s1 c1
c2 ٢٠ s2 c2
c4 ١٥ s3 c3
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٩٢ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺸﺨﺺ ﺍﺳﺖ ﺑﺎ ﺗﺮﻛﻴﺐ SCﻭ CSﻫﺮ ﮔﺎﻩ ﻻﺯﻡ ﺑﺎﺷﺪ ﺑﻪ ﺭﺍﺑﻄﻪ SECONDﻣﻲ ﺭﺳﻴﻢ.
ﻋﻠﺖ ﺁﻧﻮﻣﺎﻟﻴﻬﺎﻱ SECOND •
ﺩﺭ ﺭﺍﺑﻄﻪ SECONDﻧﻮﻋﻲ ﻭﺍﺑﺴﺘﮕﻲ ﺧﺎﺹ ﺑﻨﺎﻡ ﻭﺍﺑﺴﺘﮕﻲ ﺑﺎ ﻭﺍﺳﻄﻪ ) ﺍﺯ ﻃﺮﻳﻖ ﺗﻌﺪﻱ( ﻭﺟﻮﺩ ﺩﺍﺭﺩ.
ﺗﻌﺮﻳﻒ ﻭﺍﺑﺴﺘﮕﻲ ﺑﺎ ﻭﺍﺳﻄﻪ:
B →C , B → A,A → B ﺩﺭ ﺭﺍﺑﻄﻪ ) R(A,B,Cﺍﮔﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ
→ A → C) ⇒ (A → B , B C ﻣﻲ ﮔﻮﺋﻴﻢ Cﺑﻪ Aﺍﺯ ﻃﺮﻳﻖ Bﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ :
S# → CITYﻭ CITY → STATUSﻣﻲ ﮔﻮﺋﻴﻢ STATUSﺿﻤﻦ ﺍﻳﻨﻜﻪ ﺧﻮﺩ ﺩﺭ ﻣﺜﺎﻝ ﻗﺒﻞ ﺩﺍﺭﻳﻢ:
ﻣﺴﺘﻘﻴﻤﹰﺎ ﺑﻲ ﻭﺍﺳﻄﻪ ﺑﺎ S#ﻭﺍﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ ﺍﺯ ﻃﺮﻳﻖ CITYﻧﻴﺰ ﺑﻪ ﺁﻥ ﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ.
: ٣-٤-٦ﺭﺍﺑﻄﻪ 3NF
ﺭﺍﺑﻄﻪ ﺍﻱ ﺭﺍ 3NFﮔﻮﻳﻨﺪ ﻫﺮ ﮔﺎﻩ:
2NF -١ﺑﻮﺩﻩ
-٢ﻫﺮ ﺻﻔﺖ ﺧﺎﺻﻪ ﻏﻴﺮ ﻛﻠﻴﺪ ﺑﺎ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﻭﺍﺑﺴﺘﮕﻲ ﺑﻲ ﻭﺍﺳﻄﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
≠S
QTY ﻣﺜﺎﻝ :ﺭﺍﺑﻄﻪ SPﻭ 3NFﺍﺳﺖ
≠P
: ٤-٤-٦ﺭﺍﺑﻄﻪ BCNF
ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺗﻌﺮﻳﻔﻲ ﻣﺴﺘﻘﻞ ﺍﺯ ﺳﻄﻮﺡ ﻛﻼﺳﻴﻚ ﻛﺎﺩﻱ ﺩﺍﺭﺩ :
ﺭﺍﺑﻄﻪﺍﻱ BCNFﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﻫﺮ ﺩﺗﺮﻣﻴﻨﺎﻥ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺑﺎﺷﺪ .
ﻣﺜﺎﻝ :ﺭﺍﺑﻄﻪ BCNF ، FIRSTﻧﻴﺴﺖ ﺯﻳﺮﺍ ﺩﺭ ﺭﺍﺑﻄﻪ ﺩﺍﺭﻳﻢ S# → City :ﻭ S#ﺩﺗﺮﻣﻴﻨﺎﻥ ﺍﺳﺖ ﺍﻣﺎ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻧﻴﺴﺖ .
ﺩﺭ ﺳﻄﻮﺡ ﻛﻼﺳﻴﻚ Coddﻣﻔﻬﻮﻡ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻣﻄﺮﺡ ﻧﻴﺴﺖ ﻭﻟﻴﻜﻦ ﺩﺭ BCNFﻣﻄﺮﺡ ﺍﺳﺖ ﻭ ﭼﻮﻥ ﻳﻚ ﺭﺍﺑﻄﻪ ﻣﻤﻜﻦ
ﺍﺳﺖ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ BCNFﺑﺎﻳﺪ ﺑﻴﺸﺘﺮ ﺑﺮﺭﺳﻲ ﺷﻮﺩ .
ﻫﺮ ﺭﺍﺑﻄﻪ 3NF BCNFﺍﺳﺖ ﻭﻟﻲ ﻫﺮ 3NFﺍﻱ BCNFﻧﻴﺴﺖ .ﺑﻠﻜﻪ ﺑﺎﻳﺪ ﺑﺮﺭﺳﻲ ﺷﻮﺩ .ﻟﺬﺍ ﺩﻭ ﺣﺎﻟﺖ ﺭﺍ ﺩﺭ ﻧﻈﺮ
ﻣﻲﮔﻴﺮﻳﻢ :
S# Status
City
Sname
ﺍﻳﻦ ﺭﺍﺑﻄﻪ BCNFﺍﺳﺖ ﺯﻳﺮﺍ ﻫﺮ ﺩﻭ ﺗﺮﻣﻴﻨﺎﻥ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻭ 3NFﻫﻢ ﻣﻲﺑﺎﺷﺪ .
ﺍﻳﻦ ﺭﺍﺑﻄﻪ 1NFﺍﺳﺖ ﺯﻳﺮﺍ ﻋﻨﺎﺻﺮﺵ ﺍﺗﻤﻴﻚ ﻫﺴﺘﻨﺪ .
ﺍﻳﻦ ﺭﺍﺑﻄﻪ 2NFﺍﺳﺖ ﺯﻳﺮﺍ 1NFﺍﺳﺖ ﻭ ﻭﺍﺑﺴﺘﮕﻲ ﻧﺎﻛﺎﻣﻞ ﻧﺪﺍﺭﻳﻢ .
ﺍﻳﻦ ﺭﺍﺑﻄﻪ 3NFﺍﺳﺖ ﺯﻳﺮﺍ ﺗﻌﺪﻱ ﻧﺪﺍﺭﻳﻢ .
♦ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ)ﻧﺒﻮﺭ ﺻﻔﺖ ﻣﺸﺘﺮﻙ( ﺍﮔﺮ 3NFﺍﺳﺖ BCNFﻧﻴﺰ ﻣﻲ ﺑﺎﺷﺪ.
ﻣـﺜﺎﻝ ٢ﺭﺍﺑﻄـﻪ SPSﺭﺍ ﺩﺭ ﻧﻈـﺮ ﺑﮕﻴﺮﻳﻢ SPS ( S# , P#, SNAME ,QTY ) :ﺩﺭ ﺍﻳﻨﺠﺎ ﺩﻭ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺩﺍﺭﻳﻢ ﻛﻪ ﺑﺎ ﻫﻢ
ﻫﻤﭙﻮﺷﺎﻧﻲ ﺩﺍﺭﻧﺪ .ﻧﻤﻮﺩﺍﺭ ﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺑﻔﺮﻡ ﺯﻳﺮ ﺍﺳﺖ :
QTY
S#
ﻣﻲﺑﻴﻨﻴﻢ 3NF ، SPSﺍﺳﺖ ﻭﻟﻲ BCNFﻧﻴﺴﺖ .ﻧﻜﺘﻪ ﺟﺎﻟﺒﺘﺮ ﺁﻧﻜﻪ ﺭﺍﺑﻄﻪ spsﺍﺧﺘﻼﻁ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺍﺭﺩ ﺑﺎ ﺍﻳﻦ ﻫﻤﻪ ﺑﺎ
ﻻ ﻭﺟﻮﺩ ﭘﺪﻳﺪﻩ ﺍﺧﺘﻼﻁ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍﺑﻄﻪ ﺭﺍ ﺩﺭ ﺣﺪ 1NFﻳﺎ ﺣﺪﺍﻛﺜﺮ
ﺩﺍﺷﺘﻦ ﺩﻭ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ 3NFﺍﺳﺖ ﺩﺭ ﺣﺎﻟﻴﻜﻪ ﻣﻌﻤﻮ ﹰ
2NFﻧﮕﻪ ﻣﻲﺩﺍﺭﺩ .
ﻧﺘﻴﺠﻪ :ﺻﺮﻑ ﮔﻔﺘﻦ ﺭﺍﺑﻄﻪﺍﻱ ﺍﺧﺘﻼﻁ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺍﺭﺩ ﻟﺰﻭﻣﹸﺎ ﻣﻌﻨﺎﻳﺶ ﺍﻳﻦ ﻧﻴﺴﺖ ﻛﻪ ﺳﻄﺢ ﻧﺮﻣﺎﻟﻴﺘﻲ ﺁﻥ ﭘﺎﻳﻴﻦ ﺍﺳﺖ .
ﺩﺭ ﻋﻤـﻞ ﺑـﺮﺍﻱ ﻃﺮﺍﺣـﻲ ﺭﺍﺑﻄـﻪﻫـﺎ ﺗـﺎ ﺳﻄﺢ BCNFﻧﺮﻣﺎﻝ ﻣﻲ ﺷﻮﻧﺪ .ﺳﻄﻮﺡ ﺑﺎﻻﺗﺮ ﺑﻴﺸﺘﺮ ﺟﻨﺒﻪ ﺗﺌﻮﺭﻳﻚ ﻭ ﭘﮋﻭﻫﺸﻲ ﺩﺍﺭﺩ ﻭ
ﻼ 5NFﻭ ٤NFﻫﺴﺘﻨﺪ ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺭﺍﺑﻄﻪﻫﺎﻳﻲ
ﻣﻌﻨﺎﻳﺶ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺗﻘﺮﻳﺒﹰﺎ ﺗﻤﺎﻡ ﺭﺍﺑﻄﻪﻫﺎﻳﻲ ﻛﻪ BCNFﻫﺴﺘﻨﺪ ﻋﻤ ﹰ
ﻛﻪ BCNFﺑﺎﺷﺪ ﺍﻣﺎ 4NFﻭﻳﺎ 5NFﻧﺒﺎﺷﻨﺪ ﺑﺴﻴﺎﺭ ﻛﻢﺍﻧﺪ .
ﻣﺜﺎﻝ : ٣ﺭﺍﺑﻄﻪﺍﻱ ﻛﻪ 3NFﻫﺴﺖ ﺍﻣﺎ BCNFﻧﻴﺴﺖ .
ﻓﺮﺽ ﻛﻨﻴﺪ ﺩﺭ ﻣﺤﻴﻂ ﺁﻣﻮﺯﺷﻲ ﻗﻮﺍﻋﺪ ﺯﻳﺮ ﻣﻮﺟﻮﺩﻧﺪ :
. ١ﻳﻚ ﺩﺍﻧﺸﺠﻮ ﻳﻚ ﺩﺭﺱ ﺭﺍ ﻓﻘﻂ ﺑﺎ ﻳﻚ ﺍﺳﺘﺎﺩ ﺍﺧﺬ ﻣﻲﻛﻨﺪ .
. ٢ﻳﻚ ﺍﺳﺘﺎﺩ ﻓﻘﻂ ﻳﻚ ﺩﺭﺱ ﺗﺪﺭﻳﺲ ﻣﻲﻛﻨﺪ .
. ٣ﺩﺭﺱ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﻮﺳﻂ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺍﺳﺘﺎﺩ ﺗﺪﺭﻳﺲ ﺷﻮﺩ .
ﺩﺭ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺩﻭ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺩﺍﺭﻳﻢ :
SCP
ST# CO# PR#
CO#ﻭ ST#ﻭ
ST1 C1 P1
ST2 C1 P1 PR#ﻭ ST#
ST1 C2 P2
ST2 C2 P3 ﻭﻛﻠﻴﺪﻫﺎﻱ ﻛﺎﻧﺪﻳﺪ ﺑﺎ ﻫﻢ ﻫﻤﭙﻮﺷﺎﻧﻲ ﺩﺍﺭﻧﺪ .
ST3 C2 P2
ﺍﻳﻦ ﺭﺍﺑﻄﻪ BCNFﻧﻴﺴﺖ ﺯﻳﺮﺍ PR#ﺩﺗﺮﻣﻴﻨﺎﻥ ﺍﺳﺖ ﻭﻟﻲ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﻧﻴﺴﺖ .
ﺍﻣﺎ 3NFﻫﺴﺖ .
PR# → CO#
(ST# , CO#) → PR#
- ٥-٤-٦ﺭﺍﺑﻄﻪ 4NF
)(multivalued dependency ﻭﺍﺑﺴـﺘﮕﻲ ﭼـﻨﺪ ﻣﻘـﺪﺍﺭﻱ MVD ♦
ﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪﻣﻘﺪﺍﺭﻱ ﻧﻮﻋﻲ ﻭﺍﺑﺴﺘﮕﻲ ﺑﻴﻦ ﺩﻭ ﻣﺠﻤﻮﻋﻪ ﻣﺴﺘﻘﻞ ﺍﺯ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﺍﺳﺖ .ﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪﻣﻘﺪﺍﺭﻱ
) (A1,A2,...An ) →→ (B1,B2,...,Bmﺩﺭ ﺭﺍﺑﻄﻪ Rﺑﺮﻗﺮﺍﺭ ﺍﺳﺖ ﺍﮔﺮ ﺑﺮﺍﻱ ﺩﻭ ﺗﺎﭘﻞ tﻭ uﺩﺭ Rﻛﻪ ﺩﺭ ﺗﻤﺎﻡ ﻣﻘﺎﺩﻳﺮ A
ﻣﺸﺘﺮﻛﻨﺪ ﺗﺎﭘﻞ ﺩﻳﮕﺮ Vﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ :
.١ﺩﺭ ﻣﻘﺎﺩﻳﺮ Aﺑﺎ tﻭ uﻣﺸﺘﺮﻙ ﺑﺎﺷﺪ .
.٢ﺩﺭ ﻣﻘﺎﺩﻳﺮ Bﺑﺎ tﻣﺸﺘﺮﻙ ﺑﺎﺷﺪ .
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٩٥ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺜﺎﻝ ١ﺟﺪﻭﻝ ﺗﺪﺭﻳﺲ ﺍﺳﺎﺗﻴﺪ ﺭﺍ ﺷﺎﻣﻞ ﻛﺪ ﺍﺳﺘﺎﺩ ،ﻛﺪ ﺩﺍﻧﺸﻜﺪﻩ ،ﺷﻬﺮ ﺩﺍﻧﺸﻜﺪﻩ ،ﻛﺪ ﺩﺭﺱ ﻭ ﻛﺘﺎﺏ ﺩﺭﺱ ﺩﺭ ﻧﻈﺮ
ﻣـﻲ ﮔﻴـﺮﻳﻢ .ﻓـﺮﺽ ﻛﻨـﻴﻢ ﺩﺍﻧﺸﻜﺪﻩﻫﺎﻳﻲ ﻛﻪ ﺍﺳﺘﺎﺩ ﺩﺭ ﺁﻧﻬﺎ ﺗﺪﺭﻳﺲ ﻣﻲﻛﻨﺪ ﻭ ﺩﺭﻭﺳﻲ ﻛﻪ ﺩﺭﺱ ﻣﻲﺩﻫﺪ ﺍﺯ ﻫﻢ ﻣﺴﺘﻘﻞ
ﺑﺎﺷـﻨﺪ ﻳﻌﻨـﻲ ﻭﺍﺑﺴـﺘﮕﻲ ﺗﺎﺑﻌﻲ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺍﮔﺮ ﺍﺳﺘﺎﺩ ﺩﺭ ﭼﻨﺪ ﺩﺍﻧﺸﻜﺪﻩ ﺩﺭﺱ ﺑﺪﻫﺪ ﻭ ﺩﺭﻭﺱ ﻣﺨﺘﻠﻒ ﺭﺍ ﻧﻴﺰ ﺗﺪﺭﻳﺲ
ﻛﻨﺪ ﺍﻓﺰﻭﻧﮕﻲ ﺩﺍﺭﻳﻢ .ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺟﺪﻭﻝ ﻣﻘﺎﺑﻞ ﺩﺍﺭﻳﻢ :
ﺩﺍﻧﺸـﻜﺪﻩ ﻫـﺎﻱ ﺍﺳـﺘﺎﺩ ) (100ﻭ ﻧﻴـﺰ ﺩﺭﻭﺳـﻲ ﻛـﻪ ﺗـﺪﺭﻳﺲ ﻣـﻲﻛـﻨﺪ ﺗﻜﺮﺍﺭ ﺷﺪﻩ ﺍﺳﺖ ) ﺍﻓﺰﻭﻧﮕﻲ ( ﺍﻳﻦ ﺩﺭ ﺣﺎﻟﻲ ﺍﺳﺖ ﻛﻪ
ﺟﺪﻭﻝ ﻓﻮﻕ ﺗﺎ ﺳﻄﺢ BCNFﻧﺮﻣﺎﻝﺳﺎﺯﻱ ﺷﺪﻩ ﺍﺳﺖ .
ﻣﺜﺎﻝ : ٢ﺭﺍﺑﻄﻪ CTXﺣﺎﻭﻱ ﺍﻃﻼﻋﺎﺕ ﺩﺭﺱ ،ﻣﺪﺭﺱ ﻭ ﻛﺘﺎﺏ ﺩﺭ ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ .ﻳﻚ ﺩﺭﺱ ﻣﻲﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ ﻫﺮ ﻳﻚ
ﻼ ﺩﺭﺱ C1ﻣﻲﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ t1ﻭ
ﺍﺯ ﻣﺪﺭﺳﻴﻦ ﻣﺸﺨﺺ ﺷﺪﻩ ﻭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﻤﺎﻡ ﻛﺘﺎﺑﻬﺎﻱ ﻣﺸﺨﺺ ﺷﺪﻩ ﺗﺪﺭﻳﺲ ﺷﻮﺩ .ﻣﺜ ﹰ
t2ﺗﺪﺭﻳﺲ ﺷﻮﺩ ﻫﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺘﺎﺏ x1ﻭ ﻫﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺘﺎﺏ . x2
ﺩﺭ ﻭﺍﻗﻊ ﻣﻲﺑﻴﻨﻴﻢ ﺑﻪ ﻳﻚ ﺻﻔﺖ ﺧﺎﺻﻪ ﻣﺠﻤﻮﻋﻪﺍﻱ ﺍﺯ ﻣﻘﺎﺩﻳﺮ ﻣﺘﻨﺎﻇﺮ ﺍﺳﺖ .
C T X C →→ Tﻭ C→→ X
c1 t1 x1 ﻣﻲﺗﻮﺍﻥ ﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪ ﻣﻘﺪﺍﺭﻱ ﺭﺍ ﺑﻔﺮﻡ ﺯﻳﺮ ﺗﻌﺮﻳﻒ ﻧﻤﻮﺩ :
c1 t2 x2 ﺭﺍﺑﻄﻪ Rﺑﺎ ﺻﻔﺎﺕ ﺧﺎﺻﻪ Aﻭ Bﻭ Cﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ .
ﻣﻲﮔﻮﻳﻴﻢ Bﺑﺎ Aﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪﻣﻘﺪﺍﺭﻱ ﺩﺍﺭﺩ ﻭ ﭼﻨﻴﻦ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﻴﻢ
c2 t1 x1
A →→ Bﺍﮔـﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﻣﺠﻤﻮﻋﻪ ﻣﻘﺎﺩﻳﺮ Bﻣﺘﻨﺎﻇﺮ ﻣﻘﺎﺩﻳﺮ Aﻭ Cﺗﻨﻬﺎ ﺑﻪ Aﺑﺴﺘﮕﻲ x3
ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻭ ﺑﻪt1ﻣﻘﺪﺍﺭ Cﺑﺴﺘﮕﻲ
t x
ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ .
ﻓﺎﮔـﻴﻦ ﻧﺸـﺎﻥ ﺩﺍﺩ ﻛﻪ ﺩﺭ ﺭﺍﺑﻄﻪ ) R(A,B,Cﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪﻣﻘﺪﺍﺭﻱ A →→ Bﻭﺟﻮﺩ ﺩﺍﺭﺩ ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﻭﺍﺑﺴﺘﮕﻲ
ﭼـﻨﺪﻣﻘﺪﺍﺭﻱ A →→ Cﻧﻴـﺰ ﺑﺮﻗـﺮﺍﺭ ﺑﺎﺷـﺪ .ﺑـﻪ ﺑـﻴﺎﻥ ﺩﻳﮕـﺮ ﺩﺭ ﻳـﻚ ﺭﺍﺑﻄـﻪ ﺑﺎ ﺳﻪ ﺻﻔﺖ ﺧﺎﺻﻪ ،ﻫﻤﻴﺸﻪ ﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪ
ﻣﻘﺪﺍﺭﻱ ﺑﺼﻮﺭﺕ ﺟﻔﺖ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٩٦ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
♦ ﺗﻌﺮﻳﻒ :ﺭﺍﺑﻄـﻪﺍﻱ ﺭﺍ 4NFﮔﻮﻳﻨﺪ ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﻳﻚ ﻭﺍﺑﺴﺘﮕﻲ ﭼﻨﺪﻣﻘﺪﺍﺭﻱ ﻣﺜﻞ A →→ Bﺩﺭ Rﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ
ﺑﺎﺷـﺪ ﺗﻤـﺎﻡ ﺻـﻔﺎﺕ ﺧﺎﺻـﻪ Rﺑﺎ Aﻭﺍﺑﺴﺘﮕﻲ ﺗﺎﺑﻌﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺑﻪ ﺑﻴﺎﻥ ﺩﻳﮕﺮ ﻫﻤﻪ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ Rﺑﺼﻮﺭﺕ
K → Xﺑﺎﺷـﻨﺪ ) .ﻳﻌﻨـﻲ ﻳـﻚ ﻭﺍﺑﺴـﺘﮕﻲ ﺗﺎﺑﻌـﻲ ﺑـﻴﻦ ﺻـﻔﺎﺕ ﺧﺎﺻـﻪ Xﻭ ﻛﻠـﻴﺪ ﻛﺎﻧﺪﻳﺪ . ( Kﺑﺮ ﺍﺳﺎﺱ ﺍﻳﻦ ﺗﻌﺮﻳﻒ
ﻣـﻲ ﺗـﻮﺍﻥ ﻧﺘﻴﺠﻪ ﮔﺮﻓﺖ :ﺭﺍﺑﻄﻪ Rﺑﺎ ﺳﻪ ﺻﻔﺖ ﺧﺎﺻﻪ ﺩﺭ ﭼﻬﺎﺭﻣﻴﻦ ﺻﻮﺭﺕ ﻧﺮﻣﺎﻝ ﺍﺳﺖ ﺍﮔﺮ BCNFﺑﺎﺷﺪ ﻭ
ﺗﻤﺎﻡ MVDﻫﺎﻱ ﺁﻥ FDﺑﺎﺷﻨﺪ .
ﻣﻲﺑﻴﻨﻴﻢ ﺭﺍﺑﻄﻪ 4NF ، CTXﻧﻴﺴﺖ ﺯﻳﺮﺍ ﻳﻚ MVDﺩﺍﺭﺩ ﻛﻪ FDﻧﻴﺴﺖ ). ( C →→X
ﺍﮔﺮ CTXﺭﺍ ﺑﻪ ﺩﻭ ﺭﺍﺑﻄﻪ CTﻭ CXﺗﺠﺰﻳﻪ ﻛﻨﻴﻢ CTﻭ CXﺭﺍﺑﻄﻪ 4NFﻫﺴﺘﻨﺪ .
-٦-٤-٦ﺭﺍﺑﻄﻪ 5NF
ﺗﻌﺮﻳﻒ ﻭﺍﺑﺴﺘﮕﻲ ﭘﻴﻮﻧﺪﻱ Join Dependency: •
ﺍﮔﺮ Rﻳﻚ ﺭﺍﺑﻄﻪ ﻭ ﺳﺘﻮﻧﻬﺎﻱ ﻫﺮﻳﻚ ﺍﺯ ﺭﺍﺑﻄﻪ ﻫﺎﻱ Rn,…R2,R1ﺯﻳﺮﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺳﺘﻮﻧﻬﺎﻱ Rﺑﺎﺷﻨﺪ ،ﺁﻧﮕﺎﻩ Rﺩﺍﺭﺍﻱ
ﻭﺍﺑﺴﺘﮕﻲ ﭘﻴﻮﻧﺪﻱ ﺭﻭﻱ Rn,…R2,R1ﺍﺳﺖ ﺍﮔﺮ ﻭ ﺗﻨﻬﺎ ﺍﮔﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ :
R = R1 ∝R2 ∝R3 …..∝Rn
ﺭﺍﺑﻄﻪ 5NF •
ﺭﺍﺑﻄﻪ Rﺭﺍ 5NFﮔﻮﻳﻨﺪ ﺍﮔﺮ ﻭ ﺗﻨﻬﺎ ﺍﮔﺮ ﻓﻘﻂ ﺑﻪ ﻛﻠﻴﺪﻫﺎﻱ ﻛﺎﻧﺪﻳﺪﺵ ﻭﺍﺑﺴﺘﮕﻲ ﭘﻴﻮﻧﺪﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺑﻌﺒﺎﺭﺗﻲ ﺩﻳﮕﺮ ﻭﺟﻮﺩ
ﻫﺮ ﻭﺍﺑﺴﺘﮕﻲ ﭘﻴﻮﻧﺪﻱ ﺩﺭ ﺁﻥ ﻧﺎﺷﻲ ﺍﺯ ﻛﻠﻴﺪﻫﺎﻱ ﻛﺎﻧﺪﻳﺪ ﺑﺎﺷﺪ.ﺍﺯ ﺍﻳﻦ ﺗﻌﺮﻳﻒ ﺍﻳﻦ ﻧﺘﻴﺠﻪ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ﻛﻪ ﺍﮔﺮ ﺑﺘﻮﺍﻧﻴﻢ ﻳﻚ
ﻭﺍﺑﺴﺘﮕﻲ ﻳﻮﻧﺪﻱ ﺩﺭ ﺭﺍﺑﻄﻪ Rﭘﻴﺪﺍ ﻛﻨﻴﻢ ﻛﻪ ﺩﺭ ﻫﻤﻪ ﭘﺮﺗﻮﻫﺎﻳﺶ ﻛﻠﻴﺪ ﻛﺎﻧﺪﻳﺪ ﺭﺍﺑﻄﻪ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺭﺍﺑﻄﻪ 5NFﻧﻴﺴﺖ.
-٢-٥-٦ﺭﺍﺑﻄﻪ ﺍﺗﻤﻴﻚ:
ﺭﺍﺑﻄـﻪﺍﻱ ﻛﻪ ﺑﻪ ﻋﻨﺎﺻﺮ ﻣﺴﺘﻘﻞ ﺗﺠﺰﻳﻪ ﻧﺸﻮﺩ )ﻃﺒﻖ ﺭﺍﺑﻄﻪ ﺭﻳﺴﺎﻧﺲ ( ﺑﻪ ﺭﺍﺑﻄﻪ ﺍﺗﻤﻴﻚ ﻣﻮﺳﻮﻡ ﺍﺳﺖ .ﺍﺗﻤﻴﻚ ﺑﻮﺩﻥ ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﺎ
ﻧﻴﺴـﺖ ﻛﻪ ﻧﺒﺎﻳﺪ ﺗﺠﺰﻳﻪ ﺷﻮﺩ ﻭﻟﻲ ﻟﺰﻭﻣﻲ ﺑﻪ ﺗﺠﺰﻳﻪ ﺁﻧﻬﺎ ﻧﻴﺴﺖ ﻳﻌﻨﻲ ﺩﺭ ﺻﻮﺭﺕ ﺗﺠﺰﻳﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻪ ﺭﺍﺑﻄﻪ ﻧﺮﻣﺎﻟﺘﺮﻱ ﻧﺮﺳﻴﺪ
.ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ :
) S( S#, Sname, Status, Cityﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﺩﻭ ﺭﺍﺑﻄﻪ ) SX(S#, Sname, Statusﻭ ) SY(S#, Cityﺗﺠﺰﻳﻪ ﺷﻮﺩ ﻛﻪ ﺍﺯ
ﻧﻈﺮ ﻧﺮﻣﺎﻟﻴﺘﻲ ﻓﺮﻗﻲ ﻧﺪﺍﺭﺩ ﻭ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺪﻻﻳﻞ ﺩﻳﮕﺮ ﺗﺠﺰﻳﻪ ﺷﺪﻩ ﺑﺎﺷﺪ .
-٦-٦ﻧﻤﻮﻧﻪ ﻣﺴﺎﺋﻞ ﺍﻳﻦ ﻓﺼﻞ :
ﻣﺠﻤﻮﻋﻪ ﺣﺪﺍﻗﻞ FDﻫﺎﻱ ﺍﻳﻦ ﺭﺍﺑﻄﻪ ﺭﺍ ﺑﺪﺳﺖ ﺁﻭﺭﻳﺪ .
P
L ﺣﻞ :ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻤﻮﺩﺍﺭ FDﻫﺎ ﺩﺍﺭﻳﻢ :
N 1. P → N 4. N → Q
2. N → L )5.N → (L,M
M 3. P → L 6. M → Q
Q
FDﺷﻤﺎﺭﻩ 3ﺍﻓﺰﻭﻧﻪ ﺍﺳﺖ ﺯﻳﺮﺍ ﻣﻨﻄﻘﹰﺎ ﺍﺯ FDﻫﺎﻱ 1ﻭ 2ﻗﺎﺑﻞ
7. N → M ﺍﺳﺘﻨﺘﺎﺝ ﺍﺳﺖ .ﺍﺯ FDﺷﻤﺎﺭﻩ 2ﻭ 5ﺩﺍﺭﻳﻢ :
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ FDﻫﺎﻱ 7ﻭ FD ، 6ﺷﻤﺎﺭﻩ 4ﺍﻓﺰﻭﻧﻪ ﺍﺳﺖ ،ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﺣﺪﺍﻗﻞ FDﻫﺎ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ :
ﻭ M→ Q ﻭN→ M ﻭN → L P → N
P L
N
Q M
-٢ﺩﺭ ﻧﻤﻮﺩﺍﺭ FDﻫﺎﻱ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺣﺪﺍﻗﻞ FDﻫﺎ ﺭﺍ ﺑﺪﺳﺖ ﺁﻭﺭﻳﺪ .
1. (X,Y) → Z
X Y Z 2. Y → Z
3. T → U
4. U → Y
5. T → Z
FDﺷﻤﺎﺭﻩ ٥ﺍﻓﺰﻭﻧﻪ ﺍﺳﺖ .
T U
FDﺷﻤﺎﺭﻩ ١ﻧﻴﺰ ﺍﻓﺰﻭﻧﻪ ﺍﺳﺖ .ﭼﺮﺍ ؟
T→ U ﭘﺲ ﺩﺍﺭﻳﻢ , Y → Z :
→ Yﻣﻲﺗﻮﺍﻥ ﻧﺘﻴﺠﻪ ﮔﺮﻓﺖ (X,Y) → Zﺯﻳﺮﺍ ﺍﮔﺮ (X,Y) → Zﻳﻌﻨﻲ) (X1 ,Y1 , Z١ﻭ ] ﭼﻮﻥ ﺍﺯ Z
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ٩٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
) (Y1, Z2) , (Y1, Z1ﻟﺬﺍ Y→Zﺧﻼﻑ ﻓﺮﺽ ﺍﺳﺖ ﭘﺲ [ Y→Z ) ( X1, Y1 , Z٢ﻭ ﭼﻮﻥ
-٣ﺭﺍﺑﻄﻪ ) R(A,B,Cﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ .ﺩﺭ ﻳﻚ ﻟﺤﻈﻪ ﺍﺯ ﺣﻴﺎﺕ ﺭﺍﺑﻄﻪ ،ﺑﺴﻂ ﺁﻥ ﭼﻨﻴﻦ ﺍﺳﺖ ﻓﺮﺽ ﻛﻨﻴﻢ ﻛﻪ ﺍﻳﻦ ﺭﺍﺑﻄﻪ
ﺑﺎﻳﺪ ﺗﺠﺰﻳﻪ ﺷﻮﺩ ﭼﮕﻮﻧﻪ ﺑﺎﻳﺪ ﺁﻧﺮﺍ ﺗﺠﺰﻳﻪ ﻛﺮﺩ ؟
A B C
a1 b2 c3
a3 b2 c6
a3 b4 c2 A B B C A C
a1 b2 b2 c3 a1 c3
a3 b2 b2 c6 a3 c6
a3 b4 b4 c2 a3 c2
Join
A B C
BC ∞ AC A B C
a1 b2 c3
a1 b2 c6 a1 b2 c3
ﺍﻓﺰﻭﻧﻪ b2
ﺗﺎﭘﻞ a3 c3 a3 b2 c6
a3 b2 c6 a3 b4 c2
AB ∞ AC
a3 b4 c2
A B C
a1 b2 c3
a3 b2 c6
a3 b2 c2
a3 b4 c6
a3 b4 c2
ﻣــﻲ ﺑﻴﻨــﻴﻢ ﻛــﻪ ﺗﺠــﺰﻳﻪ Rﺑﺼــﻮﺭﺕ ) R :(AB,ACﻳــﺎ )R :(AB,BCﻣﻨﺎﺳــﺐ ﻧﻴﺴــﺖ ﺯﻳــﺮﺍ ﺑــﺎ ﭘــﻴﻮﻧﺪ ﺗﺠــﺰﻳﻪﻫــﺎ
ﺗﺎﭘـﻞ ﺍﻓـﺰﻭﻧﻪ ﺑـﺮﻭﺯ ﻣـﻲﻛـﻨﺪ ﺍﻣﺎ ﺩﺭ ﺗﺠﺰﻳﻪ ) R : (BC,ACﺍﻳﻦ ﭘﺪﻳﺪﻩ ﻧﺎﻣﻄﻠﻮﺏ ﺭﺍ ﺩﺭ ﭘﻲ ﻧﺪﺍﺭﺩ ﻟﺬﺍ ﺍﻳﻦ ﺗﺠﺰﻳﻪ ﻣﻨﺎﺳﺐ
ﺍﺳﺖ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠٠ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
DBMS
External/conceptual Mapping
Conceptual
DBA Schema A View
Conceptual/internal Mapping
ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﺩﺭ ﺷﻜﻞ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﺩ ﻣﻌﻤﺎﺭﻱ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺯ ﺍﺟﺰﺍﺀ ﺯﻳﺮ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ
HL – ١ﺯﺑﺎﻥ ﻣﻴﺰﺑﺎﻥ
- ٢ﺯﺑﺎﻥ ﻓﺮﻋﻲ ﺩﺍﺩﻩ ﺍﻱ DSL
– ٣ﺩﻳﺪ ﺧﺎﺭﺟﻲ External View
– ٤ﺩﻳﺪ ﻣﻔﻬﻮﻣﻲ Conceptual View
– ٥ﺩﻳﺪ ﺩﺍﺧﻠﻲ Internal View
– ٦ﺗﺒﺪﻳﻼﺕ ﺑﻴﻦ ﺳﻄﻮﺡ mapping
– ٧ﻛﺎﺭﺑﺮ User
– ٨ﺍﺩﺍﺭﻩ ﻛﻨﻨﺪﻩ ﭘﺎﻳﮕﺎﻩ DBA
– ٩ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ DBMS
ﻧﺎﻡ ﻧﺎﻡ
ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﺪ ﻗﻄﻌﻪ
ﻭﺿﻌﻴﺖ ﺭﻧﮓ
ﺷﻬﺮ ﻭﺯﻥ
ﺗﻌﺪﺍﺩ
DSﺳﻠﺴـﻠﻪ ﻣﺮﺍﺗﺒـﻲ ﻧﻮﻋـﻲ ﺩﺭﺧﺘﻮﺍﺭﻩ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﺭﻳﺸﻪ ﺩﺍﺭﺩ ﻭ ﺩﺭ ﺳﻄﻮﺡ ﻣﺨﺘﻠﻒ ﺩﺍﺭﺍﻱ ﺍﻋﻀﺎ ﻳﺎ ﻭﺍﺑﺴﺘﮕﺎﻧﻲ ﻣﻲ ﺑﺎﺷﺪ ﺑﻪ
ﺩﻭ ﺻﻮﺭﺕ ﺁﻥ ﺭﺍ ﻣﺪﻝ ﻣﻲ ﻛﻨﻴﻢ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠٢ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
١:n ١:n
ﺗﻮﺟﻪ :ﻓﻴﻠﺪ Qtyﺩﺭ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ PSﺩﺭ Sﻗﺮﺍﺭ ﺩﺍﺭﺩ ﻭ ﺩﺭ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ S Pﺩﺭ .P
ﻧﻤﺎﻳﺶ ﺩﻳﺪ ﺍﺩﺭﺍﻛﻲ ﺑﻪ ﻛﻤﻚ DSﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ ) :ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ(
ﺍﺯ ﺩﻳـﺪ ﻃﺮﺍﺣـﻲ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺑﺼﻮﺭﺕ ﻳﻚ ﺩﺭﺧﺖ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺭﻳﺸﻪ ﺁﻥ ﺣﺎﻭﻱ ﺍﻃﻼﻋﺎﺕ ﺩﺭ ﻣﻮﺭﺩ ﻗﻄﻌﺎﺕ ﻭ
ﻭﺍﺑﺴﺘﻪ ﻳﺎ ﻓﺮﺯﻧﺪ ﺁﻥ ﺭﻳﺸﻪ ﺣﺎﻭﻱ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺭ ﻣﻮﺭﺩ ﺗﻬﻴﻪ ﻛﻨﻨﺪﮔﺎﻥ .ﺩﺭ ﺳﺎﺧﺘﺎﺭ ﺩﺍﺩﻩ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ ﺗﻌﺪﺍﺩﻱ ﺩﺭﺧﺘﻮﺍﺭﻩ ﻭﺟﻮﺩ
ﺩﺍﺭﺩ ﻛﻪ ﻃﺮﺍﺡ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺭﺍ ﺑﻪ DBMSﺍﻱ ﻛﻪ ﺁﻥ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ ﺧﻮﺍﻫﺪ ﺩﺍﺩ.
ﻧﻤﻮﻧﻪ ﺳﺎﺯﻱ ﺍﺯ ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ ﺑﺼﻮﺭﺕ ﻏﻴﺮ ﺻﻮﺭﻱ:
– ١ﻧﺎﻡ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ PSﺍﺳﺖ
– ٢ﺭﻳﺸﻪ ﺭﻛﻮﺭﺩ ﻧﻮﻉ Pﺍﺳﺖ ﻭ ﻓﻴﻠﺪﻫﺎﻱ P# ) Pﻛﺎﺭﺍﻛﺘﺮ Pname ، ١ .ﻛﺎﺭﺍﻛﺘﺮ (… ٢ .
ﻭ ﺷﻨﺎﺳﻪ ﺭﻳﺸﻪ P#ﺍﺳﺖ.
– ٣ﻭﺍﺑﺴﺘﻪ ﻳﺎ ﻓﺮﺯﻧﺪ ﺭﻛﻮﺭﺩ ﻧﻮﻉ Sﻣﻲ ﺑﺎﺷﺪ.
ﻓﻴﻠﺪﻫﺎﻱ S# ) Sﻭ ……… ( Qtyﺍﺳﺖ .ﻭ ﺷﻨﺎﺳﻪ S# Sﻣﻲ ﺑﺎﺷﺪ.
ﻣﺜﺎﻝ (٢ﭘﺎﻳﮕﺎﻩ ﺭﺍﺑﻄﻪ ﺍﻱ:
ﻻ ﺑﺮﺍﻱ ﻫﺮ ﻣﻮﺟﻮﺩﻳﺖ ﻳﻚ ﺟﺪﻭﻝ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﺮﺍﻱ ﻫﺮ ﺻﻔﺖ
ﺩﺭ ﺍﻳﻦ ﺳﺎﺧﺘﺎﺭ ﺑﺮﺍﻱ ﻃﺮﺍﺣﻲ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﻌﻤﻮ ﹰ
ﺧﺎﺻﻪ ﻳﻚ ﺳﺘﻮﻥ ﻭ ﻫﺮ ﺳﻄﺮ ﻛﻪ ﺑﻌﺪﹰﺍ ﭘﺮ ﻣﻲ ﺷﻮﺩ ﻳﻚ ﻧﻤﻮﻧﻪ ﻣﻮﺟﻮﺩﻳﺖ ﻣﻲ ﺑﺎﺷﺪ.
S P
S# Sname Status City P# Pname Color Weight
ﺑـﺮﺍﻱ ﻧﻤـﺎﻳﺶ ﺍﺭﺗـﺒﺎﻃﺎﺕ ﺑـﻴﻦ ﺩﻭ ﻳـﺎ ﺑـﻴﺶ ﺍﺯ ﺩﻭ ﻣﻮﺟـﻮﺩﻳﺖ ﻳـﻚ ﺭﺍﻩ ﻭ ﺍﻟﺒـﺘﻪ ﺭﺍﻳﺞ ﺗﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺟﺪﻭﻟﻲ ﺩﻳﮕﺮ •
ﻃﺮﺍﺣـﻲ ﻣـﻲ ﺷـﻮﺩ ﻭ ﺍﺭﺗـﺒﺎﻃﺎﺕ ﺑـﻪ ﻛﻤـﻚ ﺁﻥ ﻧﻤـﺎﻳﺶ ﺩﺍﺩﻩ ﻣـﻲ ﺷـﻮﺩ .ﺩﺭ ﺍﻳـﻦ ﺟـﺪﻭﻝ ﻧﺸـﺎﻥ ﺩﻫـﻨﺪﻩ ﺍﺭﺗـﺒﺎﻁ ﺑﻴﻦ ﺩﻭ
ﻣﻮﺟﻮﺩﻳﺖ ﺷﻨﺎﺳﻪ ﻣﻮﺟﻮﺩﻳﺘﻬﺎﻱ ﻣﺮﺗﺒﻂ ﺁﻭﺭﺩﻩ ﻣﻲ ﺷﻮﺩ.
P1ﺗﻮﺳﻂ S1ﺗﻬﻴﻪ ﻣﻲ ﺷﻮﺩ •
P1ﺭﺍ ﺑﻪ ﺗﻌﺪﺍﺩ ١٠٠ﺗﻬﻴﻪ ﻣﻲ ﻛﻨﺪ. S1 •
SP
S# P# Qty
S1 P1 ١٠٠
S2 P2 ٥٠
S3 P3 ٥٥
ﻫﺮ ﺳﻄﺮ ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﻛﻪ ﻧﻤﺎﻳﺸﮕﺮ ﻳﻚ ﻣﻮﺟﻮﺩﻳﺖ ﺍﺳﺖ ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﻧﻤﺎﻳﺸﮕﺮ ﻳﻚ ﻧﻤﻮﻧﻪ ﺍﺭﺗﺒﺎﻁ ﻧﻴﺰ ﻣﻲ ﺑﺎﺷﺪ. •
ﺷﻤﺎﻱ ﺳﺎﺩﻩ ﭘﺎﻳﮕﺎﻩ ﺟﺪﻭﻟﻲ:
Pﺍﺳﺖ ( ٢ﺍﺳﻢ ﺟﺪﻭﻝ ( ١ﺍﺳﻢ ﺟﺪﻭﻝ Sﺍﺳﺖ
P #ﻛﺎﺭﺍﻛﺘﺮ ﺳﺘﻮﻧﻬﺎﻳﺶ ﺳﺘﻮﻧﻬﺎﻳﺶ S #ﻛﺎﺭﺍﻛﺘﺮ
Pnameﻛﺎﺭﺍﻛﺘﺮ Snameﻛﺎﺭﺍﻛﺘﺮ
Weightﻋﺪﺩ ﺍﻋﺸﺎﺭﻱ Statusﻋﺪﺩ ﺻﺤﻴﺢ
Colorﻛﺎﺭﺍﻛﺘﺮ Cityﻛﺎﺭﺍﻛﺘﺮ
ﻣﺜﺎﻝ:
Myv1 Myv3
S# STA Sname City
S1 ١٠ S2 ﻗﺰﻭﻳﻦ
S2 ١٥
ﻫـﺮ ﻳـﻚ ﺍﺯ ﺍﻳـﻦ ﺳـﻪ ﺩﺳـﺘﻪ ﺍﺣﻜﺎﻡ ﺑﺎﻳﺪ ﺑﺮﺍﻱ ﺳﻄﻮﺡ ﺳﻪ ﮔﺎﻧﻪ ﭘﺎﻳﮕﺎﻩ ﻧﻴﺰ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ DSL .ﻫﺎ ﺭﺍ ﺍﺯ ﻧﻈﺮ ﻧﻴﺎﺯ ﻳﺎ ﻋﺪﻡ
ﻧﻴﺎﺯ ﺑﻪ ﺯﺑﺎﻥ ﻣﻴﺰﺑﺎﻥ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﻣﺴﺘﻘﻞ ﻭ ﺍﺩﻏﺎﻡ ﺷﺪﻧﻲ ﺗﻘﺴﻴﻢ ﻣﻲ ﻛﻨﻨﺪ.
ﺯﺑـﺎﻥ ﻓﺮﻋـﻲ ﺩﺍﺩﻩ ﺍﻱ ﻣﺴـﺘﻘﻞ ،ﺯﺑﺎﻧـﻲ ﺍﺳـﺖ ﻛﻪ ﺑﻪ ﺯﺑﺎﻥ ﻣﻴﺰﺑﺎﻥ ﻧﻴﺎﺯ ﻧﺪﺍﺭﺩ ﻭ ﺯﺑﺎﻥ ﻓﺮﻋﻲ ﺩﺍﺩﻩ ﺍﻱ ﺍﺩﻏﺎﻡ ﺷﺪﻩ ،ﺯﺑﺎﻧﻲ ﺍﺳﺖ ﻛﻪ
ﻫﻤـﺮﺍﻩ ﺯﺑﺎﻥ HLﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ .ﺑﻪ ﺑﻴﺎﻥ ﺩﻳﮕﺮ ﺍﺣﻜﺎﻡ ﺁﻥ ﺑﺎﻳﺪ ﺑﻪ ﻧﺤﻮﻱ ﺩﺭ ﺍﺣﻜﺎﻡ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ ﺍﺩﻏﺎﻡ ﺷﻮﻧﺪ .ﻣﻜﺎﻧﻴﺰﻡ
ﺍﺩﻏﺎﻡ ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻣﺘﻔﺎﻭﺕ ﻭ ﺑﻄﻮﺭ ﻛﻠﻲ ﺑﻪ ﺩﻭ ﺻﻮﺭﺕ ﺍﺩﻏﺎﻡ ﺻﺮﻳﺢ ﻭ ﺍﺩﻏﺎﻡ ﺿﻤﻨﻲ ﻭﺟﻮﺩ ﺩﺍﺭﺩ.
ﺩﺭ ﺍﺩﻏـﺎﻡ ﺿـﻤﻨﻲ ،ﺍﺣﻜـﺎﻡ ﺯﺑـﺎﻥ ﺩﺍﺩﻩ ﺍﻱ ﺑﻄـﻮﺭ ﺻـﺮﻳﺢ ﺩﺭ ﻣـﺘﻦ ﺯﺑـﺎﻥ ﻣﻴـﺰﺑﺎﻥ ﺟـﺎﻱ ﺩﺍﺩﻩ ﻧﻤـﻲ ﺷـﻮﻧﺪ ﺑﻠﻜﻪ ﺍﺯ ﻃﺮﻳﻖ ﺣﻜﻢ
ﻓﺮﺍﺧﻮﺍﻧﻲ ﺑﻜﺎﺭ ﺑﺮﺩﻩ ﻣﻲ ﺷﻮﻧﺪ.
ﺑﺮﺧﻲ ﻧﻜﺎﺕ ﻣﻬﻢ ﺩﺭ ﻣﻮﺭﺩ DSL
ﻫﺮ DBMSﺩﺍﺭﺍﻱ ﻳﻚ DSLﺍﺳﺖ. •
ﻫـﺮ DSLﺩﺭ ﻛـﺎﺩﺭ ﻣﻔﺎﻫـﻴﻢ ﻳـﻚ ﻣـﺪﻝ ﺩﺍﺩﻩ ﺍﻱ ﻣﺸـﺨﺺ ﻃﺮﺍﺣـﻲ ﻣـﻲ ﺷﻮﺩ ﻭ ﻋﻤﻠﮕﺮﻫﺎﻱ ﺁﻥ ﻧﻴﺰ ﺩﺭ ﻛﺎﺩﺭ ﻫﻤﺎﻥ •
ﻣﻔﺎﻫﻴﻢ ﻋﻤﻞ ﻣﻲ ﻛﻨﻨﺪ.
ﻼ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻋﻤﻞ ﺩﺭﺝ ﻛﻪ ﻣﻨﻄﻘﹰﺎ ﻳﻚ ﺣﻜﻢ ﻭﺍﺣﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ
ﺍﺻـﻞ ﻭﺣـﺪﺕ ﺍﺣﻜﺎﻡ ﺩﺭ ﺁﻥ ﺭﻋﺎﻳﺖ ﺷﺪﻩ ﺑﺎﺷﺪ .ﻣﺜ ﹰ •
ﻭ ﺗﺮﺟﻴﺤﹰﺎ ﻫﻤﺎﻥ ﺣﻜﻢ ﻭﺍﺣﺪ ﺩﺭ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﻭ ﻫﻢ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﻋﻤﻞ ﻧﻤﺎﻳﺪ.
–٦-٣-٧ﻧﮕﺎﺷﺖMapping :
ﻋﻼﻭﻩ ﺑﺮ ﺳﻪ ﺳﻄﺢ ﺍﺯ ﻣﻌﻤﺎﺭﻱ ،ﻣﻌﻤﺎﺭﻱ ﭘﺎﻳﮕﺎﻩ ﺍﺯ ﭼﻨﺪ ﻧﮕﺎﺷﺖ )ﺗﺒﺪﻳﻞ( ﻣﺨﺘﻠﻒ ﺗﺸﻜﻴﻞ ﻣﻲ ﺷﻮﺩ.
-١–٦-٣-٧ﻧﮕﺎﺷﺖ ﻣﻔﻬﻮﻣﻲ /ﺩﺍﺧﻠﻲ:
ﺗﻨﺎﻇـﺮ ﺑـﻴﻦ ﺩﻳـﺪ ﺍﺩﺭﺍﻛـﻲ ﻭ ﺑﺎﻧـﻚ ﺍﻃﻼﻋﺎﺗـﻲ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺭﺍ ﺗﻌﺮﻳﻒ ﻭ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﭼﮕﻮﻧﻪ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺍﺩﺭﺍﻛﻲ ﻭ
ﻓﻴﻠﺪﻫﺎ ﺩﺭ ﺳﻄﺢ ﺩﺍﺧﻠﻲ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﻮﻧﺪ.
-٢–٦-٣-٧ﻧﮕﺎﺷﺖ ﺧﺎﺭﺟﻲ /ﺍﺩﺭﺍﻛﻲ:
ﺗﻨﺎﻇـﺮ ﺑـﻴﻦ ﺩﻳـﺪ ﺧﺎﺭﺟـﻲ ﺧـﺎﺹ ﻭ ﺩﻳـﺪ ﻣﻔﻬﻮﻣـﻲ ﺭﺍ ﺗﻌـﺮﻳﻒ ﻣـﻲ ﻛﻨﺪ .ﺩﺭ ﻭﺍﻗﻊ ﻣﻜﺎﻧﻴﺴﻤﻲ ﺍﺳﺖ ﺑﺮﺍﻱ ﺑﺮﻗﺮﺍﺭﻱ ﺗﻨﺎﻇﺮ ﺑﻴﻦ
ﺩﻳﺪﻫﺎﻱ ﺧﺎﺭﺟﻲ ﻣﺨﺘﻠﻒ ﻭ ﺩﻳﺪ ﻭﺍﺣﺪ ﺍﺩﺭﺍﻛﻲ DBMS .ﻫﺎﻱ ﻣﺘﻌﺎﺭﻑ ﺣﺪﺍﻗﻞ ﺩﻭ ﻣﺤﻮﺭ ﺗﺒﺪﻳﻞ ﺩﺍﺭﻧﺪ :ﺗﺒﺪﻳﻞ ﺩﺍﺩﻩ ﻭ ﺗﺒﺪﻳﻞ
ﺍﺣﻜﺎﻡ.
ﺗـﺒﺪﻳﻞ ﺩﺍﺩﻩ ﻫﺎ ﻳﻌﻨﻲ ﺗﺒﺪﻳﻞ ﺩﺍﺩﻩ ﻫﺎﻱ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺩﺭ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎﻱ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﻭ •
ﺑﺎﻻﺧﺮﻩ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎﻱ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺩﺭ ﺳﻄﺢ ﺩﺍﺧﻠﻲ.
ﺗـﺒﺪﻳﻞ ﺍﺣﻜﺎﻡ ﻳﻌﻨﻲ ﺗﺒﺪﻳﻞ ﺣﻜﻢ ﻋﻤﻞ ﻛﻨﻨﺪﻩ ﺩﺭ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﺑﻪ ﺣﻜﻢ ﻋﻤﻞ ﻛﻨﻨﺪﻩ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﻭ ﺩﺭ ﻧﻬﺎﻳﺖ •
ﺑﻪ ﺣﻜﻢ ﻳﺎ ﺍﺣﻜﺎﻣﻲ ﺩﺭ ﺳﻄﺢ ﺩﺍﺧﻠﻲ .ﺍﻳﻦ ﺗﺒﺪﻳﻞ ﺍﺯ ﺟﻤﻠﻪ ﻭﻇﺎﻳﻒ ﻣﻬﻢ ﻫﺮ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺖ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠٦ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
– ٤ﺑﺮﺭﺳﻲ ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﻧﺤﻮﻩ ﻧﮕﺎﺷﺖ ﻋﻤﻠﻴﺎﺕ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﺑﻪ ﺍﺩﺭﺍﻛﻲ
– ٥ﺍﻧﺠﺎﻡ ﺗﺒﺪﻳﻼﺕ ﻻﺯﻡ
– ٦ﺑﺮﺭﺳﻲ ﺷﻤﺎﻱ ﺩﺍﺧﻠﻲ ﻭ ﺗﺒﺪﻳﻞ ﺍﺣﻜﺎﻡ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﺑﻪ ﺳﻄﺢ ﺩﺍﺧﻠﻲ
– ٧ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﻓﺎﻳﻠﻬﺎﻱ ﻓﻴﺰﻳﻜﻲ ﻭ ﺍﺟﺮﺍﻱ ﺩﺭﺧﻮﺍﺳﺖ ﻛﺎﺭﺑﺮ
ﺍﺻﻄﻼﺡ ﺑﻪ ﻋﻴﻨﻴﺖ ﺩﺭﺁﻭﺭﺩﻥ )(materialized •
ﺍﮔـﺮ ﺩﺭﺧﻮﺍﺳﺖ ﻛﺎﺭﺑﺮ ﺑﺎﺯﻳﺎﺑﻲ ﺑﺎﺷﺪ ﺍﺻﻄﻼﺣﹰﺎ ﮔﻮﻳﻨﺪ DBMSﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺑﻪ ﻋﻴﻨﻴﺖ ﺩﺭ ﻣﻲ ﺁﻭﺭﺩ ﻛﻪ ﺑﻪ ﺩﻭ ﻓﺮﻡ
ﻭﺟﻮﺩ ﺩﺍﺭﺩ:
– ١ﺑـﻪ ﻋﻴﻨﻴﺖ ﺩﺭ ﺁﻭﺭﺩﻥ ﻣﺴﺘﻘﻴﻢ :ﻣﻮﻗﻌﻴﺘﻲ ﻛﻪ ﺩﺍﺩﻩ ﻣﻮﺭﺩ ﻧﻈﺮ ﻛﺎﺭﺑﺮ ﺁﻧﭽﻪ ﺩﺭ ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ ﺧﻮﺍﺳﺘﻪ ﻣﺘﻨﺎﻇﺮ ﺯﻳﺮﻳﻦ ﺩﺍﺷﺘﻪ
ﺑﺎﺷﺪ ﻳﻌﻨﻲ ﻣﺸﺨﺼﹰﺎ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﻣﺘﻨﺎﻇﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ
ﺭﻛﻮﺭﺩ ﺍﺩﺭﺍﻛﻲ
A B C D E F G H K
– ٢ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ:
ﻣﻮﻗﻌﻴﺘﻲ ﻛﻪ ﺩﺍﺩﻩ ﻣﻮﺭﺩ ﻧﻈﺮﻛﺎﺭﺑﺮ ﻓﻴﻠﺪ ﻳﺎ ﻓﻴﻠﺪﻫﺎﻱ ﻣﺘﻨﺎﻇﺮ ﺯﻳﺮﻳﻦ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺑﻠﻜﻪ ﺣﺎﺻﻞ ﭘﺮﺩﺍﺯﺵ ﺑﺎﺷﺪ
ﻣﺜﺎﻝ :ﻓﻴﻠﺪ ﻣﻴﺎﻧﮕﻴﻦ ﻣﻘﺎﺩﻳﺮ ﻳﻚ ﻓﻴﻠﺪ )ﻓﻴﻠﺪ ﻫﺎﻱ ﻣﺠﺎﺯﻱ(
–٨-٣-٧ﻣﺪﻳﺮ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ : DBA
ﻻ ﺩﺭ ﭘﺮﻭﮊﻩ ﻫﺎﻱ
ﻓـﺮﺩﻱ ﺍﺳـﺖ ﺑـﺎ ﺗﺨﺼـﺺ ﺑـﺎﻻ ﺩﺭ ﺗﻜﻨﻮﻟﻮﮊﻱ ﺑﺎﻧﻜﻬﺎﻱ ﺍﻃﻼﻋﺎﺗﻲ ﻭ ﺩﺍﻧﺶ ﻭ ﻓﻦ ﻛﺎﻣﭙﻴﻮﺗﺮ .ﺍﻳﻦ ﻓﺮﺩ ﻣﻌﻤﻮ ﹰ
ﺑـﺰﺭﮒ ﺗﻴﻤـﻲ ﺍﺯ ﺍﻓـﺮﺍﺩ ﻣﺘﺨﺼـﺺ ﺩﺭ ﺍﺧﺘـﻴﺎﺭ ﺩﺍﺭﺩ ﻭ ﻭﻇـﻴﻔﻪ ﻛﻠﻲ ﺗﻴﻢ ﻃﺮﺍﺣﻲ ،ﺍﻳﺠﺎﺩ ،ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ،ﻧﮕﻬﺪﺍﺭﻱ ﻭ ﮔﺴﺘﺮﺵ ﻭ
ﺍﺩﺍﺭﻩ ﺑﺎﻧـﻚ ﺑـﺮﺍﻱ ﻳـﻚ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﺍﺳﺖ .ﺍﻣﺮﻭﺯ ﺑﻪ ﺳﺒﺐ ﺍﻫﻤﻴﺖ ﺑﺴﻴﺎﺭ ﺑﺎﻻﻱ ﺩﺍﺩﻩ ﺩﺭ ﺳﺎﺯﻣﺎﻧﻬﺎ ،ﺩﺍﺩﻩ ﻫﺎﻱ ﻳﻚ ﺳﺎﺯﻣﺎﻥ
ﻧﻴﺎﺯ ﺑﻪ ﺍﺩﺍﺭﻩ ﻛﻨﻨﺪﻩ ﺩﺍﺭﻧﺪ ﻳﻌﻨﻲ ﻓﺮﺩﻱ ﺑﺎ ﺳﻤﺖ ﺍﺩﺍﺭﻩ ﻛﻨﻨﺪﻩ ﺩﺍﺩﻩ ﻫﺎ ﻳﺎ ﺑﻪ ﺍﺧﺘﺼﺎﺭ ) . (DAﺍﻳﻦ ﻓﺮﺩ ﻛﻪ ﻟﺰﻭﻣﹰﺎ ﻧﺒﺎﻳﺪ ﻣﺘﺨﺼﺺ
ﺩﺭ ﻛﺎﻣﭙﻴﻮﺗـﺮ ﻭ ﻳﺎ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎﺷﺪ ﻣﺪﻳﺮﻳﺖ ﻛﻞ ﺩﺍﺩﻩ ﻫﺎﻱ ﺳﺎﺯﻣﺎﻥ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﺩ ﻭ ﺑﺎ ﻫﻤﺎﻫﻨﮕﻲ ﺑﺎ ﻣﺪﻳﺮﻳﺖ ﺳﺎﺯﻣﺎﻥ،
ﺧﻂ ﻣﺸﻲ ﻫﺎ ﻭ ﺗﺼﻤﻴﻤﺎﺗﻲ ﺩﺭ ﻣﻮﺭﺩ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﺆﺳﺴﻪ ﺧﻮﺩ ﺭﺍ ﺍﺗﺨﺎﺫ ﻣﻲ ﻛﻨﺪ.
ﺩﺭ ﻣﺪﻳﺮﻳﺖ ﺳﺎﺯﻣﺎﻥ ﻭﻗﺘﻲ ﺍﺯ ﺳﺮﻣﺎﻳﻪ ﺳﺎﺯﻣﺎﻥ ﺑﺤﺚ ﻣﻲ ﻛﻨﻨﺪ ﻣﻲ ﮔﻮﻳﻨﺪ ﺍﺯ ﭘﻨﺞ ﺑﺨﺶ ﺗﺸﻜﻴﻞ ﻣﻲ ﺷﻮﺩ.
ﻧﺮﻡ ﺍﻓﺰﺍﺭ ،ﺳﺨﺖ ﺍﻓﺰﺍﺭ ،ﻧﻴﺮﻭﻱ ﻣﺘﺨﺼﺺ ،ﺑﻮﺩﺟﻪ ﻭ ﺩﺍﺩﻩ.
ﻭ ﺍﻣـﺎ ﻭﻇﺎﻳﻒ ﺍﺩﺍﺭﻩ ﻛﻨﻨﺪﻩ ﺑﺎﻧﻚ ﺩﺭ ﻃﻴﻔﻲ ﺍﺯ ﻭﻇﺎﻳﻒ ﻣﺪﻳﺮﻳﺘﻲ ﺗﺎ ﻭﻇﺎﻳﻒ ﻓﻨﻲ ﻭ ﻋﻠﻤﻲ ﺟﺎﻱ ﺩﺍﺭﺩ .ﺩﺭ ﻭﺍﻗﻊ ﻣﻲ ﺗﻮﺍﻥ DBA
ﺭﺍ ﺑﻌـﻨﻮﺍﻥ ﺗﻴﻤـﻲ ﺗﺨﺼﺼـﻲ ﺑـﻪ ﺳﺮﭘﺮﺳـﺘﻲ ) DBAﻣﺪﻳﺮ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ( ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ ﻛﻪ ﺑﺎ ﻣﺘﺨﺼﺺ ﻫﺎﻳﻲ ﻧﻈﻴﺮ ، DA
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠٨ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﺴـﺌﻮﻝ ﻣﺴـﺘﻘﻴﻢ ﺗـﻴﻢ ﻫـﺎﻱ ﺑـﺮﻧﺎﻣﻪ ﺳـﺎﺯﻱ ،ﻣﺪﻳـﺮ ﻛﻨﺘـﺮﻝ ﻛﻨـﻨﺪﻩ ﻋﻤﻠﻜـﺮﺩ ﺧﻮﺩ ﺳﻴﺴﺘﻢ ﻭ … ﺩﺭ ﺧﺼﻮﺹ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
ﻫﻤﻜﺎﺭﻱ ﺩﺍﺭﻧﺪ.
ﺑﻄﻮﺭ ﻛﻠﻲ ﻣﻲ ﺗﻮﺍﻥ ﻭﻇﺎﻳﻒ DBAﺭﺍ ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﺑﻴﺎﻥ ﻧﻤﻮﺩ:
– ١ﻫﻤﻜﺎﺭﻱ ﺑﺎ DAﺩﺭ ﺗﻔﻬﻴﻢ ﺍﻫﻤﻴﺖ ﻭ ﻧﻘﺶ ﺩﺍﺩﻩ ﺳﺎﺯﻣﺎﻥ.
– ٢ﻫﻤﻜﺎﺭﻱ ﺩﺭ ﻣﻌﺮﻓﻲ ﺗﻜﻨﻮﻟﻮﮊﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻭ ﺟﻨﺒﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺭﺟﺤﻴﺖ ﺁﻥ ﺑﺮ ﺗﻜﻨﻮﻟﻮﮊﻱ ﻏﻴﺮ ﺑﺎﻧﻜﻲ
– ٣ﺗﻼﺵ ﺩﺭ ﻣﺠﺎﺏ ﻛﺮﺩﻥ ﺳﺎﺯﻣﺎﻥ ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﻜﻨﻮﻟﻮﮊﻱ ﻛﺎﺭﺍ ﺗﺮ
– ٤ﻣﻄﺎﻟﻌﻪ ﺩﻗﻴﻖ ﻣﺤﻴﻂ ﻋﻤﻠﻴﺎﺗﻲ ﻭ ﺗﺸﺨﻴﺺ ﻧﻴﺎﺯﻫﺎﻱ ﻛﺎﺭﺑﺮﺍﻥ ﻣﺨﺘﻠﻒ
– ٥ﺑﺎﺯﺷﻨﺎﺳﻲ ﻣﻮﺟﻮﺩﻳﺖ ﻫﺎ ﻭ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺑﻴﻦ ﺁﻧﻬﺎ ﻭ ﺗﻌﻴﻴﻦ ﺻﻔﺎﺕ ﺧﺎﺻﻪ ﻫﺮ ﻳﻚ ﺍﺯ ﺍﻧﻮﺍﻉ ﻣﻮﺟﻮﺩﻳﺘﻬﺎ
– ٦ﺭﺳﻢ ﻧﻤﻮﺩﺍﺭ E-R
– ٧ﺗﺨﻤﻴﻦ ﺣﺠﻢ ﺍﻃﻼﻋﺎﺕ ﺫﺧﻴﺮﻩ ﺷﺪﻧﻲ ﺩﺭ ﺑﺎﻧﻚ
– ٨ﻣﺸﺎﺭﻛﺖ ﺩﺭ ﺗﻌﻴﻴﻦ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻣﻜﺎﻧﺎﺕ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﻭ ﻣﺤﻴﻂ
– ٩ﻣﺸـﺎﻭﺭﻩ ﻭ ﻣﺸـﺎﺭﻛﺖ ﺩﺭ ﺗﻌﻴـﻴﻦ ﺳﻴﺴـﺘﻢ ﻛﺎﻣﭙﻴﻮﺗـﺮﻱ ﻭ ﭘﻴﻜـﺮﺑﻨﺪﻱ ﺁﻥ ﺍﺯ ﻟﺤـﺎﻅ ﻣﻠﺰﻭﻣﺎﺕ ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ﻭ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ
ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ
– ١٠ﻃﺮﺍﺣﻲ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﺑﺎﻧﻚ ﻭ ﻧﻮﺷﺘﻦ ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ
– ١١ﺍﻳﺠﺎﺩ ﭘﺎﻳﮕﺎﻩ ﺑﺎ ﺩﺍﺩﻩ ﻫﺎﻱ ﺗﺴﺘﻲ
– ١٢ﺗﻌﺮﻳﻒ ﺩﻳﺪﻫﺎﻱ ﺧﺎﺭﺟﻲ ﻛﺎﺭﺑﺮﺍﻥ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯ
– ١٣ﻧﻈﺎﺭﺕ ﺩﺭ ﻧﻮﺷﺘﻦ ﺷﻤﺎﻱ ﺧﺎﺭﺟﻲ
– ١٤ﻧﻈﺎﺭﺕ ﺩﺭ ﺟﻤﻊ ﺍﻭﺭﻱ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﻭﺭﻭﺩ ﺩﺍﺩﻩ ﻫﺎ
– ١٥ﺗﺴﺖ ﭘﺎﻳﮕﺎﻩ ﺑﺎ ﺩﺍﺩﻩ ﻫﺎﻱ ﻭﺍﻗﻌﻲ )ﺁﻏﺎﺯ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﭘﺎﻳﮕﺎﻩ(
– ١٦ﺗﻌﻴﻴﻦ ﺿﻮﺍﺑﻂ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺑﺎﻧﻚ ﺑﺮﺍﻱ ﻛﺎﺭﺑﺮﺍﻥ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻴﺎﺯﻫﺎﻱ ﺍﻃﻼﻋﺎﺗﻲ ﺁﻧﻬﺎ
– ١٧ﻧﻈﺎﺭﺕ ﻭ ﺩﺧﺎﻟﺖ ﺩﺭ ﺗﻬﻴﻪ ﻣﺴﺘﻨﺪﺍﺕ ﺳﻴﺴﺘﻢ
– ١٨ﺗﺄﻣﻴﻦ ﺟﺎﻣﻌﻴﺖ ﺑﺎﻧﻚ ﺍﺯ ﻃﺮﻳﻖ ﺣﻔﻆ ﻛﻴﻔﻴﺖ ،ﻛﻨﺘﺮﻝ ﺩﺳﺘﻴﺎﺑﻲ ﻭ ﺣﻔﺎﻇﺖ ﺍﺯ ﻣﺤﺮﻣﺎﻧﮕﻲ ﻣﺤﺘﻮﺍﻱ ﺑﺎﻧﻚ
– ١٩ﻛﻤﻚ ﺑﻪ ﻛﺎﺭﺑﺮﺍﻥ ﻭ ﺁﻣﻮﺯﺵ ﺁﻧﺎﻥ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺭﻳﺰﻱ ﺩﺭ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﻛﺎﺭ ﺑﺎ ﺁﻧﻬﺎ
– ٢٠ﺣﻔﻆ ﺍﻳﻤﻨﻲ ﺑﺎﻧﻚ
– ٢١ﭘﻴﺶ ﺑﻴﻨﻲ ﺭﻭﺷﻬﺎﻱ ﺗﺮﻣﻴﻢ ﻭ ﺍﺳﺘﺮﺍﺗﮋﻱ ﻻﺯﻡ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ
– ٢٢ﻣﻌﺎﺻﺮ ﻧﮕﻪ ﺩﺍﺷﺘﻦ ﭘﺎﻳﮕﺎﻩ ﺑﺎ ﭘﻴﺸﺮﻓﺘﻬﺎﻱ ﺗﻜﻨﻮﻟﻮﮊﻳﻚ
– ٢٣ﺗﻼﺵ ﺩﺭ ﺟﻬﺖ ﺍﺭﺗﻘﺎﺀ ﺳﻄﺢ ﺗﺨﺼﺼﻲ ﺍﻓﺮﺍﺩ ﻭ ﻛﺎﺭﺑﺮﺍﻥ
– ٢٤ﻧﻈﺎﺭﺕ ﺑﻪ ﻛﺎﺭﺍﻳﻲ ﻭ ﭘﺎﺳﺦ ﺑﻪ ﺗﻐﻴﻴﺮ ﻧﻴﺎﺭﻫﺎ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١٠٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺳﻴﺴـﺘﻢ ﻣﺪﻳـﺮﻳﺖ ﺑﺎﻧـﻚ ﺍﻃﻼﻋﺎﺗـﻲ ﺑـﺎ ﻣﻜﺎﻧﻴﺴﻢ ﻫﺎﻳﻲ ﺧﺴﺎﺭﺕ ﻧﺎﺷﻲ ﺍﺯ ﺑﺮﻭﺯ ﻧﻘﺺ ﻫﺎ ﻭ ﺍﺷﺘﺒﺎﻫﺎﺕ ﺭﺍ ﺟﺒﺮﺍﻥ ﻛﺮﺩﻩ ﻭ ﺩﺍﺩﻩ -
ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺭﺍ ﺗﺮﻣﻴﻢ ﻣﻲ ﻛﻨﺪ ﺑﻨﺤﻮﻱ ﻛﻪ ﻣﺤﺘﻮﺍﻱ ﺑﺎﻧﻚ ﻭﺿﻌﻴﺖ ﺻﺤﻴﺢ ﺧﻮﺩ ﺭﺍ ﺑﺎﺯ ﻳﺎﺑﺪ.
– ٨ﺗﺄﻣﻴﻦ ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﻫﺎ
ﻫﻢ ﺩﻟﻴﻞ ﺍﻳﻦ ﺗﻜﻨﻮﻟﻮﮊﻱ ﻭ ﻫﻢ ﻫﺪﻑ ﺁﻥ ﻣﻲ ﺑﺎﺷﺪ
ﺗﻌﺮﻳﻒ ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ:
ﻣﺼﻮﻧﻴﺖ ﺩﻳﺪﻫﺎﻱ ﻛﺎﺭﺑﺮﺍﻥ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺩﺭ ﻗﺒﺎﻝ ﺗﻐﻴﻴﺮﺍﺗﻲ ﻛﻪ ﺩﺭ ﺳﻄﻮﺡ ﻣﻌﻤﺎﺭﻱ ﭘﺎﻳﮕﺎﻩ ﭘﺪﻳﺪ ﻣﻲ ﺁﻳﻨﺪ.
ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ ﺩﻭ ﻭﺟﻪ ﺩﺍﺭﺩ :ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ ﻣﻨﻄﻘﻲ ﻭ ﻓﻴﺰﻳﻜﻲ
ﺍﺳـﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ ﻓﻴﺰﻳﻜـﻲ ﻳﻌﻨـﻲ ﻣﺼـﻮﻧﻴﺖ ﺩﻳﺪﻫﺎﻱ ﻛﺎﺭﺑﺮﺍﻥ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺩﺭ ﻗﺒﺎﻝ ﺗﻐﻴﻴﺮﺍﺗﻲ ﻛﻪ ﺩﺭ ﺳﻄﺢ ﺩﺍﺧﻠﻲ
ﭘﺎﻳﮕـﺎﻩ ﭘﺪﻳـﺪ ﻣﻲ ﺁﻳﻨﺪ ،ﺩﺭ DBMSﻫﺎﻱ ﻭﺍﻗﻌﻲ ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ ﻓﻴﺰﻳﻜﻲ ﺗﻘﺮﻳﺒﹰﺎ ﺻﺪ ﺩﺭ ﺻﺪ ﺍﺳﺖ ﺯﻳﺮﺍ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻌﻤﺎﺭﻱ
ﭼﻨﺪ ﺳﻄﺤﻲ ﭘﺎﻳﮕﺎﻩ ﻛﺎﺭﺑﺮﺍﻥ ﺩﺭ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﺩﺭ ﻳﻚ ﻣﺤﻴﻂ ﺍﻧﺘﺰﺍﻋﻲ ﻭ ﻣﻨﻔﻚ ﺍﺯ ﻓﺎﻳﻠﻴﻨﮓ ﻋﻤﻞ ﻣﻲ ﻛﻨﻨﺪ.
ﺍﺳﺘﻘﻼﻝ ﺩﺍﺩﻩ ﺍﻱ ﻣﻨﻄﻘﻲ:
ﻳﻌﻨـﻲ ﻣﺼـﻮﻧﻴﺖ ﺑـﺮﻧﺎﻣﻪ ﺍﻱ ﻛﺎﺭﺑـﺮﺩﻱ ﻭ ﺩﻳﺪ ﻛﺎﺭﺑﺮﺍﻥ ﺩﺭ ﻗﺒﺎﻝ ﺗﻐﻴﻴﺮﺍﺗﻲ ﻛﻪ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ ﭘﺪﻳﺪ ﻣﻲ ﺁﻳﻨﺪ .ﺗﻐﻴﻴﺮﺍﺕ ﺳﻄﺢ
ﺍﺩﺭﺍﻛﻲ ﺍﺯ ﺩﻭ ﺟﻨﺒﻪ ﭘﺪﻳﺪ ﻣﻲ ﺁﻳﻨﺪ:
– ١ﺍﺯ ﺭﺷﺪ ﭘﺎﻳﮕﺎﻩ ﺩﺭ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ
– ٢ﺩﺭ ﺳﺎﺯﻣﺎﻧﺪﻫﻲ ﻣﺠﺪﺩ ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ
ﺩﻻﻳﻞ ﺭﺷﺪ ﭘﺎﻳﮕﺎﻩ:
ﻣﻄﺮﺡ ﺷﺪﻥ ﻧﻴﺎﺯﻫﺎﻱ ﺟﺪﻳﺪ ﺑﺮﺍﻱ ﻛﺎﺭﺑﺮﺍﻥ
ﻣﻄﺮﺡ ﺷﺪﻥ ﻛﺎﺭ ﺑﺮﺍﻧﻲ ﺟﺪﻳﺪ ﺑﺎ ﻧﻴﺎﺯﻫﺎﻱ ﺍﻃﻼﻋﺎﺗﻲ ﺟﺪﻳﺪ
ﺩﻻﻳﻞ ﺳﺎﺯﻣﺎﻧﺪﻫﻲ ﻣﺠﺪﺩ:
ﺗﺄﻣﻴﻦ ﻣﺤﻴﻂ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﻛﺎﺭﺍﺗﺮ ﺑﺮﺍﻱ ﺑﺨﺸﻲ ﺍﺯ ﭘﺎﻳﮕﺎﻩ
ﺗﺄﻣﻴﻦ ﺍﻳﻤﻨﻲ ﺑﻴﺸﺘﺮ ﺑﺮﺍﻱ ﭘﺎﻳﮕﺎﻩ
ﺗﺄﻣﻴﻦ ﻛﺎﺭﺍﻳﻲ ﻋﻤﻠﻴﺎﺗﻲ ﺑﻴﺸﺘﺮ ﺑﺮﺍﻱ DBMSﺍﺯ ﻃﺮﻳﻖ ﻛﺎﻫﺶ ﺁﻧﻮﻣﺎﻟﻲ ﻫﺎ
– ٩ﺗﺴﺮﻳﻊ ﺩﺭ ﺩﺭﻳﺎﻓﺖ ﭘﺎﺳﺦ ﭘﺮﺱ ﻭ ﺟﻮﻫﺎ
– ١٠ﺗﺴﻬﻴﻞ ﺩﺭ ﺩﺭﻳﺎﻓﺖ ﮔﺰﺍﺭﺷﻬﺎﻱ ﻣﺘﻨﻮﻉ ﺁﻣﺎﺭﻱ
– ١١ﺍﻣﻜﺎﻥ ﺍﻋﻤﺎﻝ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎ
ﺑـﺎ ﻛﻨﺘـﺮﻝ ﻣﺘﻤﺮﻛـﺰ ﺭﻭﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ DBA ،ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﻃﻤﻴﻨﺎﻥ ﺩﻫﺪ ﻛﻪ ﺗﻤﺎﻡ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎﻱ ﻣﻄﻠﻮﺏ ﺩﺭ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻫﺎ
ﻣـﻮﺭﺩ ﺗـﻮﺟﻪ ﻗـﺮﺍﺭ ﮔـﺮﻓﺘﻪ ﺍﺳـﺖ .ﺍﺳـﺘﺎﻧﺪﺍﺭﺩﻫﺎﻱ ﻣﻄﻠـﻮﺏ ﻣﻤﻜﻦ ﺍﺳﺖ ﺣﺎﻭﻱ ﻳﻚ ﻳﺎ ﺗﻤﺎﻡ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺑﺎﺷﻨﺪ :ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻫﺎﻱ
ﺑﺨﺶ ،ﺗﺄﺳﻴﺴﺎﺕ ،ﺷﺮﻛﺖ ،ﺻﻨﻌﺖ ،ﻣﻠﻲ ﻭ ﺑﻴﻦ ﺍﻟﻤﻠﻠﻲ.
-١٢ﺍﺳﺘﻔﺎﺩﻩ ﺑﻬﺘﺮ ﺍﺯ ﺳﺨﺖ ﺍﻓﺰﺍﺭ
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١١ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺳـﺮﻭﻳﺲ ﮔﻴـﺮﻧﺪﻩ ﻫـﺎ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﻣﺨﺘﻠﻔﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮ ﺭﻭﻱ DBMSﻗﺮﺍﺭ ﺩﺍﺭﻧﺪ .ﺍﺯ ﻗﺒﻴﻞ :ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ
ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﻛﺎﺭﺑﺮﺍﻥ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺗﻌﺒﻴﻪ ﺷﺪﻩ ﺩﺭ ﺳﻴﺴﺘﻢ.
ﺷﻜﻞ ﺳﺎﺩﻩ ﺷﺪﻩ ﺍﻱ ﺍﺯ ﻣﻌﻤﺎﺭﻱ ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ /ﺳﺮﻭﻳﺲ ﮔﻴﺮﻧﺪﻩ ﺭﺍ ﺩﺭ ﺯﻳﺮ ﻣﻲ ﺑﻴﻨﻴﺪ :
Server DBMS
DB
ﻣﻌﻤـﺎﺭﻱ ﺳـﺮﻭﻳﺲ ﺩﻫـﻨﺪﻩ ،ﺳـﺮﻭﻳﺲ ﮔﻴـﺮﻧﺪﻩ ﺑﺼـﻮﺭﺗﻬﺎﻱ ﭼـﻨﺪ ﺳﺮﻭﻳﺲ ﮔﻴﺮﻧﺪﻩ -ﻳﻚ ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ،ﻳﻚ ﺳﺮﻭﻳﺲ
ﮔﻴﺮﻧﺪﻩ – ﭼﻨﺪ ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ﻭ ﭼﻨﺪ ﺳﺮﻭﻳﺲ ﮔﻴﺮﻧﺪﻩ -ﭼﻨﺪ ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ﻧﻴﺰ ﻣﻄﺮﺡ ﺍﺳﺖ.
ﻣﺰﺍﻳﺎﻱ ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ ﻧﺴﺒﺖ ﺑﻪ ﻣﻌﻤﺎﺭﻱ ﻣﺘﻤﺮﻛﺰ :
ﺗﻘﺴﻴﻢ ﭘﺮﺩﺍﺯﺵ
ﻛﺎﻫﺶ ﺗﺮﺍﻓﻴﻚ ﺷﺒﻜﻪ ﺩﺭ ﻣﻌﻤﺎﺭﻱ ﺣﻮﻝ ﺷﺒﻜﻪ
ﺍﺳﺘﻘﻼﻝ ﺍﻳﺴﺘﮕﺎﻩ ﻫﺎﻱ ﻛﺎﺭﻱ
ﺍﺷﺘﺮﺍﻙ ﺩﺍﺩﻩ ﻫﺎ
Distributed -٣-٥-٧ﻣﻌﻤﺎﺭﻱ ﺗﻮﺯﻳﻊ ﺷﺪﻩ :
ﺍﻳـﻦ ﻣﻌﻤـﺎﺭﻱ ﺣﺎﺻـﻞ ﺗـﺮﻛﻴﺐ ﺩﻭ ﺗﻜـﻨﻮﻟﻮﮊﻱ ﺍﺳـﺖ :ﺗﻜـﻨﻮﻟﻮﮊﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﺗﻜﻨﻮﻟﻮﮊﻱ ﺷﺒﻜﻪ .ﺩﺭ ﻳﻚ ﻧﮕﺎﻩ ﻛﻠﻲ
ﻣﻴﺘﻮﺍﻥ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺭﺍ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﻛﻪ ﺍﺯ ﻧﻈﺮ ﻣﻨﻄﻘﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﻳﻚ ﺳﻴﺴﺘﻢ ﻣﻲ ﺑﺎﺷﻨﺪ
ﻭ ﺭﻭﻱ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻳﻚ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺷﺒﻜﻪ ﺗﻮﺯﻳﻊ ﮔﺮﺩﻳﺪﻩ ﺍﻧﺪ ،ﺩﺭ ﻧﻈﺰ ﮔﺮﻓﺖ.
ﺑﺮﺧﻲ ﻭﻳﮋﮔﻴﻬﺎﻱ ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :
ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺳﺖ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﺮﺗﺒﻂ ﻭ ﻣﺸﺘﺮﻙ
ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﺑﺨﺸﻬﺎﻱ ﺗﻘﺴﻴﻢ ﻭ ﺩﺭ ﺳﺎﻳﺖ ﻫﺎ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺍﻧﺪ.
ﺑﻌﻀﻲ ﺍﺯ ﺑﺨﺸﻬﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﭼﻨﺪ ﻧﺴﺨﻪ )ﺑﻄﻮﺭ ﺗﻜﺮﺍﺭﻱ( ﺩﺭ ﺳﺎﻳﺘﻬﺎ ﺫﺧﻴﺮﻩ ﺷﻮﻧﺪ.
ﺳﺎﻳﺘﻬﺎ ﺍﺯ ﻃﺮﻳﻖ ﻳﻚ ﺷﺒﻪ ﺑﺎ ﻫﻢ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺭﻧﺪ.
ﺩﺍﺩﻩ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺗﺤﺖ ﻛﻨﺘﺮﻝ ﻳﻚ DBMSﻣﻲ ﺑﺎﺷﻨﺪ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١٣ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻣﻬﻤﺘـﺮﻳﻦ ﺍﺻـﻞ ﺩﺭ ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎﻫﻲ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺳﻴﺴﺘﻢ ﺑﺎﻳﺪ ﭼﻨﺎﻥ ﻋﻤﻞ ﻛﻨﺪ ﻛﻪ ﺍﺯ ﻧﻈﺮ ﻛﺎﺭﺑﺮﺍﻥ ﻣﺸﺎﺑﻪ ﺑﺎ ﻳﻚ
ﭘﺎﻳﮕـﺎﻩ ﺩﺍﺩﻩ ﻣﺘﻤﺮﻛﺰ ﺑﺎﺷﺪ.ﺍﻳﻦ ﻭﻳﮋﮔﻲ ﺗﺤﺖ ﻋﻨﻮﺍﻥ ﺷﻔﺎﻓﻴﺖ ﺩﺭ ﺳﻴﺴﺘﻤﻬـﺎﻱ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﻣﻄﺮﺡ ﺍﺳﺖ ﻭ ﺗﻔﺎﻭﺕ ﺳﻴﺴﺘﻤﻬﺎﻱ
ﺗﻮﺯﻳﻌﻲ ﻭ ﺳﺮﻭﻳﺲ ﮔﻴﺮﻧﺪﻩ – ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ﻧﻴﺰ ﺩﺭ ﻫﻤﻴﻦ ﺍﺳﺖ.
-١ -٣-٥-٧ﻣﺰﺍﻳﺎﻱ ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ
ﺳﺎﺯﮔﺎﺭﻱ ﻭ ﻫﻤﺎﻫﻨﮕﻲ ﺑﺎ ﻣﺎﻫﻴﺖ ﺳﺎﺯﻣﺎﻧﻬﺎﻱ ﻧﻮﻳﻦ
ﻛﺎﺭﺍﻳﻲ ﺑﻴﺸﺘﺮ ﺩﺭ ﭘﺮﺩﺍﺯﺵ ﺩﺍﺩﻩ ﻫﺎ ﺑﻮﻳﮋﻩ ﺩﺭ ﺳﻴﺴﺘﻤﻬﺎﻱ ﺑﺴﻴﺎﺭ ﺑﺰﺭﮒ
ﺩﺳﺘﻴﺎﺑﻲ ﺑﻬﺘﺮ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ
ﻣﻌﺎﻳﺐ -٢-٣-٥-٣
ﭘﻴﭽﻴﺪﮔﻲ ﻃﺮﺍﺣﻲ ﺳﻴﺴﺘﻢ
ﭘﻴﭽﻴﺪﮔﻲ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ
ﻫﺰﻳﻨﻪ ﺑﻴﺸﺘﺮ
-٤-٥-٧ﻣﻌﻤﺎﺭﻱ ﺑﺎ ﭘﺮﺩﺍﺯﺵ ﻣﻮﺍﺯﻱParallel :
ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ ﺑﺎ ﺳﺎﺧﺖ ﻭ ﮔﺴﺘﺮﺵ ﻣﺎﺷﻴﻨﻬﺎﻱ ﻣﻮﺍﺯﻱ ،ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻫﺎﻱ ﺑﺴﻴﺎﺭ ﺑﺰﺭﮒ ﻣﻮﺭﺩ ﺗﻮﺟﻪ ﻗﺮﺍﺭ ﮔﺮﻓﺖ .ﺍﻳﻦ
ﻣﻌﻤﺎﺭﻱ ﮔﺴﺘﺮﺵ ﻳﺎﻓﺘﻪ ﻣﻌﻤﺎﺭﻱ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﺑﺮﺍﻱ ﺗﺎﻣﻴﻦ ﻛﺎﺭﺍﻳﻲ ﻭ ﺩﺳﺘﻴﺎﺑﻲ ﺳﺮﻳﻊ ﻃﺮﺍﺣﻲ ﻣﻴﺸﻮﺩ .ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﭘﺎﻳﮕﺎﻩ
ﺩﺍﺩ ﻫـﺎ ﺑـﺎ ﻣﻌﻤـﺎﺭﻱ ﭘﺮﺩﺍﺯﺵ ﻣﻮﺍﺯﻱ ،ﺑﻄﻮﺭ ﻛﻠﻲ ﭼﻨﺪﻳﻦ ﻃﺮﺡ ﺍﺯ ﺍﻳﻦ ﻣﻌﻤﺎﺭﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻣﻄﺎﻟﻌﻪ ﺁﻧﻬﺎ ﺧﺎﺭﺝ ﺍﺯ ﻣﻄﺎﻟﺐ
ﺍﻳﻦ ﺩﺭﺱ ﺍﺳﺖ:
ﻣﻌﻤﺎﺭﻱ ﺑﺎ ﺣﺎﻓﻈﻪ ﻣﺸﺘﺮﻙ
ﻣﻌﻤﺎﺭﻱ ﺑﺎ ﺩﻳﺴﻚ ﻣﺸﺘﺮﻙ
ﻣﻌﻤﺎﺭﻱ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ
-٦-٧ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎﻱ ﻫﻤﺮﺍﻩ Mobile Database System
ﺑـﺎ ﺭﺷـﺪ ﺳـﺮﻳﻊ ﺗﻜـﻨﻮﻟﻮﮊﻱ ﺍﺭﺗـﺒﺎﻃﺎﺕ ،ﻧـﻮﻉ ﺟﺪﻳـﺪﻱ ﺍﺯ ﺳﻴﺴـﺘﻢ ﭘﺎﻳﮕـﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﭘﺪﻳﺪ ﺁﻣﺪﻩ ﻭ ﺩﺭ ﺣﺎﻝ ﮔﺴﺘﺮﺵ ﺍﺳﺖ ﻛﻪ
ﺳﻴﺴـﺘﻤﻬﺎﻱ ﭘﺎﻳﮕـﺎﻩ ﺩﺍﺩﻩ ﻫﻤـﺮﺍﻩ ﻧﺎﻣـﻴﺪﻩ ﻣﻴﺸـﻮﻧﺪ .ﺩﺭ ﺍﻳـﻦ ﻣﻌﻤـﺎﺭﻱ ،ﻳـﻚ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻣﺘﻮﺳﻂ ﻳﺎ ﺑﺰﺭﮒ ﻧﻘﺶ
ﺳـﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ﺭﺍ ﺍﻳﻔﺎ ﻣﻴﻜﻨﺪ .ﻫﺮ ﻛﺎﺑﺮﺑﺮ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻛﻮﭼﻚ ﻫﻤﺮﺍﻩ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﺩ ﻛﻪ ﺩﺭ ﺁﻥ ﺩﺍﺩﻩ ﻫﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ
ﻛﺎﺭﺑـﺮﺩﻱ ﻣـﻮﺭﺩ ﻧـﻴﺎﺯﺵ ﺫﺧﻴـﺮﻩ ﺷـﺪﻩ ﺍﻧﺪ.ﻛﺎﺭﺑﺮ ﻣﻴﺘﻮﺍﻧﺪ ﺍﺯ ﻫﺮ ﺟﺎﻳﻲ ﺑﺎ ﺳﻴﺴﺘﻢ ﺳﺮﻭﻳﺲ ﺩﻫﻨﺪﻩ ﻣﻮﺭﺩ ﻧﻈﺮﺵ ﻣﺮﺗﺒﻂ ﺑﻮﺩﻩ ﻭ
ﭘﺮﺩﺍﺯﺵ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻈﺮﺵ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ.
ﻣﻮﺿﻮﻋﺎﺕ ﺗﺤﻘﻴﻘﺎﺗﻲ:
-١ﺑﻪ ﻧﻈﺮ ﺷﻤﺎ ﭼﻪ ﻋﻮﺍﻣﻠﻲ ﺩﺭ ﺍﻧﺘﺨﺎﺏ ﻳﻚ DBMSﻧﻘﺶ ﺩﺍﺭﻧﺪ ؟
-٢ﻳﻚ DBMSﺭﺍﺑﻄﻪ ﺍﻱ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻭ ﺍﺟﺰﺍﻱ ﺁﻥ ﺭﺍ ﺑﺮﺭﺳﻲ ﻧﻤﺎﻳﻴﺪ.
ODBC -٣
JDBC -٤
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١٤ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
logﻛﻪ ﺭﺍﻳﺠﺘـﺮﻳﻦ ﺷﻴﻮﻩ ﺭﻓﻊ ﺍﺷﻜﺎﻝ ،ﺛﺒﺖ ﻭﻗﺎﻳﻊ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺣﻴﻦ ﺍﺟﺮﺍﻱ ﻋﺎﺩﻱ ﺗﺮﺍﻛﻨﺶ ﻳﻜﺴﺮﻱ ﺍﻃﻼﻋﺎﺕ ﺑﻨﺎﻡ
ﻣﺒـﻴﻦ ﺗﻐﻴﻴـﺮﺍﺕ ﺍﻋﻤـﺎﻝ ﺷـﺪﻩ ﺩﺭ ﺍﻃﻼﻋـﺎﺕ ﺍﺳـﺖ ﺫﺧﻴـﺮﻩ ﺷـﺪﻩ ﺗـﺎ ﺩﺭ ﺻـﻮﺭﺕ ﻟـﺰﻭﻡ ﺍﺯ ﺁﻧﻬـﺎ ﺑﺮﺍﻱ ﺗﺮﻣﻴﻢ ﺍﻃﻼﻋﺎﺕ ﺍﺳﺘﻔﺎﺩﻩ
ﮔﺮﺩﺩ.ﺩﺭ ﺣﻴﻦ ﺍﺟﺮﺍﻱ ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﺍﻃﻼﻋﺖ ﺯﻳﺮ ﺩﺭ logﺛﺒﺖ ﻣﻲ ﮔﺮﺩﻧﺪ:
ﻣﻲ -ﺛـﺒﺖ ﺷـﺮﻭﻉ ﺗـﺮﺍﻛﻨﺶ :ﻭﻗﺘﻴﻜﻪ ﺗﺮﺍﻛﻨﺶ Tiﺷﺮﻭﻉ ﻣﻲ ﺷﻮﺩ ﺍﻃﻼﻋﺖ > <Ti,Startﺑﺮ ﺭﻭﻱ ﺭﻛﻮﺭﺩ logﺛﺒﺖ
ﮔﺮﺩﺩ.
-ﺛـﺒﺖ ﻋﻤﻠـﻴﺎﺕ ﺗﺮﺍﻛﻨﺶ ﻛﻪ ﺩﺭ ﺍﺯﺍﻱ ﻫﺮ ﻋﻤﻞ Writeﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ .ﺍﻃﻼﻋﺎﺕ > <Ti,Xi,V1,V2ﺩﺭ logﺛﺒﺖ ﻣﻲ
ﺷﻮﺩ ﻛﻪ V1ﻣﻘﺪﺍﺭ Xjﻗﺒﻞ ﺍﺯ ﻋﻤﻞ Writeﻭ V2ﻣﻘﺪﺍﺭ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺩﺭ Xﻣﻲ ﺑﺎﺷﺪ).ﺑﻌﺪ ﺍﺯ ﻋﻤﻞ ﭘﺮﺩﺍﺯﺵ(
-ﺛﺒﺖ ﭘﺎﻳﺎﻥ ﺗﺮﺍﻛﻨﺶ
ﻭﻗﺘﻴﻜﻪ ﺗﺮﺍﻛﻨﺶ ﭘﺎﻳﺎﻥ ﻳﺎﻓﺖ ﺭﻛﻮﺭﺩ > <Ti,Commitﺩﺭ logﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﺑﺮﺧﻲ ﻧﻜﺎﺕ ﻣﻬﻢ :
-١ﺯﻣﺎﻥ ﺛﺒﺖ ﺭﻛﻮﺭﺩ :log
ﻗﺒﻞ ﺍﺯ ﺍﺟﺮﺍﻱ ﻫﺮ ﺩﺳﺘﻮﺭ writeﺩﺭ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ،ﺭﻛﻮﺭﺩ ﺷﺮﺡ ﻭﻗﺎﻳﻊ ﺁﻥ ﺑﺎﻳﺪ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﻭ ﺩﺭ ﺣﺎﻓﻈﻪ ﺛﺎﻧﻮﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ
ﺑﺎﺷﺪ ﺗﺎ ﺩﺭ ﺻﻮﺭﺕ ﻟﺰﻭﻡ ﺑﺘﻮﺍﻥ ﺍﺯ ﺁﻥ ﺑﺮﺍﻱ ﺍﻋﻤﺎﻝ ﺗﺮﻣﻴﻢ ﺍﻃﻼﻋﺎﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ.
-٢ﻧﺤﻮﻩ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ : log
ﺩﺭ ﺻﻮﺭﺕ ﺑﺮﻭﺯ ﻣﺸﻜﻞ ﺩﺭ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﭘﺲ ﺍﺯ ﺭﺍﻩ ﺍﻧﺪﺍﺯﻱ ﻣﺠﺪﺩ ﺳﻴﺴﺘﻢ ﺍﻃﻼﻋﺎﺕ logﺭﺍ ﺑﺮﺭﺳﻲ ﻛﺮﺩﻩ ﻭ ﺩﺭ ﺻﻮﺭﺕ
ﻟﺰﻭﻡ ﺍﻗﺪﺍﻡ ﺑﻪ ﺗﺮﻣﻴﻢ ﺍﻃﻼﻋﺎﺕ ﻣﻲ ﻛﻨﺪ.
-٣ﺩﺳﺘﻮﺭﺍﺕ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺗﺮﻣﻴﻢ:
ﺩﺭ ﺷﻴﻮﻩ logﺩﻭ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺑﺮﺍﻱ ﺗﺮﻣﻴﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﻧﺪ:
ﺍﻟﻒ( ﺩﺳﺘﻮﺭ Redo
ﺑﺎ ﺍﺟﺮﺍﻱ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ،ﻋﻤﻠﻴﺎﺕ ﺍﺟﺮﺍ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﺮﺍﻛﻨﺶ ﺑﺮﺍﻱ ﺣﺼﻮﻝ ﻳﻜﭙﺎﺭﭼﮕﻲ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻃﻼﻋﺎﺕ
ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ logﺩﻭﺑﺎﺭﻩ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﻧﺪ .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﺑﺎ ﺍﺟﺮﺍﻱ ﺩﺳﺘﻮﺭ ﻓﻮﻕ ﻋﻤﻠﻴﺎﺕ ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﺭﻭﻱ
ﺑﻌﻀـﻲ ﺍﺯ ﺍﻃﻼﻋـﺎﺕ ﺩﻭﺑـﺎﺭ ﻭ ﺑﻌﻀـﻲ ﺩﻳﮕـﺮ ﻳﻜـﺒﺎﺭ ﺍﻋﻤـﺎﻝ ﺷـﻮﻧﺪ.ﺩﺭ ﺍﻳﻨﺼـﻮﺭﺕ ﺍﺟـﺮﺍﻱ ﺩﻭﺑـﺎﺭﻩ ﺗﺮﺍﻛﻨﺶ ﻧﺒﺎﻳﺪ ﺑﺎﻋﺚ ﻋﺪﻡ
ﻳﻜﭙﺎﺭﭼﮕﻲ ﺍﻃﻼﻋﺎﺕ ﺷﻮﺩ ﻛﻪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻛﻮﺭﺩ ﺛﺒﺖ ﻭﻗﺎﻳﻊ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ.
ﺏ( ﺩﺳﺘﻮﺭ Undo
ﺑـﺎ ﺍﺟـﺮﺍﻱ ﺍﻳـﻦ ﺩﺳﺘﻮﺭ ﻋﻤﻠﻴﺎﺕ ﺍﺟﺮﺍ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﺮﺍﻛﻨﺶ ﺑﺮﺍﻱ ﺣﺼﻮﻝ ﻳﻜﭙﺎﺭﭼﮕﻲ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻃﻼﻋﺎﺕ
ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ logﺧﻨﺜﻲ ﻣﻲ ﮔﺮﺩﻧﺪ.
-٤-٨ﻣﺘﺪﻫﺎﻱ ﺗﺮﻣﻴﻢ ﺑﻜﺎﺭ ﺭﻓﺘﻪ ﺩﺭ ﺭﻭﺵ ) log-basedﺛﺒﺖ ﻭﻗﺎﻳﻊ(
ﻣﻲ ﺩﺍﻧﻴﻢ ﺑﺤﺚ ﺗﺮﻣﻴﻢ ﻣﻮﻗﻌﻲ ﻣﻄﺮﺡ ﺍﺳﺖ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻚ ﻋﻤﻞ ﻧﻮﺷﺘﻦ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ .ﺩﺭ ﺭﺍﺑﻄﻪ ﺑﺎ ﺍﻋﻤﺎﻝ ﻧﺘﻴﺠﻪ ﻳﻚ
ﺗﺮﺍﻛﻨﺶ ﺩﻭ ﺷﻴﻮﻩ ﻣﻄﺮﺡ ﻣﻲ ﺷﻮﺩ:
-١ﺗﺎﺧﻴﺮ ﺍﻋﻤﺎﻝ ﺗﻐﻴﻴﺮﺍﺕ.
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١٧ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﻟـﺬﺍ ﭼـﻮﻥ ﻋﻤﻠـﻴﺎﺕ ﺗـﺮﺍﻛﻨﺶ ﻗـﺒﻞ ﺍﺯ ﺧﺮﺍﺑـﻲ ﺳﻴﺴـﺘﻢ ﭘﺎﻳﺎﻥ ﻳﺎﻓﺘﻪ ﺍﺳﺖ ﻭ ﺍﺯ ﻃﺮﻓﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﺛﺒﺖ ﺗﻤﺎﻣﻲ ﺁﻧﻬﺎ ﺍﻧﺠﺎﻡ ﻧﺸﺪﻩ
ﺍﺳﺖ ﻟﺬﺍ ﺍﺟﺮﺍﻱ ﺩﻭﺑﺎﺭﻩ ﺗﺮﺍﻛﻨﺶ ﺻﻮﺭﺕ ﻣﻲ ﭘﺬﻳﺮﺩ ﻳﻌﻨﻲ ﺩﺳﺘﻮﺭ > < redo,Tiﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ.
ﻣﺜﺎﻝ :ﻓﺮﺽ ﻛﻨﻴﺪ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ T0ﻭ T1ﺭﺍ ﺩﺍﺭﻳﻢ ﻭ T0ﻗﺒﻞ ﺍﺯ T1ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ:
)T0 :Read(A )T1 :Read(C
A:=A-50000 C:=C-100
)write(A )write(C
)Read(B
B:=B+50000
)write(B
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻃﻼﻋﺎﺕ ﻣﻮﺟﻮﺩ ﺩﺭ LOGﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ:
><T0,Start ﺍﻟﻒ(
><T0,A,950000
>< T0,B,2050000
ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻫﻴﭻ ﻋﻤﻠﻲ ﺻﻮﺭﺕ ﻧﻤﻲ ﮔﻴﺮﺩ.
><T0,Start ﺏ(
><T0,A,950000
>< T0,B,2050000
><T0,Commit
><T1,Start
><T1,C,600
ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ )Redo(T0
><T0,Start ﺝ(
><T0,A,950000
>< T0,B,2050000
><T0,Commit
><T1,Start
><T1,C,600
><T1,C,500
><T1,Commit
ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ) Redo(T0ﻭ ﻣﺘﻌﺎﻗﺒﺎ” ) Redo(T1ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ.
-٢-٤-٨ﺷﻴﻮﻩ ﺍﻋﻤﺎﻝ ﺁﻧﻲ ﺗﻐﻴﻴﺮﺍﺕ )(Immediate database Modification
ﺩﺭ ﺍﻳـﻦ ﺭﻭﺵ ﺣﺎﺻﻞ ﻫﺮ ﻋﻤﻠﻴﺎﺕ writeﺭﻭﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺳﺮﻳﻌﺎ” ﺑﻪ ﺑﺎﻧﻚ ﻣﻨﻌﻜﺲ ﻣﻲ ﺷﻮﺩ ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ﻫﺮ ﺩﺳﺘﻮﺭ
writeﺩﺭ ﻣﺤـﻞ ﻇﻬـﻮﺭ ﺧﻮﺩ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ .ﺍﺯ ﺁﻧﺠﺎﺋﻴﻜﻪ ﺩﺭ ﺍﻳﻨﺠﺎ ﻋﻤﻞ undoﻧﻴﺰ ﺩﺍﺭﻳﻢ ﻟﺬﺍ ﻣﻘﺪﺍﺭ ﻗﺒﻠﻲ ﻭ ﻣﻘﺪﺍﺭ ﺟﺪﻳﺪ ﻫﺮ
ﻣﺘﻐﻴﻴﺮ ﻧﻴﺎﺯ ﺍﺳﺖ.
ﺍﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺩﺭ logﺛﺒﺖ ﻣﻲ ﮔﺮﺩﻧﺪ ﺑﺘﺮﺗﻴﺐ ﺯﻳﺮ ﻣﻲ ﺑﺎﺷﺪ:
-١ﺛﺒﺖ > <Ti,Startﻗﺒﻞ ﺍﺯ ﺷﺮﻭﻉ ﺗﺮﺍﻛﻨﺶ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺩﺭ logﺛﺒﺖ ﻣﻲ ﺷﻮﺩ.
-٢ﺛﺒﺖ > <Ti,X,V1,V2ﻗﺒﻞ ﺍﺯ ﺍﺟﺮﺍﻱ ﻫﺮ write
ﻣﺪﺭﺱ :ﺑﻬﺮﻭﺯﻣﻌﺼﻮﻣﻲ ١١٩ / ﺧﻼﺻﻪ درس :اﺻﻮل ﻃﺮاﺣﯽ ﭘﺎﯾﮕﺎه داده ﻫﺎ
ﺍﻟﻒ( ﺗﻤﺎﻣﻲ ﺭﻛﻮﺭﺩﻫﺎﻱ logﺭﺍ ﺍﺯ ﺣﺎﻓﻈﻪ ﺍﺻﻠﻲ ﺑﻪ ﺣﺎﻓﻈﻪ ﺛﺎﻧﻮﻳﻪ ﻣﻨﺘﻘﻞ ﻛﺮﺩ.
ﺏ( ﺗﻤﺎﻣﻲ ﺑﻠﻮﻛﻬﺎﻱ ﺣﺎﻭﻱ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺍﺻﻼﺡ ﺷﺪﻩ ﺑﻪ ﺣﺎﻓﻈﻪ ﺛﺎﻧﻮﻳﻪ ﻣﻨﺘﻘﻞ ﺷﻮﺩ.
ﺝ( ﻳﻚ ﺭﻛﻮﺭﺩ ﺗﺤﺖ ﻋﻨﻮﺍﻥ > <check pointﺩﺭ logﻭﺍﺭﺩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺑﻴﺎﻧﮕﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺳﻴﺴﺘﻢ ﺗﺎ ﺍﻳﻦ ﻟﺤﻈﻪ ﺳﺎﻟﻢ
ﺑﻮﺩﻩ ﻭ ﺩﺭ ﺍﺟﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﻣﺸﻜﻠﻲ ﭘﻴﺶ ﻧﻴﺎﻣﺪﻩ ﺍﺳﺖ.
ﻧﺤﻮﻩ ﺍﻋﻤﺎﻝ ﻛﻨﺘﺮﻝ ﺯﻣﺎﻧﻲ :
ﭼﮕﻮﻧﮕﻲ ﺑﺮﺧﻮﺭﺩ ﺑﺎ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺍﺟﺮﺍ ﺷﺪﻩ ﺑﺮﺍﺳﺎﺱ ﻗﺮﺍﺭﮔﺮﻓﺘﻦ > <Ti,Commitﻧﺴﺒﺖ ﺑﻪ ﺭﻛﻮﺭﺩ><check point
ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮﺩ:
)ﻓﺮﺽ ﻛﻨﻴﺪ Tcﺁﺧﺮﻳﻦ ﺭﻛﻮﺭﺩ check pointﻭ Tfﺯﻣﺎﻥ ﺧﺮﺍﺑﻲ ﺳﻴﺴﺘﻢ ﺑﺎﺷﺪ(
ﺍﻟﻒ( > <Ti,Commitﻗﺒﻞ ﺍﺯ ﻋﻤﻞ Tcﺑﺎﺷﺪ:
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺗﺮﺍﻛﻨﺶ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ ﺯﻳﺮﺍ ﻋﻤﻠﻴﺎﺕ ﺗﻤﺎﻡ ﺷﺪﻩ ﻭ ﺗﺮﺍﻛﻨﺶ ﺛﺒﺖ ﺷﺪﻩ ﺍﺳﺖ.
ﺏ( > <Ti,Commitﺑﻌﺪ ﺍﺯ Tnﻭ ﻗﺒﻞ ﺍﺯ Tfﺑﺎﺷﺪ:
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺑﺎ ﺍﺟﺮﺍﻱ ﺩﺳﺘﻮﺭ redoﺗﺮﺍﻛﻨﺶ ﺍﺟﺮﺍﻱ ﺩﻭﺑﺎﺭﻩ ﻣﻲ ﺷﻮﺩ.
ﺝ(ﻋﺪﻡ ﺣﻀﻮﺭ ><Ti,Commit
ﻣﻲ ﺩﺭ ﺍﻳـﻦ ﺣﺎﻟـﺖ ﺗـﺮﺍﻛﻨﺶ ﻧـﻴﻤﻪ ﺗﻤـﺎﻡ ﺭﻫﺎ ﺷﺪﻩ ﻭ ﻟﺬﺍ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﻴﻮﻩ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﺣﺎﻟﺘﻬﺎﻱ ﺯﻳﺮ ﻋﻤﻞ
ﺷﻮﺩ:
ﺍﻋﻤﺎﻝ ﺁﻧﻲ ﺗﻐﻴﻴﺮﺍﺕ: •
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺍﺛﺮ ﺍﺣﺘﻤﺎﻟﻲ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ > <Ti,Commitﺁﻧﻬﺎ ﺩﺭ logﻇﺎﻫﺮ ﻧﺸﺪﻩ ﺍﺳﺖ ﺑﺎ ﺍﺟﺮﺍﻱ ﺩﺳﺘﻮﺭ undo
ﺭﻭﻱ ﺑﺎﻧﻚ ﺧﻨﺜﻲ ﻣﻲ ﺷﻮﻧﺪ.
ﺗﺎﺧﻴﺮ ﺍﻋﻤﺎﻝ ﺍﺻﻼﺣﺎﺕ: •
ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ > <Ti,Commitﺁﻧﻬﺎ ﺩﺭ logﻇﺎﻫﺮ ﻧﺸﺪﻩ ﺍﺳﺖ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﻧﺪ.
ﻣﺜﺎﻝ :ﻓﺮﺽ ﻛﻨﻴﺪ ﺩﺭ ﺯﻣﺎﻧﻬﺎﻱ ﻣﺨﺘﻠﻒ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ T1ﻭ T4ﻫﻤﺮﺍﻩ ﺑﺎ Check pointﺑﺼﻮﺭﺕ ﻧﻤﻮﺩﺍﺭ ﺯﻳﺮ ﻇﺎﻫﺮ ﺷﺪﻩ
ﺑﺎﺷﻨﺪ.
Tc Tf
TIME
Conversion of Relationships
Pages(work, pageNumber)
WordContexts(work, pageNumber, position, actualText)
Instance(word, work, pageNumber, position)
Synonym(root, child)
WrittenIn(work, region, era)
Criticized(work, url)
WroteCriticism(author, url)
LivedIn(name, region, era)
WrittenBy(author, work)
Functional Dependencies
Criticism: url -> publication, synopsis, title
Author: name -> birth, death, description
Works: id -> title, year, length
WordContexts: work, pageNumber, position -> actualText
pageNumber number(5),
position number(4),
actualText varchar(128),
primary key (word, pageNumber, position)
);
indicies and such, the total disk space required to store this data was well over 1 GB.
Figuring that the CS department might balk at a request for so much space for a class
project, I decided to run the project on my own box. And not wanting to pay for an Oracle
license, I decided to run an open-source alternative, MySQL and port my SQL code to work
under MySQL.
I originally thought that the task of porting to MySQL would be relatively simple.
Unfortunately, MySQL does not support some essential functionality. Specifically related to
this project, MySQL doesn't support subqueries, views, stored procedures, triggers, and
foreign keys. Some workarounds are discussed in MySQL's list of missing functionality.
Additionally, I was unable to find a way to hint the MySQL planner, so certain operations
that should have used indicies apparently were not doing so, causing severe performance
problems. As a result, I was forced to change the database schema slightly, and the MySQL
schema I used for creating the web application was as follows:
CREATE TABLE Author (
name varchar(128) NOT NULL PRIMARY KEY,
birth integer NOT NULL,
death integer NOT NULL,
description text
);
In retrospect, I probably should have used PostgreSQL, which is also open-source, and
supports subqueries and most of the functionality that Oracle supports. But I didn't know
about it at the time, so I ended up doing the MySQL port.
Triggers
This section creates two triggers on the database. The first causes a little fake review to be
entered in to the databse every time a new work is added to the database. The second creates
an entry in the synonym table with both entries as the same value (since every word is a
synonym of iteself) every time a new word is added to the vocabulary.
CREATE TRIGGER GoodReviewsTrig
AFTER INSERT ON Work
FOR EACH ROW
WHEN (NEW.title LIKE '%computer%')
BEGIN
INSERT INTO Criticism VALUES
(:NEW.title || ' is a great book',
'Keith Ito',
'http://www.stanford.edu/~keithito/' || :NEW.id || '.html',
'I thought that ' || :NEW.title || ' was the best book of the year',
'Keiths Reviews',
'great book');
END GoodReviewsTrig;
.
run;
BEGIN
INSERT INTO Syn VALUES (:NE W.id, :NEW.id);
END ReflexiveSynTrig;
.
run;
١- H.Korth and A.silberschatz ,Database System Concepts , Fourth Edition ,Mc Graw Hill
,2001.
.١٣٧٨. ﻣﻘﺪﻣﻪ ﺍﻱ ﺑﺮ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ”ﭼﺎﭖ ﭼﻬﺎﺭﻡ “ ﺍﻧﺘﺸﺎﺭﺍﺕ ﺟﻠﻮﻩ. ﺳﻴﺪ ﻣﺤﻤﺪ ﺗﻘﻲ، ﺭﻭﺣﺎﻧﻲ ﺭﺍﻧﻜﻮﻫﻲ-٦
.١٣٨٠. ﻣﻔﺎﻫﻴﻢ ﺑﻨﻴﺎﺩﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ“ ﭼﺎﭖ ﺍﻭﻝ ” ﺍﻧﺘﺸﺎﺭﺍﺕ ﺟﻠﻮﻩ. ﺳﻴﺪ ﻣﺤﻤﺪ ﺗﻘﻲ، ﺭﻭﺣﺎﻧﻲ ﺭﺍﻧﻜﻮﻫﻲ-٧