0% found this document useful (0 votes)
130 views

Comprehensive Database Management-1

- Systems with a client/server architecture operate in a networked environment that partitions application processing between front-end clients and back-end servers. In general, a client application requires resources provided by the server. - Clients and servers can be on the same computer or distributed across multiple connected devices in a network. Both clients and servers can be located on different machines.

Uploaded by

ali99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
130 views

Comprehensive Database Management-1

- Systems with a client/server architecture operate in a networked environment that partitions application processing between front-end clients and back-end servers. In general, a client application requires resources provided by the server. - Clients and servers can be on the same computer or distributed across multiple connected devices in a network. Both clients and servers can be located on different machines.

Uploaded by

ali99
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

‫›>‪a

K›f8‬‬
‫‪9‬‬
‫‪·j¦…¶WážKE:<W ›jME‬‬

‫›‪f8>››XM ›¥£h²›WT‬‬
‫ﺑﻌﺪ ﺩﺭﺍﺳﺘﻚ ﳍﺬﺍ ﺍﻟﻔﺼﻞ ﺳﺘﻜﻮﻥ ﻗﺎﺩﺭﹰﺍ ﻋﻠﻰ‬
‫‪ x‬ﺗﻌﺮﻳﻒ ﺍﳌﺼﻄﻠﺤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‪ :‬ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ )‪ ،(Client/Server Systems‬ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ‬
‫)‪ ،(File Server‬ﺍﻟﺰﺑﻮﻥ ﺍﻟﺜﻘﻴﻞ )‪ ،(Fat Client‬ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ )‪،(Database Server‬‬
‫ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﹸﺨﺰﻧﺔ )‪ ،(Stored Procedures‬ﺍﻟﺒﻴﺌﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ )‪،(Three-tier Architecture‬‬
‫ﺍﻟﺰﺑﻮﻥ ﺍﳋﻔﻴﻒ )‪ ،(Thin Client‬ﲡﺰﺋﺔ ﺍﻟﺘﻄﺒﻴﻖ )‪ ،(Application Partitioning‬ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻌﺪﺩﺓ‬
‫ﺍﳌﺘﻨﺎﻇﺮﺓ ‪ ،SMP‬ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺍﳌﻜﺜﻔﺔ‪/‬ﺍﻟﺒﻨﻴﺔ ﻏﲑ ﺍﻟﺘﺸﺎﺭﻛﻴﺔ‪ ،‬ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‬
‫)‪ ،(Middleware‬ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﱪﳎﻴﺔ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ‪ ،(Application Program Interface) API‬ﻟﻐﺔ‬
‫ﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﻷﻣﺜﻠﺔ )‪ ،(Query-By-Example) (QBE‬ﻣﻌﻴﺎﺭ ﺍﻻﺗﺼﺎﻝ ﺑﻘﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻔﺘﻮﺡ‬
‫‪ ،ODBC‬ﻟﻐﺔ ﻓﻴﺠﻮﺍﻝ ﺑﻴﺴﻚ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ‪ ،VBA‬ﺍﻟﱪﳎﺔ ﺍﳌﻘﺎﺩﺓ ﺑﺎﳊﺪﺙ )‪.(Event-driven‬‬
‫ﻣﻌﺮﻓﺔ ﻣﺰﺍﻳﺎ ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﻘﺎﺭﻧﺔ ﺑﻄﺮﻕ ﺍﳌﻌﺎﳉﺔ ﺍﻷﺧﺮﻯ‪.‬‬ ‫‪x‬‬

‫ﺷﺮﺡ ﺍﳌﺮﻛﺒﺎﺕ ﺍﻟﺜﻼﺛﺔ ﻟﻠﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﻟﻠﺘﻄﺒﻴﻖ‪ :‬ﺧﺪﻣﺎﺕ ﻋﺮﺽ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﺧﺪﻣﺎﺕ ﺍﳌﻌﺎﳉﺔ‪،‬‬ ‫‪x‬‬
‫ﺧﺪﻣﺎﺕ ﺍﻟﺘﺨﺰﻳﻦ‪.‬‬
‫ﺍﻗﺘﺮﺍﺡ ﺇﻣﻜﺎﻧﻴﺔ ﲡﺰﻱﺀ ﻫﺬﻩ ﺍﳋﺪﻣﺎﺕ ﺇﱃ ﻋﺪﺓ ﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪.‬‬ ‫‪x‬‬

‫ﺍﻟﺘﻤﻴﻴﺰ ﺑﲔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﻭﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﺔ ﺍﻟﻄﺒﻘﺎﺕ ﻭﺍﻟﺒﻨﻴﺔ ﺍﳌﺘﻌﺪﺩﺓ‬ ‫‪x‬‬
‫ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬
‫ﻭﺻﻒ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‪ ،‬ﻭﻣﻌﺮﻓﺔ ﻛﻴﻒ ﺗﺴﻬﻞ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪.‬‬ ‫‪x‬‬
‫›>‪a K›f8‬‬ ‫‪516‬‬

‫ﻭﻋﻼﻗﺘﻬﺎ ﺑﺎﻟﱪﻧﺎﻣﺞ‬ ‫‪QBE‬‬ ‫ﺷﺮﺡ ﺇﻣﻜﺎﻧﺎﺕ ﻭﺍﺟﻬﺔ ﺍﻻﺳﺘﻌﻼﻡ ﻋﻦ ﻃﺮﻳﻖ ﺍﻷﻣﺜﻠﺔ‬ ‫‪x‬‬
‫‪ ،Microsoft Access 2000‬ﻣﻴﺰﺍ‪‬ﺎ ﻭﻋﻴﻮ‪‬ﺎ ﻣﻘﺎﺭﻧﺔ ﺑﻠﻐﺔ ‪.SQL‬‬
‫ﺷﺮﺡ ﻛﻴﻔﻴﺔ ﺭﺑﻂ ﺟﺪﺍﻭﻝ ﻣﻌﻄﻴﺎﺕ ﺧﺎﺭﺟﻴﺔ ﻣﻊ ﺗﻄﺒﻴﻖ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺑﻮﺍﺳﻄﺔ ‪ ODBC‬ﺃﻭ‬ ‫‪x‬‬
‫‪.JDBC‬‬
‫ﺷﺮﺡ ﻛﻴﻒ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ‪ VBA‬ﻣﻊ ‪ Access2000‬ﻟﺒﻨﺎﺀ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺰﺑﻮﻥ‪.‬‬ ‫‪x‬‬
‫‪517‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫?‪MW‬‬
‫ﺗﻌﻤﻞ ﺃﻧﻈﻤﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﰲ ﺑﻴﺌﺔ ﺷﺒﻜﻴﺔ ﳎﺰﺋﺔ ﻣﻌﺎﳉﺔ ﺍﻟﺘﻄﺒﻴﻖ ﺑﲔ ﺯﺑﻮﻥ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ ﻭﻣﻌﺎﰿ‬
‫ﺍﻟﻄﺮﻑ ﺍﳋﻠﻔﻲ‪ .‬ﻭﺑﺸﻜﻞ ﻋﺎﻡ ﻓﺈﻥ ﺗﻄﺒﻴﻖ ﺍﻟﺰﺑﻮﻥ ﻳﺘﻄﻠﺐ ﺑﻌﺾ ﺍﳌﻮﺍﺭﺩ ﺍﻟﱵ ﻳﺰﻭﺩﻩ ‪‬ﺎ ﺍﳌﺨﺪﻡ ﻭﻣﻦ‬
‫ﺍﳉﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﺃﻥ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﺨﺪﻣﺎﺕ ﳝﻜﻦ ﺃﻥ ﻳﻜﻮﻧﻮﺍ ﻋﻠﻰ ﺍﳊﺎﺳﺐ ﻧﻔﺴﻪ‪ ،‬ﺃﻭ ﳝﻜﻦ ﺃﻥ ﻳﻜﻮﻧﻮﺍ‬
‫ﻼ ﻣﻦ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﺨﺪﻣﲔ‬‫ﻣﺘﻮﺯﻋﲔ ﻋﻠﻰ ﻋﺪﺓ ﺃﺟﻬﺰﺓ ﻣﺘﺼﻠﺔ ﺿﻤﻦ ﺷﺒﻜﺔ‪ .‬ﺣﻴﺚ ﳝﻜﻦ ﺍﻋﺘﺒﺎﺭ ﺃﻥ ﻛ ﹰ‬
‫ﺫﻛﻲ ﻭﻗﺎﺑﻞ ﻟﻠﱪﳎﺔ ﲝﻴﺚ ﳝﻜﻦ ﺃﻥ ﺗﺴﺘﺨﺪﻡ ﻗﻮ‪‬ﻤﺎ ﺍﳊﺴﺎﺑﻴﺔ ﻹﳒﺎﺯ ﺗﻄﺒﻴﻘﺎﺕ ﻓﻌ‪‬ﺎﻟﺔ‪.‬‬
‫ﻣﻦ ﺍﻟﺼﻌﺐ ﺗﻘﻴﻴﻢ ﺃﺛﺮ ﺗﻄﺒﻴﻘﺎﺕ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﰲ ﺍﻟﺴﻨﻮﺍﺕ ﺍﻟﻌﺸﺮ ﺍﳌﺎﺿﻴﺔ‪.‬ﻛﻤﺎ ﺃﻥ ﺍﻟﺘﻘﺪﻡ ﰲ‬
‫ﺗﻘﻨﻴﺎﺕ ﺍﳊﻮﺍﺳﻴﺐ ﺍﻟﺸﺨﺼﻴﺔ ﻭﺍﻟﺘﻄﻮﺭ ﺍﻟﺴﺮﻳﻊ ﻟﻮﺍﺟﻬﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﺒﻴﺎﻧﻴﺔ ‪ GUIs‬ﻭﺍﻟﺸﺒﻜﺎﺕ‬
‫ﻭﺍﻻﺗﺼﺎﻻﺕ‪ ،‬ﻛﻠﻬﺎ ﻏﲑﺕ ﻣﻦ ﻃﺮﻕ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻷﻋﻤﺎﻝ ﻷﻧﻈﻤﺔ ﺍﳊﺴﺎﺏ ﲟﺎ ﻳﺘﻮﺍﻓﻖ ﻣﻊ ﻣﺘﻄﻠﺒﺎ‪‬ﺎ‪.‬‬
‫ﻓﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺘﺠﺎﺭﺓ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺗﺘﻄﻠﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﺘﺼﻔﺢ ﺍﻟﺰﺑﻮﻥ ﻗﺎﺩﺭﹰﺍ ﻋﻠﻰ ﺍﻟﻮﻟﻮﺝ ﺇﱃ ﺻﻔﺤﺎﺕ‬
‫ﺍﻟﻮﻳﺐ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ ﺍﳌﺮﺗﺒﻄﺔ ﺑﻘﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺗﺰﻭﺩﻫﺎ ﲟﻌﻄﻴﺎﺕ ﻣﺘﺠﺪﺩﺓ‪.‬‬
‫ﻗﺪ ﺃﻋﻴﺪﺕ ﻛﺘﺎﺑﺔ ﺗﻄﺒﻴﻘﺎﺕ ﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ ﻟﺘﻌﻤﻞ ﰲ ﺑﻴﺌﺔ ﻣﻌﻄﻴﺎﺕ ﺗﺰﻭﺩﻫﺎ ﲟﻌﻄﻴﺎﺕ ﻣﺘﺠﺪﺩﺓ‪.‬‬
‫ﻗﺪ ﺃﻋﻴﺪﺕ ﺗﻄﺒﻴﻘﺎﺕ ﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ ﻟﺘﻌﻤﻞ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﺴﺘﻔﻴﺪﺓ ﻣﻦ ﺍﻷﺛﺮ ﺍﻟﻜﺒﲑ ﻟﻠﻜﻠﻔﺔ‬
‫ﰲ ﺷﺒﻜﺎﺕ ﺍﳊﻮﺍﺳﻴﺐ ﺍﻟﺸﺨﺼﻴﺔ ﻭﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ‪ .‬ﺗﻼﺋﻢ ﺍﳊﺎﺟﺔ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺍﺳﺘﺮﺍﺗﻴﺠﻴﺎﺕ ﺑﻴﺌﺔ‬
‫ﻋﻤﻞ ﳏﺪﺩﺓ‪ ،‬ﻗﺪ ﰎ ﺳﺪﻫﺎ ﺑﻮﺍﺳﻄﺔ ﺣﻠﻮﻝ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻷ‪‬ﺎ ﺗﻘﺪﻡ ﺍﳌﺮﻭﻧﺔ ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻄﻮﻳﺮ )ﻭﻫﻲ‬
‫ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﻄﻮﻳﺮ ﻧﻈﺎﻡ ﺩﻭﻥ ﺍﳊﺎﺟﺔ ﻹﻋﺎﺩﺓ ﺗﺼﻤﻴﻤﻪ( ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻤﺪﺩ )ﻭﻫﻲ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺗﻌﺮﻳﻒ‬
‫ﺃﳕﺎﻁ ﻣﻌﻄﻴﺎﺕ ﻭﻋﻤﻠﻴﺎﺕ ﺟﺪﻳﺪﺓ( ﺃﻳﻀﹰﺎ‪ .‬ﻭﻛﻠﻤﺎ ﺗﻮﺳﻌﺖ ﺍﻷﻋﻤﺎﻝ ﻭﺃﺻﺒﺤﺖ ﺃﻛﺜﺮ ﴰﻮﻟﻴﺔ ﻣﻦ‬
‫ﻧﺎﺣﻴﺔ ﻋﻤﻠﻴﺎ‪‬ﺎ‪ ،‬ﻓﺈﻧﻪ ﻳﺘﻮﺟﺐ ﻋﻠﻴﻬﺎ ﺍﺑﺘﻜﺎﺭ ﻧﻈﻢ ﻣﻮﺯﻋﺔ ﺟﺪﻳﺪﺓ )ﺳﺘﺘﻢ ﻣﻨﺎﻗﺸﺘﻬﺎ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻟﺚ‬
‫ﻋﺸﺮ(‪ ،‬ﻭﻏﺎﻟﺒﺎﹰ ﻣﺎ ﺗﺘﻀﻤﻦ ﺧﻄﻄﻬﺎ ﺍﺳﺘﺨﺪﺍﻡ ﺑ‪‬ﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪.‬‬
‫ﺳﻮﻑ ﻧﺘﻨﺎﻭﻝ ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺗﻄﻮﺭﺍﺕ ﺑﻴﺌﺔ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻭﺍﻟﱵ ﺃﺩﺕ‬
‫ﺇﱃ ﺗﻄﻮﻳﺮ ﻋﺪﺓ ﺍﺳﺘﺮﺍﺗﻴﺠﻴﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﳌﻌﺎﳉﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﻭﻣﻨﻬﺎ‪ :‬ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳌﺒﻴﻨﺔ ﻋﻠﻰ ﺷﺒﻜﺎﺕ ‪ ،LAN‬ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ )ﻭﺗﺘﻀﻤﻦ ﺍﻟﺒﲎ ﺛﻼﺛﻴﺔ‬
‫ﺍﻟﻄﺒﻘﺎﺕ(‪ ،‬ﺑﲏ ﺍﳌﻌﺎﳉﺔ ﺍﳌﻮﺯﻋﺔ‪ ،‬ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‪.‬‬
‫ﺇﻥ ﻣﺎ ﻳ‪‬ﺮﻏﱢﺐ ﰲ ﺗﻘﻨﻴﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺗﻠﻚ‪ ،‬ﻫﻮ ﺗﻨﻮﻉ ﺍﻟﻔﺮﺹ ﺍﳉﺪﻳﺪﺓ ﻭﺍﻟﻀﻐﻮﻁ ﺍﻟﺘﻨﺎﻓﺴﻴﺔ‪،‬‬
‫ﻓﻠﻘﺪ ﺃﺻﺒﺤﺖ ﺍﻟﺸﺒﻜﺔ ﻛﺎﳊﺎﺳﺐ‪ ،‬ﺣﻴﺚ ﺃﻥ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻳﺘﺸﺎﺭﻛﻮﻥ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﻦ ﺧﻼﻝ ﻣﺴﺎﺭﺍﺕ‬
‫ﺍﻟﺸﺒﻜﺔ ﰒ ﻳﻠﺠﺆﻭﻥ ﺇﱃ ﺍﻹﻧﺘﺮﻧﺖ ﻟﻠﻮﻟﻮﺝ ﺇﱃ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻭﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ ﻃﻠﺒﻮﻫﺎ‪ .‬ﺇﻥ ﺇﻋﺎﺩﺓ ﺑﻨﺎﺀ‬
‫ﺍﳌﺆﺳﺴﺎﺕ‪ ،‬ﳚﻌﻞ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺭﺑﻂ ﺃﻭ ﺩﻣﺞ ﺃﻭ ﺍﺳﺘﺒﺪﺍﻝ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ‪ .‬ﺇﻥ ﺇﺣﺪﻯ ﻧﺘﺎﺋﺞ‬
‫ﺗﻘﻠﻴﺺ ﺍﳌﺆﺳﺴﺎﺕ‪ ،‬ﻫﻲ ﺍﻣﺘﻼﻙ ﺍﳌﺪﺭﺍﺀ ﲢﻜﻤﹰﺎ ﺃﻭﺳﻊ ﻳﺴﺘﻠﺰﻡ ﺑﺪﻭﺭﻩ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﳎﺎﻝ ﺃﻛﱪ ﻣﻦ‬
‫›>‪a K›f8‬‬ ‫‪518‬‬

‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺳﻮﻑ ﺗﺘﻘﻠﺺ ﻣﻦ ﺗﻄﺒﻴﻘﺎﺕ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ ﻣﺮﻛﺰﻳﺔ ﻣﻜﻠﻔﺔ ﺇﱃ‬
‫ﺗﻄﺒﻴﻘﺎﺕ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ ﻭﳏﻄﺎﺕ ﻋﻤﻞ ﻣﺮﺗﺒﻄﺔ ﺑﺸﺒﻜﺔ ﻣﺎ‪ ،‬ﻭﺗﻌﺘﱪ ﺃﻛﺜﺮ ﺳﻬﻮﻟﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ‬
‫ﻭﺃﺣﻴﺎﻧﹰﺎ ﺃﻓﻀﻞ ﻣﻦ ﺣﻴﺚ ﺍﻟﻜﻠﻔﺔ‪ .‬ﻛﻤﺎ ﺗﺸﻜﻞ ﺇﺩﺍﺭﺓ ﺍﻟﻨﻘﻞ ﰲ ﺍﻟﺸﺒﻜﺔ‪ ،‬ﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻣﻌﻘﺪﺓ‬
‫ﰲ ﺑﻌﺾ ﺍﻟﺒﲎ‪ ،‬ﻗﻀﻴﺔ ﻫﺎﻣﺔ ﰲ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻧﺎﺟﺤﺔ‪ ،‬ﻭﺧﺼﻮﺻﺎﹰ ﻋﻨﺪﻣﺎ ﺗﻀﻊ‬
‫ﺍﳌﺆﺳﺴﺔ ﺗﻄﺒﻴﻘﺎﺕ ﻣﻬﻤﺔ ﰲ ﺑﻴﺌﺔ ﻣﻮﺯﻋﺔ‪ .‬ﺇﻥ ﺇﻧﺸﺎﺀ ﺗﻮﺍﺯﻥ ﺟﻴﺪ ﺑﲔ ﺍﻟﻨﻈﻢ ﺍﳌﺮﻛﺰﻳﺔ ﻭﺍﻟﻨﻈﻢ ﻏﲑ‬
‫ﺍﳌﺮﻛﺰﻳﺔ ﻫﻲ ﻣﺴﺄﻟﺔ ﺍﳉﺪﻝ ﺍﳊﺎﻟﻴﺔ‪ ،‬ﻟﺬﻟﻚ ﺗﻜﺎﻓﺢ ﺍﳌﺆﺳﺴﺎﺕ ﻣﻦ ﺃﺟﻞ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﺃﻋﻠﻰ ﻓﺎﺋﺪﺓ‬
‫ﻣﻦ ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻟﻜﻞ ﻣﻦ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ‪.‬‬

‫‪·j¦…¶Wág;kC‬‬
‫ﺗﺴﺘﺨﺪﻡ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﻟﺸﺒﻜﺎﺕ ﺍﶈﻠﻴﺔ ‪ LAN‬ﻟﺪﻋﻢ ﺷﺒﻜﺔ ﻣﻦ ﺍﳊﻮﺍﺳﻴﺐ ﺍﻟﺸﺨﺼﻴﺔ‪ ،‬ﺣﻴﺚ ﺃﻥ‬
‫ﻟﻜﻞ ﺣﺎﺳﺐ ﻣﻦ ﻫﺬﻩ ﺍﳊﻮﺍﺳﻴﺐ ﻭﺳﺎﺋﻂ ﺍﻟﺘﺨﺰﻳﻦ ﺍﳋﺎﺻﺔ ﺑﻪ‪ ،‬ﻭﳝﻜﻦ ﺃﻥ ﺗﺴﺘﺨﺪﻡ ﻫﺬﻩ ﺍﳊﻮﺍﺳﻴﺐ‬
‫ﲡﻬﻴﺰﺍﺕ ﻣﺸﺘﺮﻛﺔ ﺑﻴﻨﻬﺎ )ﻣﺜﻞ ﺍﻟﻘﺮﺹ ﺍﻟﺼﻠﺐ‪ ،‬ﺍﻟﻄﺎﺑﻌﺔ( ﻭﺑﺮﳎﻴﺎﺕ ﻣﺸﺘﺮﻛﺔ ﺃﻳﻀﹰﺎ )ﻣﺜﻞ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ( ﻣﺘﺼﻠﺔ ﺑﺸﺒﻜﺔ ‪ LAN‬ﻣﻌﻴﻨﺔ‪.‬‬
‫ﻳﺒﻌﺪ ﻛﻞ ﺣﺎﺳﺐ ﺷﺨﺼﻲ ﺃﻭ ﳏﻄﺔ ﻋﻤﻞ ﺑﺸﻜﻞ ﻋﺎﻡ ﺣﻮﺍﱄ ‪ 100‬ﻗﺪﻡ ﻋﻦ ﺍﻟﺒﻘﻴﺔ‪ ،‬ﺣﻴﺚ ﻳﻜﻮﻥ‬
‫ﻃﻮﻝ ﺳﻠﻚ ﺍﻟﺸﺒﻜﺔ ﺍﻹﲨﺎﱄ ﺃﻗﻞ ﻣﻦ ﻣﻴﻞ‪ ،‬ﻭﳜﺼﺺ ﻋﻠﻰ ﺍﻷﻗﻞ ﺃﺣﺪ ﺍﻷﺟﻬﺰﺓ ﻛﻤﺨﺪﻡ ﻣﻠﻔﺎﺕ‬
‫ﺣﻴﺚ ﲣﺰﻥ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺸﺘﺮﻛﺔ ﻋﻠﻴﻪ‪ .‬ﻟﻘﺪ ﺃﺿﺎﻓﺖ ﺃﺟﺰﺍﺀ ﺷﺒﻜﺔ ‪ LAN‬ﺍﳋﺎﺻﺔ ﺑﻨﻈﻢ ﺇﺩﺍﺭﺓ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺇﻣﻜﺎﻧﻴﺔ ﺍﻟﺘﺤﻜﻢ ﺑﺎﻟﻮﺻﻮﻝ ﺍﳌﺘﺰﺍﻣﻦ‪ ،‬ﻭﺃﺿﺎﻓﺖ ﺃﻳﻀﹰﺎ ﲰﺎﺕ ﺇﺿﺎﻓﻴﺔ ﻣﺘﻌﻠﻘﺔ ﺑﺎﻷﻣﻦ‪،‬‬
‫ﻭﺇﺩﺍﺭﺓ ﲡﻤﻴﻊ ﺍﻻﺳﺘﻌﻼﻡ ﻟﺪﻋﻢ ﺍﻟﻮﺻﻮﻝ ﺍﳌﺘﺰﺍﻣﻦ ﻣﻦ ﻋﺪﺓ ﻣﺴﺘﺨﺪﻣﲔ ﺇﱃ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬
‫ﻣﺸﺘﺮﻛﺔ‪.‬‬
‫ﳝﻜﻦ ﲤﻴﻴﺰ ﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﳌﺘﻌﺪﺩﺓ ﺍﻟﱵ ﰎ ﺗﻄﻮﻳﺮﻫﺎ ﺑﻮﺍﺳﻄﺔ ﺗﻮﺯﻉ ﻣﻜﻮﻧﺎﺕ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ )ﻣﻨﻄﻖ(‬
‫ﻟﻠﺘﻄﺒﻴﻖ ﻋﻠﻰ ﺍﳌﺨﺪﻣﺎﺕ ﻭﺍﻟﺰﺑﺎﺋﻦ‪ .‬ﺣﻴﺚ ﻳﻮﺟﺪ ﺛﻼﺛﺔ ﻣﻜﻮﻧﺎﺕ ﳌﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﺍﳌﻜﻮﻥ ﺍﻷﻭﻝ ﻫﻮ‬
‫ﺍﻟﺪﺧﻞ‪/‬ﺍﳋﺮﺝ ﺃﻭ ﻣﻜﻮﻥ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﻟﻠﻌﺮﺽ )ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ(‪ .‬ﻫﺬﺍ ﺍﳌﻜﻮﻥ ﻫﻮ ﺍﳌﺴﺆﻭﻝ ﻋﻦ‬
‫ﺗﻨﺴﻴﻖ ﻭﺇﻇﻬﺎﺭ ﺍﳌﻌﻄﻴﺎﺕ ﻋﻠﻰ ﺷﺎﺷﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺃﻭ ﺃﻱ ﻭﺳﻴﻠﺔ ﺇﻇﻬﺎﺭ ﺃﺧﺮﻯ‪ ،‬ﻭﻫﻮ ﻳﺪﻳﺮ ﺃﻳﻀﹰﺎ‬
‫ﻋﻤﻠﻴﺎﺕ ﺍﻹﺩﺧﺎﻝ ﺍﻟﱵ ﻳﻘﻮﻡ ‪‬ﺎ ﺍﳌﺴﺘﺨﺪﻡ ﻋﻦ ﻃﺮﻳﻖ ﻟﻮﺣﺔ ﺍﳌﻔﺎﺗﻴﺢ‪ ،‬ﺃﻭ ﺃﻱ ﻭﺳﻴﻠﺔ ﺇﺩﺧﺎﻝ ﺃﺧﺮﻯ‪.‬‬
‫ﺃﻣﺎ ﺍﳌﻜﻮﻥ ﺍﻟﺜﺎﱐ ﻓﻬﻮ ﻣﻜﻮﻥ ﺍﳌﻌﺎﳉﺔ‪ ،‬ﻭﻫﻮ ﻳﺪﻳﺮ ﻣﻨﻄﻖ ﻣﻌﺎﳉﺔ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻣﻨﻄﻖ ﻭﻗﻮﺍﻋﺪ ﺍﻟﻌﻤﻞ‪،‬‬
‫ﻭﻣﻨﻄﻖ ﺇﺩﺍﺭﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻳﺘﻀﻤﻦ ﻣﻨﻄﻖ ﻣﻌﺎﳉﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ ﻧﺸﺎﻃﺎﺕ ﻣﺜﻞ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﺤﺔ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻭﻫﻮﻳﺘﻬﺎ ‪‬ﺪﻑ ﻣﻌﺎﳉﺔ ﺍﻷﺧﻄﺎﺀ‪ .‬ﳝﻜﻦ ﺗﺮﻣﻴﺰ ﻗﻮﺍﻋﺪ ﺍﻟﻌﻤﻞ ﺍﻟﱵ ﻳﺘﻢ ﺗﺮﻣﻴﺰﻫﺎ ﰲ ﻣﺴﺘﻮﻯ‬
‫ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﰲ ﻣﻜﻮﻥ ﺍﳌﻌﺎﳉﺔ‪.‬‬
‫‪519‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﳛﺪﺩ ﻣﻨﻄﻖ ﺇﺩﺍﺭﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻀﺮﻭﺭﻳﺔ ﳌﻌﺎﳉﺔ ﻣﻨﺎﻗﻠﺔ ﺃﻭ ﺍﺳﺘﻌﻼﻡ ﻣﺎ‪ .‬ﺃﻣﺎ ﺍﳌﻜﻮﻥ ﺍﻟﺜﺎﻟﺚ‬
‫ﻓﻬﻮ ﺍﻟﺘﺨﺰﻳﻦ‪ ،‬ﻭﻫﻮ ﺍﳌﺴﺆﻭﻝ ﻋﻦ ﲣﺰﻳﻦ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﺳﺘﻌﺎﺩ‪‬ﺎ ﻣﻦ ﻭﺳﺎﺋﻂ ﺍﻟﺘﺨﺰﻳﻦ ﺍﻟﻔﻴﺰﻳﺎﺋﻴﺔ‬
‫ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﻟﺘﻄﺒﻴﻖ‪ .‬ﺇﻥ ﻧﺸﺎﻃﺎﺕ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﲢﺪﺙ ﰲ ﻣﻨﻄﻖ ﻣﻜﻮﻥ ﺍﻟﺘﺨﺰﻳﻦ‪.‬‬
‫)ﺍﻧﻈﺮ ﺇﱃ ﺍﻟﺸﻜﻞ )‪.(9-1‬‬

‫‪ϖϴΒτΘϟ΍ ϖτϨϣ ΕΎϧϮϜϣ‬‬ ‫‪(9-1) ϞϜθϟ΍‬‬

‫‪žK>A&›¶WáMEC‬‬
‫ﻫﻲ ﺃﻭﻝ ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﰎ ﺗﻄﻮﻳﺮﻫﺎ‪ ،‬ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺗﺘﻢ ﻣﻌﺎﳉﺔ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ‬
‫)‪ (workstations‬ﺍﻟﱵ ﻃﻠﺒﺖ ﻫﺬﻩ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺣﻴﺚ ﻳ‪‬ﺪﻳﺮ ﺍﻟﺰﺑﻮﻥ ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ ﻭﻣﻨﻄﻖ ﺍﳌﻌﺎﳉﺔ‬
‫ﻭﻏﺎﻟﺒﻴﺔ ﻣﻨﻄﻖ ﺍﻟﺘﺨﺰﻳﻦ )ﺍﳌﺘﻌﻠﻖ ﺑﻨﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ(‪ .‬ﻳﺘﻢ ﺭﺑﻂ ﻣﻠﻒ ﻭﺍﺣﺪ ﺃﻭ ﺃﻛﺜﺮ ﺇﱃ‬
‫ﺷﺒﻜﺔ ‪ ،LAN‬ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺑﺎﻟﺘﻌﺮﻳﻒ ﻫﻮ ﺟﻬﺎﺯ ﻗﺎﺩﺭ ﻋﻠﻰ ﺇﺭﺳﺎﻝ ﻭﺍﺳﺘﻘﺒﺎﻝ ﺍﳌﻌﻄﻴﺎﺕ ﻭﻳﻘﻮﻡ ﺑﺈﺩﺍﺭﺓ‬
‫ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﺍﳌﻠﻔﺎﺕ‪ ،‬ﻭﻫﻮ ﻣﺸﺘﺮﻙ ﺑﲔ ﻛﻞ ﺣﻮﺍﺳﻴﺐ ﺍﻟﺰﺑﺎﺋﻦ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺸﺒﻜﺔ ‪ ،LAN‬ﻳ‪‬ﺴﺘﺨﺪﻡ‬
‫ﻛﻞ ﳐﺪﻡ ﻣﻠﻔﺎﺕ ﻛﻘﺮﺹ ﺻﻠﺐ ﺇﺿﺎﰲ ﻟﻜﻞ ﻣﻦ ﻫﺬﻩ ﺍﳊﻮﺍﺳﻴﺐ‪ ،‬ﻓﻌﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ‪ ،‬ﳝﻜﻦ ﺃﻥ‬
‫ﻳﺘﻌﺮﻑ ﺣﺎﺳﺒﻚ ﺍﻟﺸﺨﺼﻲ ﻋﻠﻰ ﺍﻟﻘﺮﺹ ﺍﳌﻨﻄﻘﻲ ‪ ،F‬ﻭﺍﻟﺬﻱ ﻫﻮ ﰲ ﺍﳊﻘﻴﻘﺔ ﺣﺠﻢ ﻣﻦ ﺍﻟﻘﺮﺹ‬
‫ﺍﳌﺨﺰﻥ ﻋﻠﻰ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺍﳌﺮﺗﺒﻂ ﺑﺎﻟﺸﺒﻜﺔ‪ ،‬ﻓﺎﻟﱪﺍﻣﺞ ﰲ ﺣﺎﺳﺒﻚ ﺍﻟﺸﺨﺼﻲ ﺗ‪‬ﺸﲑ ﺇﱃ ﻣﻠﻔﺎﺕ ﻋﻠﻰ‬
‫ﺍﻟﺴﻮﺍﻗﺔ ﻣﻊ ﲢﺪﻳﺪ ﺍﳌﺴﺎﺭ ﺑﺸﻜﻞ ﳕﻮﺫﺟﻲ ﻣﺘﻀﻤﻨﹰﺎ ﻫﺬﻩ ﺍﻟﺴﻮﺍﻗﺔ ﻭﺃﻳﺔ ﳎﻠﺪﺍﺕ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺍﺳﻢ‬
‫›>‪a K›f8‬‬ ‫‪520‬‬

‫ﺍﳌﻠﻒ‪ .‬ﻳ‪‬ﻄﻠﻖ ﰲ ﺑﻨﻴﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ‪ ،‬ﻋﻠﻰ ﻛﻞ ﺣﺎﺳﺐ ﻣﻦ ﺣﻮﺍﺳﻴﺐ ﺍﻟﺰﺑﺎﺋﻦ‪ ،‬ﺍﺳﻢ ﺍﻟﺰﺑﻮﻥ ﺍﻟﺜﻘﻴﻞ‬
‫‪ ،fat client‬ﺣﻴﺚ ﺗﺘﻢ ﻣﻌﻈﻢ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﻋﻨﺪ ﺍﻟﺰﺑﻮﻥ ﻋﻮﺿﹰﺎ ﻋﻦ ﺍﳌﺨﺪﻡ‪.‬‬

‫‪ΕΎϔϠϤϟ΍ ϡΪΨϣ ΝΫϮϤϧ‬‬ ‫‪(9-2) ϞϜθϟ΍‬‬

‫ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﻳﺴﻤﺢ ﻟﻜﻞ ﺣﺎﺳﺐ ﺯﺑﻮﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻋﻨﺪﻣﺎ‬
‫ﻳﻜﻮﻥ ﺑﺮﻧﺎﻣﺞ ﺗﻄﺒﻴﻖ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻳﻌﻤﻞ ﻋﻠﻰ ﺫﻟﻚ ﺍﳊﺎﺳﺐ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﻫﻨﺎﻙ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬
‫ﻭﺍﺣﺪﺓ ﻭﻟﻜﻦ ﻫﻨﺎﻙ ﻋﺪﺓ ﻧﺴﺦ ‪ DBSM‬ﻋﺎﻣﻠﺔ ﺑﺼﻮﺭﺓ ﻣﺘﺪﺍﺧﻠﺔ‪.‬‬
‫ﺇﻥ ﺍﻟﺴﻤﺔ ﺍﻷﺳﺎﺳﻴﺔ ﻟﺒﻨﻴﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﻫﻲ ﺃﻥ ﻛﻞ ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺗﺘﻢ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ‬
‫ﺍﻟﺰﺑﺎﺋﻦ ﻭﻟﻴﺲ ﻋﻠﻰ ﺍﳌﺨﺪﻡ‪ ،‬ﺣﻴﺚ ﺃﻥ ﺩﻭﺭ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﻫﻮ ﻭﺳﻴﻂ ﲣﺰﻳﻦ ﺑﻴﺎﻧﺎﺕ ﻣﺸﺘﺮﻙ‪ .‬ﺗﻘﻮﻡ‬
‫ﺍﻟﱪﳎﻴﺔ ﺍﻟﱵ ﺗﻌﻤﻞ ﻋﻠﻰ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺑﻮﺿﻊ ﻃﻠﺒﺎﺕ ﺍﻟﻮﻟﻮﺝ ﰲ ﺭﺗﻞ ﻭﻟﻜﻦ ﻳﻘﻊ ﻋﻠﻰ ﻋﺎﺗﻖ ﺑﺮﻧﺎﻣﺞ‬
‫ﺍﻟﺘﻄﺒﻴﻖ ﰲ ﻛﻞ ﺣﺎﺳﺐ ﺯﺑﻮﻥ )ﺍﻟﺬﻱ ﻳﻌﻤﻞ ﻋﻠﻰ ﻧﺴﺨﺔ ﻣﻦ ‪ (DBMS‬ﺍﻟﺘﺤﻜﻢ ﰲ ﻋﻤﻠﻴﺎﺕ ﺇﺩﺍﺭﺓ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﻓﻌﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﺍﺧﺘﺒﺎﺭ ﺃﻣﻦ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﺇﻏﻼﻕ ﺍﳌﻠﻔﺎﺕ ﻭﻗﻔﻞ ﺍﻟﺴﺠﻼﺕ ﻛﻠﻬﺎ ﺗﺘﻢ ﻋﻠﻰ‬
‫ﺣﻮﺍﺳﺐ ﺍﻟﺰﺑﺎﺋﻦ ﰲ ﻫﺬﻩ ﺍﻟﺒﻴﺌﺔ‪.‬‬
‫‪521‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫‪žK>A&›žKWáM£¹Wà‬‬
‫ﻳﻮﺟﺪ ﻫﻨﺎﻙ ﺛﻼﺙ ﻋﻴﻮﺏ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﳐﺪﻣﺎﺕ ﺍﳌﻠﻔﺎﺕ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺎﺕ ﺍﶈﻠﻴﺔ ‪ ،LAN‬ﺍﻟﻌﻴﺐ‬
‫ﺍﻷﻭﻝ ﻫﻮ ﺗﻮﻟﻴﺪ ﺣﺮﻛﺔ ﻛﺒﲑﺓ ﻟﻠﺒﻴﺎﻧﺎﺕ ﻋﱪ ﺍﻟﺸﺒﻜﺔ‪ ،‬ﻓﻌﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﻋﻨﺪﻣﺎ ﻳﺮﻳﺪ ﺑﺮﻧﺎﻣﺞ ﺗﻄﺒﻴﻘﻲ‬
‫ﻳﻌﻤﻞ ﻋﻠﻰ ﺣﺎﺳﺐ ﺯﺑﻮﻥ ﰲ ﻣﻔﺮﻭﺷﺎﺕ ‪ Pine Valley‬ﺍﻟﻮﻟﻮﺝ ﳌﻨﺘﺠﺎﺕ ﺧﺸﺐ ﺍﻟﺒﻠﻮﻁ ﻓﺈﻧﻪ ﻳﺘﻢ‬
‫ﻧﻘﻞ ﺟﺪﻭﻝ ﺍﳌﻨﺘﺠﺎﺕ ﺑﺎﻟﻜﺎﻣﻞ ﺇﱃ ﺣﺎﺳﺐ ﺍﻟﺰﺑﻮﻥ ﺣﻴﺚ ﻳﺘﻢ ﻣﺴﺢ ﻫﺬﺍ ﺍﳉﺪﻭﻝ ﻭﺇﳚﺎﺩ‬
‫ﺍﻟﺘﺴﺠﻴﻼﺕ ﺍﻟﻘﻠﻴﻠﺔ ﺍﳌﻼﺋﻤﺔ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﻳﻘﻮﻡ ﺍﳌﺨﺪﻡ ﺑﺄﻋﻤﺎﻝ ﻗﻠﻴﻠﺔ ﺟﺪﹰﺍ ﰲ ﺣﲔ ﺃﻥ ﺍﻟﺰﺑﻮﻥ ﻳﻨﺸﻐﻞ‬
‫ﺑﺎﳌﻌﺎﳉﺔ ﺍﻟﺸﺎﻣﻠﺔ ﻟﻠﺒﻴﺎﻧﺎﺕ ﻭﺗﻨﻘﻞ ﺍﻟﺸﺒﻜﺔ ﻛﺘﻞ ﺑﻴﺎﻧﺎﺕ ﺿﺨﻤﺔ‪ .‬ﻭﻫﻜﺬﺍ ﺗ‪‬ﻠﻘﻲ ﺷﺒﻜﺔ ‪ LAN‬ﺍﳌﺒﻴﻨﺔ‬
‫ﻼ ﻛﺒﲑﹰﺍ ﻋﻠﻰ ﻋﺎﺗﻖ ﺣﻮﺍﺳﻴﺐ ﺍﻟﺰﺑﺎﺋﻦ ﻟﻴﻘﻮﻣﻮﺍ ﺑﺘﻨﻔﻴﺬ ﻣﻬﺎﻡ ﳚﺐ ﺃﻥ ﺗﻨﻔﺬ ﻋﻨﺪ ﻛﻞ‬ ‫ﻋﻠﻰ ﺍﻟﺰﺑﺎﺋﻦ ﲪ ﹰ‬
‫ﺍﻟﺰﺑﺎﺋﻦ ﻭﺗﻮﻟﻴﺪ ﻋﻤﻴﻞ ﺯﺍﺋﺪ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﺛﺎﻧﻴﺎﹰ‪ ،‬ﳚﺐ ﺃﻥ ﲣﺼﺺ ﻛﻞ ﳏﻄﺔ ﻋﻤﻞ ﺯﺑﻮﻥ ﺫﺍﻛﺮﺓ‬
‫ﻟﻠﻨﺴﺨﺔ ﺍﻟﻜﺎﻣﻠﺔ ﻣﻦ ‪ ،DBMS‬ﻭﻫﺬﺍ ﻳﻌﲏ ﺃﻥ ﻫﻨﺎﻙ ﺫﺍﻛﺮﺓ ﺃﻗﻞ ﻟﻠﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﻋﻠﻰ ﺣﺎﺳﺐ ﺍﻟﺰﺑﻮﻥ‪،‬‬
‫ﻭﺃﻳﻀﹰﺎ ﺯﻳﺎﺩﺓ ﺣﺠﻢ ﺍﻟـ ‪ RAM‬ﻋﻠﻰ ﺍﳊﺎﺳﺐ ﺍﻟﺸﺨﺼﻲ ﺳﺘﺤﺴﻦ ﺍﻷﺩﺍﺀ ﻋﻦ ﻃﺮﻳﻖ ﺯﻳﺎﺩﺓ ﺣﺠﻢ ﺍﻟﺒﻴﺎﻧﺎﺕ‬
‫ﺍﳌﺨﺰﻧﺔ ﻋﻠﻰ ﺍﳊﺎﺳﺐ ﺑﻴﻨﻤﺎ ﺗﺘﻢ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺫﻟﻚ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻛﻞ ﺯﺑﻮﻥ ﺃﻛﺜﺮ‬
‫ﻓﻌﺎﻟﻴﺔ ﻟﻴﻜﻮﻥ ﻟﺪﻳﻪ ﺯﻣﻦ ﺍﺳﺘﺠﺎﺑﺔ ﻣﻨﺎﺳﺐ ﻭﺫﻟﻚ ﻷﻧﻪ ﻳ‪‬ﻠﻘﻲ ﻋﻠﻰ ﳏﻄﺔ ﻋﻤﻞ ﺍﻟﺰﺑﺎﺋﻦ ﺍﳉﺰﺀ ﺍﻷﻛﱪ‬
‫ﻣﻦ ﺍﻟﻌﻤﻞ‪ ،‬ﻭﰲ ﺍﳌﻘﺎﺑﻞ ﻻ ﳛﺘﺎﺝ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺇﱃ ‪ RAM‬ﻛﺒﲑﺓ ﺣﻴﺚ ﺃﻧﻪ ﻳﻘﻮﻡ ﺑﻌﻤﻞ ﺃﻗﻞ‪.‬‬
‫ﺛﺎﻟﺜﹰﺎ‪ :‬ﻭﺃﻫﻢ ﻋﻴﺐ ﰲ ﻫﺬﻩ ﺍﻟﺒﻴﺌﺔ ﺃﻧﻪ ﳚﺐ ﻋﻠﻰ ﻛﻞ ﻧﺴﺨﺔ ‪ DBMS‬ﰲ ﻛﻞ ﳏﻄﺔ ﻋﻤﻞ ﺃﻥ ﺗﺪﻳﺮ‬
‫ﺗﻜﺎﻣﻞ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺸﺘﺮﻛﺔ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺫﻟﻚ ﳚﺐ ﻋﻠﻰ ﻛﻞ ﺑﺮﻧﺎﻣﺞ ﺗﻄﺒﻴﻘﻲ ﺃﻥ ﻳﺘﻌﺮﻑ‬
‫ﻋﻠﻰ )ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ( ﺍﻷﻗﻔﺎﻝ ﻭﺍﻻﻫﺘﻤﺎﻡ ﺑﺘﻬﻴﺌﺔ ﺍﻷﻗﻔﺎﻝ ﺍﳌﻼﺋﻤﺔ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﱪﳎﻮ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺣﺬﺭﻳﻦ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺤﺎﻻﺕ ﺍﻟﺪﻗﻴﻘﺔ ﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﺗﻈﻬﺮ ﰲ ﺑﻴﺌﺔ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻣﺘﻌﺪﺩﺓ‬
‫ﺍﳌﺴﺘﺨﺪﻣﲔ‪ ،‬ﻭﳚﺐ ﻋﻠﻴﻬﻢ ﻓﻬﻢ ﻛﻴﻔﻴﺔ ﺗﻔﺎﻋﻞ ﺗﻄﺒﻴﻘﻬﻢ ﻣﻊ ‪ DBMS‬ﻣﻦ ﺣﻴﺚ ﺍﻟﺘﺰﺍﻣﻦ‬
‫ﻭﺍﻻﺳﺘﺮﺟﺎﻉ ﻭﻗﻮﺍﻋﺪ ﺍﻷﻣﻦ ﻭﺃﺣﻴﺎﻧﹰﺎ ﳚﺐ ﺃﻥ ﻳﱪﳎﻮﺍ ﺑﻌﺾ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻋﺪ ﺿﻤﻦ ﺗﻄﺒﻴﻘﻬﻢ‪.‬‬

‫‪ΐγ΍ϮΣ ΓΪϋ ϞΒϗ Ϧϣ ϪϴϠϋ ΔϛέΎθϤϟ΍ ϢΘΗϭ ΕΎϔϠϤϟ΍ ΕΎϴϠϤϋ ήϳΪϳ ίΎϬΟ Ϧϋ ΓέΎΒϋ :ΕΎϔϠϤϟ΍ ϡΪΨϣ‬‬

‫‪.LAN ΔϜΒθΑ ΔϠμΘϣ ΔϴμΨη‬‬

‫‪Ϊϋ΍Ϯϗ ϖτϨϣϭ ΕΎϘϴΒτΘϟ΍ϭ νήόϟ΍ ϖτϨϣ ΔΠϟΎόϣ Ϧϋ ϝϭΆδϣ ϥϮΑί ΏϮγΎΣ Ϯϫ :ϢΨπϟ΍ ϞϴϤόϟ΍‬‬

‫‪.DBMS ˰ϟ΍ ϡΎϬϣ Ϣψόϣϭ ϞϤόϟ΍‬‬


‫›>‪a K›f8‬‬ ‫‪522‬‬

‫‪žKE:<&›W K¶WáMEC‬‬
‫ﺗﻠﺖ ﺍﻟﻄﺮﻕ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺒﲎ ﳐﺪﻡ‪-‬ﺯﺑﻮﻥ ﻃﺮﻳﻘﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ‪ ،‬ﰲ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺗﻜﻮﻥ‬
‫ﳏﻄﺎﺕ ﻋﻤﻞ ﺍﻟﺰﺑﺎﺋﻦ ﻣﺴﺆﻭﻟﺔ ﻋﻦ ﺇﺩﺍﺭﺓ ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﲟﺎ ﰲ ﺫﻟﻚ ﻣﻦ ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ ﻭﻣﻨﻄﻖ‬
‫ﻣﻌﺎﳉﺔ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻭﻣﻨﻄﻖ ﻗﻮﺍﻋﺪ ﺍﻟﻌﻤﻞ‪ ،‬ﰲ ﺣﲔ ﻳﻜﻮﻥ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻣﺴﺆﻭ ﹰﻻ ﻋﻦ ﲣﺰﻳﻦ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﻟﻮﻟﻮﺝ ﺇﻟﻴﻬﺎ ﻭﻣﻌﺎﳉﺘﻬﺎ‪ ،‬ﺍﻟﺸﻜﻞ )‪ (9-3‬ﻳﺒﲔ ﺑﻨﻴﺔ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﳕﻮﺫﺟﻴﺔ‪.‬‬
‫ﻳﺘﻢ ﺗﻘﻠﻴﻞ ﻋﺐﺀ ﺍﻟﺸﺒﻜﺔ ‪ LAN‬ﻋﻨﺪ ﺗﻮﺿﻊ ‪ DBMS‬ﻋﻠﻰ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻷﻧﻪ ﻳﺘﻢ ﺇﺭﺳﺎﻝ‬
‫ﺍﻟﺴﺠﻼﺕ ﺍﳌﻮﺍﻓﻘﺔ ﻟﻠﻤﻌﻴﺎﺭ ﺍﳌﻄﻠﻮﺏ ﻓﻘﻂ ﺇﱃ ﳏﻄﺔ ﺍﻟﺰﺑﻮﻥ ﺑﺪ ﹰﻻ ﻣﻦ ﺇﺭﺳﺎﻝ ﻛﺎﻣﻞ ﻣﻠﻔﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬

‫‪ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϰϟ· ϝϮλϮϟ΍ϭ ΔΠϟΎόϣϭ ϦϳΰΨΗ Ϧϋ ϝϭΆδϣ ΐγΎΣ Ϯϫ :ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϡΪΨϣ‬‬

‫‪.ΔϘΒτϟ΍ Δϴ΋ΎϨΛ ϥϮΑί - ϡΪΨϣ ΔΌϴΑ ϰϟ· ΓέΎηϺϟ ΢ϠτμϤϟ΍ ΍άϫ ξόΒϟ΍ ϡΪΨΘδϳϭ ˬϥϮΑί ϡΪΨϣ ΔΌϴΑ ϲϓ‬‬

‫‪ΕΎϴτόϣ ΓΪϋΎϗ ϡΪΨϣ ΔϴϨΑ‬‬ ‫‪(9-3) ϞϜθϟ΍‬‬

‫ﻳﺸﲑ ﺍﻟﺒﻌﺾ ﺇﱃ ﻭﻇﺎﺋﻒ ﺍﻟـ ‪ DBMS‬ﺍﳌﺮﻛﺰﻳﺔ ﺑﻮﻇﺎﺋﻒ ﺍﻟﻄﺮﻑ ﺍﳋﻠﻔﻲ )‪ (back-end‬ﰲ ﺣﲔ‬
‫ﻳﻄﻠﻘﻮﻥ ﻋﻠﻰ ﺍﻟﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﺍﳌﻮﺟﻮﺩﺓ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ ﺍﻟﺰﺑﺎﺋﻦ ﺑﱪﺍﻣﺞ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ )‪.(front-end‬‬
‫‪523‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺇﻥ ﻧﻘﻞ ‪ DBMS‬ﺇﱃ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻟﻪ ﻓﻮﺍﺋﺪ ﻋﺪﻳﺪﺓ‪ ،‬ﻓﻔﻲ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﻳﺘﻄﻠﺐ ﳐﺪﻡ ﻗﺎﻋﺪﺓ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻓﻘﻂ ﻗﺪﺭﺓ ﻣﻌﺎﳉﺔ ﻣﻼﺋﻤﺔ ﻹﺩﺍﺭﺓ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺣﻴﺚ ﺗﻜﻮﻥ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﳐﺰﻧﺔ‬
‫ﻋﻠﻰ ﺍﳌﺨﺪﻡ ﻭﻟﻴﺴﺖ ﻋﻨﺪ ﺍﻟﺰﺑﺎﺋﻦ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﳝﻜﻦ ﺃﻥ ﻳ‪‬ﻀﺒﻂ )ﺃﻭ ﻳ‪‬ﻌﺪ‪‬ﻝ( ﻟﺘﺤﺴﲔ ﻓﻌﺎﻟﻴﺔ ﺃﺩﺍﺓ ﻣﻌﺎﳉﺔ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺳﻴﺘﻢ ﺗﻘﻠﻴﻞ ﲢﻤﻴﻞ ﺍﻻﺗﺼﺎﻝ ﰲ ﺣﺎﻝ ﻛﺎﻧﺖ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺮﺳﻠﺔ ﻋﱪ ﺍﻟﺸﺒﻜﺔ ‪ LAN‬ﻗﻠﻴﻠﺔ‪.‬‬
‫ﺗﻨﻔﺬ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺮﺧﻴﺺ ﻭﻓﺤﺺ ﺍﻟﺘﻜﺎﻣﻞ ﻭﺻﻴﺎﻧﺔ ﻗﺎﻣﻮﺱ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﻻﺳﺘﻌﻼﻡ ﻭﻣﻌﺎﳉﺔ ﺍﻟﺘﺤﺪﻳﺚ‬
‫ﻛﻠﻬﺎ ﻋﻠﻰ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﲣﺪﻡ ﻣﺸﺎﺭﻳﻊ ﳐﺪﻡ ‪ -‬ﺯﺑﻮﻥ ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﺑﻨﻴﺔ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﺃﻭ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻟﺘﻜﻮﻥ ﺗﻄﺒﻴﻘﺎﺕ ﺇﺩﺍﺭﻳﺔ ﺗﺪﻋﻢ ﻋﺪﺩ ﺻﻐﲑ ﻧﺴﺒﻴﹰﺎ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻣﲔ‪ .‬ﻣﺜﻞ ﻫﺬﻩ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻟﻴﺴﺖ ﺫﺍﺕ ﺧﻄﻮﺭﺓ ﻭﺗﻜﻮﻥ ﻧﺎﺟﺤﺔ ﺣﻴﺚ ﺣﺠﻢ ﺍﳌﻨﺎﻗﻼﺕ ﺻﻐﲑ ﻭﺍﻟﺘﻮﺍﺟﺪ ﺍﻟﻔﻮﺭﻱ‬
‫ﻏﲑ ﻣﻬﻢ ﻭﺍﻷﻣﻦ ﻟﻴﺲ ﻣﻦ ﺃﻫﻢ ﺍﻷﻭﻟﻮﻳﺎﺕ‪ ،‬ﻛﻤﺎ ﲢﺎﻭﻝ ﺍﻟﺸﺮﻛﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﻟﻔﻮﺍﺋﺪ ﺍﳌﺘﻮﻗﻌﺔ ﻣﻦ‬
‫ﻣﺸﺎﺭﻳﻊ ﳐﺪﻡ‪-‬ﺯﺑﻮﻥ )ﻣﺜﻞ ﺍﻟﺘﻮﺳﻌﻴﺔ ﻭﺍﳌﺮﻭﻧﺔ ﻭﺍﻟﺘﻜﻠﻔﺔ ﺍﳌﻨﺨﻔﻀﺔ(‪ .‬ﻓﺈﻧﻪ ﳚﺐ ﻋﻠﻴﻬﺎ ﺇﳚﺎﺩ ﻃﺮﻕ‬
‫ﺟﺪﻳﺪﺓ ﰲ ﺑﲎ ﳐﺪﻡ‪-‬ﺯﺑﻮﻥ‪.‬‬
‫ﺇﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ )ﻭﺍﻟﱵ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺃﺟﺰﺍﺀ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﲢﻘﻖ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ‪،‬‬
‫ﺗﻜﻮﻥ ﺿﻤﻦ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ( ﺗﺪﻓﻊ ﺑﻨﻴﺔ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺑﺎﲡﺎﻩ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺇﺩﺍﺭﺓ‬
‫ﺗﻄﺒﻴﻘﺎﺕ ﻋﻤﻞ ﺃﻛﺜﺮ ﺧﻄﻮﺭﺓ )‪ ،(Quinlan 1995‬ﻭﻛﻤﺎ ﺑﲔ ‪ Quinlan‬ﻓﺈﻥ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﳍﺎ‬
‫ﺍﳌﻴﺰﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﲢﺴﻦ ﺍﻷﺩﺍﺀ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﻌﻠﻴﻘﺎﺕ ‪ SQL‬ﺍﳌﺘﺮﲨﺔ‪.‬‬ ‫‪x‬‬

‫ﲣﻔﻴﻒ ﺍﻟﻌﺐﺀ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﺣﻴﺚ ﺗﻨﺘﻘﻞ ﺍﳌﻌﺎﳉﺔ ﻣﻦ ﺍﻟﺰﺑﻮﻥ ﺇﱃ ﺍﳌﺨﺪﻡ‪.‬‬ ‫‪x‬‬

‫ﺍﳊﻤﺎﻳﺔ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﻗﺎﺑﻠﺔ ﻟﻠﻮﻟﻮﺝ‪ .‬ﺗﺘﺤﺴﻦ ﺃﻛﺜﺮ ﻓﻴﻤﺎ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺒﻴﺎﻧﺎﺕ‬ ‫‪x‬‬
‫ﻭﺍﻟﺸﻴﻔﺮﺓ ﺗﺘﻨﻘﻞ ﺇﱃ ﺍﳌﺨﺪﻡ ﺑﻌﻴﺪﹰﺍ ﻋﻦ ﻭﻟﻮﺝ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﻨﻬﺎﺋﻲ‪.‬‬
‫ﲢﺴﲔ ﺗﻜﺎﻣﻞ ﺍﳌﻌﻄﻴﺎﺕ ﻋﻨﺪﻣﺎ ﺗﻘﻮﻡ ﻋﺪﺓ ﺗﻄﺒﻴﻘﺎﺕ ﺑﺎﻟﻮﻟﻮﺝ ﺇﱃ ﻧﻔﺲ ﺍﻹﺟﺮﺍﺀ ﺍﳌﺨﺰﻥ‪.‬‬ ‫‪x‬‬

‫ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﺃﺩﺕ ﺇﱃ ﻣﺴﺘﺨﺪﻡ ﺧﻔﻴﻒ ﻭﳐﺪﻡ ﺛﻘﻴﻞ‪.‬‬ ‫‪x‬‬

‫ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ‪ :stored procedure‬ﻋﺒﺎﺭﺓ ﻋﻦ ﳎﺘﺰﺃ ﺑﺮﳎﻲ ﻣﻜﺘﻮﺏ ﻏﺎﻟﺒﹰﺎ ﺑﻠﻐﺎﺕ ﻟﺸﺮﻛﺎﺕ ﻣﻌﻴﻨﺔ‬
‫ﻣﺜﻞ ﻟﻐﺔ ‪ PL/SQL‬ﻟﺸﺮﻛﺔ ‪ Oracle‬ﺃﻭ ﻟﻐﺔ ‪ Transact-SQL‬ﻟﺸﺮﻛﺔ ‪ ،Sybase‬ﺗﻘﻮﻡ ﻫﺬﻩ ﺍﻹﺟﺮﺍﺀﺍﺕ‬
‫ﺑﺘﺤﻘﻴﻖ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻭ ﻗﻮﺍﻋﺪ ﺍﻟﻌﻤﻞ ﻭﲣﺰﻥ ﰲ ﺍﳌﺨﺪﻡ ﺣﻴﺚ ﺗﻨﻔﺬ ﻫﻨﺎﻙ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﺳﺘﺪﻋﺎﺅﻫﺎ‪.‬‬
‫ﻭﻟﻜﻦ ﺗﺄﺧﺬ ﻛﺘﺎﺑﺔ ﺇﺟﺮﺍﺀﺍﺕ ﳐﺰﻧﺔ ﻭﻗﺘﹰﺎ ﺃﻃﻮﻝ ﻹﻧﺸﺎﺀ ﺗﻄﺒﻴﻖ ﻣﻦ ﻓﻴﺠﻮﺍﻝ ﺑﻴﺴﻚ ﺃﻭ ‪،Power builder‬‬
‫ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺫﻟﻚ ﻓﺈﻧﻪ ﻣﻠﻜﻴﺔ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﲢﺪ ﻣﻦ ﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ ﻭﲡﻌﻞ ﻣﻦ ﺍﻟﺼﻌﺐ ﺗﻐﻴﲑ‬
‫›>‪a K›f8‬‬ ‫‪524‬‬

‫ﺍﻟـ ‪ DBMS‬ﺩﻭﻥ ﺇﻋﺎﺩﺓ ﻛﺘﺎﺑﺔ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ‪ ،‬ﻭﺃﻳﻀﹰﺎ ﳚﺐ ﺃﻥ ﻳ‪‬ﺰﻭ‪‬ﺩ ﻛﻞ ﺯﺑﻮﻥ ﺑﺎﻟﺘﻄﺒﻴﻖ‬
‫ﺍﻟﺬﻱ ﺳﻴ‪‬ﺴﺘﺨﺪﻡ ﰲ ﺫﻟﻚ ﺍﳌﻮﻗﻊ‪ ،‬ﳝﻴﻞ ﺍﻷﺩﺍﺀ ﺇﱃ ﺍﻻﳓﺪﺍﺭ ﻛﻠﻤﺎ ﺯﺍﺩ ﻋﺪﺩ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺍﳌﺘﺼﻠﲔ‪،‬‬
‫ﻭﺑﺬﻟﻚ ﻓﺈﻥ ﲢﺪﻳﺚ ﺍﻟﺘﻄﺒﻴﻖ ﺳﻮﻑ ﻳﺘﻢ ﻟﻜﻞ ﻣﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺣﺪﺓ‪ ،‬ﻫﻞ ﻫﺬﻩ ﺍﻟﻌﻴﻮﺏ ﰲ ﺑﻨﻴﺔ ﳐﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺃﺩﺕ ﺇﱃ ﺭﻭﺍﺝ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬

‫›‪žK?:›MEuMEC‬‬
‫ﺗﺘﻀﻤﻦ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﻃﺒﻘﺔ ﳐﺪﻡ ﺁﺧﺮ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﻃﺒﻘﺔ ﺍﻟﺰﺑﺎﺋﻦ ﻭﻃﺒﻘﺎﺕ ﳐﺪﻡ ﻗﺎﻋﺪﺓ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻛﻤﺎ ﰲ ﺍﻟﺸﻜﻞ )‪ ،(9-4‬ﺗﺸﲑ ﻫﺬﻩ ﺍﻹﻋﺪﺍﺩﺍﺕ ﺇﱃ ﺑﲎ ﳐﺪﻡ‪-‬ﺯﺑﻮﻥ ﳏﺴﻨﺔ ﺃﻭ ﻣﺘﻌﺪﺩﺓ‬
‫ﺍﻟﻄﺒﻘﺎﺕ ﺃﻭ ﺫﺍﺕ ‪ n‬ﻃﺒﻘﺔ‪ ،‬ﳝﻜﻦ ﺃﻥ ﻳﺴﺘﺨﺪﻡ ﺍﳌﺨﺪﻡ ﺍﻹﺿﺎﰲ ﰲ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﻷﺳﺒﺎﺏ ﳐﺘﻠﻔﺔ‪ ،‬ﻓﻔﻲ‬
‫ﺍﻟﻐﺎﻟﺐ ﺗﻜﻮﻥ ﺍﻟﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﻋﻠﻰ ﻫﺬﺍ ﺍﳌﺨﺪﻡ ﺍﻹﺿﺎﰲ ﻭﰲ ﻫﺬﻩ ﺍﳊﺎﻟﺔ ﻳﺴﻤﻰ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪،‬‬
‫ﺃﻭ ﳝﻜﻦ ﺃﻥ ﳛﻮﻱ ﻫﺬﺍ ﺍﳌﺨﺪﻡ ﺍﻹﺿﺎﰲ ﻋﻠﻰ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﳏﻠﻴﺔ ﰲ ﺣﲔ ﺃﻥ ﺍﳌﺨﺪﻡ ﺍﻵﺧﺮ ﳛﻮﻱ‬
‫ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺍﳌﺆﺳﺴﺔ‪.‬‬

‫‪Client Layer‬‬

‫‪Client‬‬ ‫‪Client‬‬ ‫‪Client‬‬

‫‪Business Layer‬‬

‫‪LAN‬‬
‫‪Application‬‬
‫‪server‬‬

‫‪Database Layer‬‬
‫‪Database‬‬ ‫‪Data‬‬
‫‪server‬‬

‫‪ΕΎϘΒτϟ΍ ΔϴΛϼΛ ΔϴϨΒϟ΍‬‬ ‫‪(9-4) ϞϜθϟ΍‬‬


‫‪525‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻳﺸﺎﺭ ﺇﱃ ﺍﻟﺘﻮﺻﻴﻔﲔ ﺍﻟﺴﺎﺑﻘﲔ ﻛﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺔ ﻟﻜﻦ ﻋﻤﻞ ﻛﻞ ﻭﺍﺣﺪ ﳜﺘﻠﻒ ﻋﻦ ﺍﻵﺧﺮ ﻭﻛﻞ‬
‫ﺗﻮﺻﻴﻒ ﻣﻼﺋﻢ ﳊﺎﻻﺕ ﻣﻌﻴﻨﺔ‪.‬‬
‫ﺗﺘﻤﻴﺰ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﻋﻦ ﺍﻟﺒﻨﻴﺔ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺔ ﺑﺰﻳﺎﺩﺓ ﻛﻞ ﻣﻦ ﺍﻟﺘﻮﺳﻌﻴﺔ ﻭﺍﳌﺮﻭﻧﺔ ﻭﺍﻷﺩﺍﺀ ﻭﻗﺎﺑﻠﻴﺔ‬
‫ﺇﻋﺎﺩﺓ ﺍﻻﺳﺘﺨﺪﺍﻡ‪ ،‬ﳑﺎ ﳚﻌﻞ ﺍﻟﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﺍﳋﻴﺎﺭ ﺍﳌﻔﻀﻞ ﺑﺎﻟﻨﺴﺒﺔ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻹﻧﺘﺮﻧﺖ‬
‫ﻭﺃﻧﻈﻤﺔ ﻣﻌﻠﻮﻣﺎﺕ ‪ ،Net-Centric‬ﻭﺳﻮﻑ ﻧﻨﺎﻗﺶ ﻣﻴﺰﺍﺕ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻴﻤﺎ ﻳﻠﻲ‪.‬‬
‫ﺗﻜﻮﻥ ﺷﻴﻔﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﰲ ﺑﻌﺾ ﺍﻟﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﳐﺰﻧﺔ ﰲ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ ،‬ﻭﺑﺬﻟﻚ ﺗﺘﺤﻘﻖ‬
‫ﻧﻔﺲ ﺍﻟﻔﻮﺍﺋﺪ ﻋﻨﺪ ﻭﺿﻊ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﰲ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﺍﻟﺒﻨﻴﺔ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺔ‪ ،‬ﺇﻥ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﳐﺪﻡ ﺗﻄﺒﻴﻘﺎﺕ ﳛﺴﻦ ﺃﻳﻀﹰﺎ ﺍﻷﺩﺍﺀ ﻋﻦ ﻃﺮﻳﻖ ﺍﺳﺘﺨﺪﺍﻡ ﺷﻴﻔﺮﺓ ﺁﻟﺔ ﺻﺤﻴﺤﺔ ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﻨﻘﻞ‬
‫ﺍﳌﹸﻴﺴﺮﺓ ﻟﺸﻴﻔﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﺇﱃ ﻣﻨﺼﺎﺕ ﻋﻤﻞ )ﺃﻧﻈﻤﺔ ﺗﺸﻐﻴﻞ( ﺃﺧﺮﻯ ﻭﺗﻘﻠﻴﻞ ﺍﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﺍﻟﻠﻐﺎﺕ‬
‫ﺫﺍﺕ ﺍﳌﻠﻜﻴﺔ ﻣﺜﻞ ‪.SQL/PLUS‬‬

‫‪ϥϮΑΰϟ΍ ΔϘΒσ :ΕΎϘΒσ ΙϼΛ ϰϠϋ ϱϮΘΤϳ ϥϮΑί–ϡΪΨϣ ϒϴλϮΗ Ϧϋ ΓέΎΒϋ ϲϫ :ΕΎϘΒτϟ΍ ΔϴΛϼΛ ΔϴϨΒϟ΍‬‬
‫‪ϱϮΘΤΗ ΔϣΎόϟ΍ ΕΎϔϴλϮΘϟ΍ ϥΈϓ ΔϴόϴΒτϟ΍ ΔϟΎΤϟ΍ ϲϓ ϡΪΨϤϟ΍ ΕΎϘΒσ ϒϠΘΨΗ ΎϤϨϴΑ ˬϡΪΨϣ ϲΘϘΒσϭ‬‬

‫‪.ΕΎϘϴΒτΗ ϡΪΨϣ‬‬

‫ﺗﻌﺎﰿ ﺍﻷﻋﻤﺎﻝ ﰲ ﺍﻟﻜﺜﲑ ﻣﻦ ﺍﳊﺎﻻﺕ ﰲ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻋﻮﺿﹰﺎ ﻋﻦ ﺣﻮﺍﺳﻴﺐ ﺍﻟﺰﺑﺎﺋﻦ ﺃﻭ ﳐﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﳑﺎ ﻳﺆﺩﻱ ﺇﱃ ﻣﺴﺘﺨﺪﻡ ﺧﻔﻴﻒ‪.‬‬
‫ﺇﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺘﺼﻔﺤﺎﺕ ﺍﻹﻧﺘﺮﻧﺖ ﻋﻨﺪ ﺍﻟﺰﺑﺎﺋﻦ ﻟﻠﻮﻟﻮﺝ ﺇﱃ ﺻﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﻫﻮ ﻣﺜﺎﻝ ﻣﻌﺎﺻﺮ ﻋﻦ‬
‫ﺑﻨﻴﺔ ﺍﻟﻌﻤﻴﻞ ﺍﳋﻔﻴﻒ‪.‬‬
‫ﺃﺻﺒﺤﺖ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﻋﻠﻰ ﺍﳌﺨﺪﻡ ﻭﺍﳌﻨﻔﺬﺓ ﻋﻠﻴﻪ ﺩﻭﻥ ﺍﻟﺘﺤﻤﻴﻞ ﺇﱃ ﺍﻟﻌﻤﻴﻞ ﺷﺎﺋﻌﺔ‪.‬‬
‫ﻭﺑﺬﻟﻚ ﻳﺘﻄﻠﺐ ﲢﺪﻳﺚ ﺍﻟﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﲢﻤﻴﻞ ﺍﻹﺻﺪﺍﺭ ﺍﳉﺪﻳﺪ ﻋﻠﻰ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﺪﻝ ﲢﻤﻴﻠﻪ‬
‫ﻋﻨﺪ ﻛﻞ ﺯﺑﻮﻥ‪.‬‬
‫ﻟﻠﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻔﻮﺍﺋﺪ‪:‬‬
‫ﻼ‬
‫ﺍﻟﺘﻮﺳﻌﻴﺔ‪ :‬ﺇﻥ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﺃﻛﺜﺮ ﺇﻣﻜﺎﻧﻴﺔ ﻟﻠﺘﻮﺳﻊ ﻣﻦ ﺍﻟﺒﻨﻴﺔ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﻓﻤﺜ ﹰ‬ ‫‪x‬‬
‫ﺍﻟﻄﺒﻘﺔ ﺍﻟﻮﺳﻄﻰ ﳝﻜﻦ ﺃﻥ ﺗ‪‬ﺴﺘﺨﺪﻡ ﻟﺘﺨﻔﻴﻒ ﺍﻟﻌﺐﺀ ﻋﻦ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺑﻮﺍﺳﻄﺔ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﻣﺮﺍﻗﺐ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﳊﻔﻆ ﻋﺪﺩ ﺍﻻﺗﺼﺎﻻﺕ ﺑﺎﳌﺨﺪﻡ‪ ،‬ﻭﳝﻜﻦ ﺃﻥ ﺗﻀﺎﻑ ﳐﺪﻣﺎﺕ‬
‫ﺗﻄﺒﻴﻖ ﻟﺘﻮﺯﻳﻊ ﻣﻌﺎﳉﺔ ﺍﻟﺘﻄﺒﻴﻖ‪ .‬ﺇﻥ ﻣﺮﺍﻗﺐ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﻫﻮ ﺑﺮﻧﺎﻣﺞ ﻳﺘﺤﻜﻢ ﺑﺘﻨﻘﻞ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﲔ‬
‫ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﺨﺪﻣﺎﺕ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﺑﻴﺌﺔ ﻣﺘﻜﺎﻣﻠﺔ ﳌﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﺍﳌﺒﺎﺷﺮﺓ ‪.OLTP‬‬
‫›>‪a K›f8‬‬ ‫‪526‬‬

‫ﺍﳌﺮﻭﻧﺔ ﺍﻟﺘﻘﻨﻴﺔ‪ :‬ﻣﻦ ﺍﻟﺴﻬﻞ ﺗﻐﻴﲑ ﳏﺮﻙ ﺍﻟـ ‪) DBMS‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﻘﻮﺍﺩﺡ ﻭﺍﻹﺟﺮﺍﺀﺍﺕ‬ ‫‪x‬‬
‫ﺍﳌﺨﺰﻧﺔ ﺳﻮﻑ ﲢﺘﺎﺝ ﻹﻋﺎﺩﺓ ﻛﺘﺎﺑﺔ( ﰲ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﺣﻴﺚ ﺃﻥ ﺍﻟﻄﺒﻘﺔ ﺍﻟﻮﺳﻄﻰ‬
‫ﳝﻜﻦ ﺃﻥ ﺗ‪‬ﻨﻘﻞ ﺇﱃ ﻋﺪﺓ ﻣﻨﺼﺎﺕ‪ ،‬ﲡﻌﻞ ﺧﺪﻣﺎﺕ ﺍﻟﻌﺮﺽ ﺍﳌﺒ‪‬ﺴﻄﺔ ﻣﻦ ﺍﻟﺴﻬﻞ ﲢﻘﻴﻖ ﻭﺍﺟﻬﺎﺕ‬
‫ﻣﺘﻨﻮﻋﺔ ﻣﺜﻞ ﻣﺘﺼﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ‪.‬‬
‫ﻛﻠﻔﺔ ﻣﻨﺨﻔﻀﺔ ﻋﻠﻰ ﺍﳌﺪﻯ ﺍﻟﺒﻌﻴﺪ‪.‬‬ ‫‪x‬‬

‫ﺇﻥ ﺍﺳﺘﺨﺪﺍﻡ ﺍﳌﻜﻮﻧﺎﺕ ﺃﻭ ﺍﳋﺪﻣﺎﺕ ﺍﳉﺎﻫﺰﺓ ﰲ ﺍﻟﻄﺒﻘﺔ ﺍﻟﻮﺳﻄﻰ ﻳﻘﻠﻞ ﻣﻦ ﺍﻟﻜﻠﻔﺔ‪ ،‬ﺣﻴﺚ ﺃﻥ‬
‫ﺗﺒﺪﻳﻞ ﺃﺟﺰﺍﺀ ﺿﻤﻦ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻓﻀﻞ ﻣﻦ ﺗﺒﺪﻳﻞ ﺍﻟﺘﻄﺒﻴﻖ ﻛﻠﻪ‪.‬‬
‫ﻣﻄﺎﺑﻘﺔ ﺍﻟﻨﻈﺎﻡ ﳊﺎﺟﺎﺕ ﺍﻟﻌﻤﻞ‪ :‬ﳝﻜﻦ ﺃﻥ ﺗ‪‬ﺒﲎ ﳎﺘﺰﺁﺕ ﺑﺮﳎﻴﺔ ﺟﺪﻳﺪﺓ ﻟﺪﻋﻢ ﺣﺎﺟﺎﺕ ﻋﻤﻞ‬ ‫‪x‬‬
‫ﳏﺪﺩﺓ ﺑﺪ ﹰﻻ ﻣﻦ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻘﺎﺕ ﻛﺎﻣﻠﺔ ﻭﺃﻛﺜﺮ ﻋﻤﻮﻣﻴﺔ‪.‬‬
‫ﲢﺴﲔ ﺧﺪﻣﺔ ﺍﻟﺰﺑﺎﺋﻦ‪ :‬ﳝﻜﻦ ﻟﻠﻌﺪﻳﺪ ﻣﻦ ﺍﻟﻮﺍﺟﻬﺎﺕ ﻟﺪﻯ ﳐﺘﻠﻒ ﺍﻟﺰﺑﺎﺋﻦ ﺍﻟﻮﻟﻮﺝ ﺇﱃ ﻧﻔﺲ‬ ‫‪x‬‬
‫ﺇﺟﺮﺍﺀﺍﺕ ﺍﻟﻌﻤﻞ‪.‬‬
‫ﻣﻴﺰﺍﺕ ﺗﻨﺎﻓﺴﻴﺔ‪ :‬ﺗﻀﻴﻒ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﻻﺳﺘﺠﺎﺑﺔ ﻟﺘﻐﲑﺍﺕ‬ ‫‪x‬‬

‫ﺍﻟﻌﻤﻞ ﺑﺴﺮﻋﺔ ﺑﻮﺍﺳﻄﺔ ﺗﻐﻴﲑ ﺃﺟﺰﺍﺀ ﺻﻐﲑﺓ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﺑﺪ ﹰﻻ ﻣﻦ ﺗﻐﻴﲑ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺄﻛﻤﻠﻪ ﻣﻴﺰﺓ‬
‫ﺗﻨﺎﻓﺴﻴﺔ‪.‬‬
‫ﺗﻘﻠﻴﻞ ﺍﳌﺨﺎﻃﺮﺓ‪ :‬ﻛﻤﺎ ﺳﺒﻖ ﺗﻌﺘﱪ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﲢﻘﻴﻖ ﺃﺟﺰﺍﺀ ﺻﻐﲑﺓ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﺑﺴﺮﻋﺔ‬ ‫‪x‬‬
‫ﻭﻣﺰﺟﻬﺎ ﻣﻊ ﺷﻴﻔﺮﺓ ﺟﺎﻫﺰﺓ ﻣﻦ ﻣﺰﻭﺩ ﺧﻄﺮﹰﺍ ﰲ ﻣﺸﺎﺭﻳﻊ ﺍﻟﺘﻄﻮﻳﺮ ﺍﻟﻮﺍﺳﻌﺔ ﺍﻟﻨﻄﺎﻕ‪.‬‬
‫ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺔ ﻭﺍﻟﺒﻨﻴﺔ ﺫﺍﺕ ﺍﻟـ ‪ n‬ﻃﺒﻘﺔ ﻫﻲ ﺁﺧﺮ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻄﻮﻳﺮ ﰲ ﻃﺮﻕ ﳐﺪﻡ‪-‬ﺯﺑﻮﻥ‪،‬‬
‫ﻭﻣﻦ ﺍﻟﺼﻌﻮﺑﺎﺕ ﺍﻟﱵ ﺭﺍﻓﻘﺖ ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﺃﻭ ﺑﻨﻴﺔ ﺃﻋﻘﺪ ﺗﺘﻀﻤﻦ‪:‬‬
‫ﺗﻜﺎﻟﻴﻒ ﻋﺎﻟﻴﺔ ﰲ ﺍﳌﺪﻯ ﺍﻟﻘﺼﲑ‪ :‬ﻳﺘﻄﻠﺐ ﲢﻘﻴﻖ ﺍﻟﺒﻴﻨﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﻓﺼﻞ ﻣ‪‬ﻜﻮ‪‬ﻥ ﺍﻟﻌﺮﺽ‬ ‫‪x‬‬
‫ﻋﻦ ﻣ‪‬ﻜﻮ‪‬ﻥ ﺍﳌﻌﺎﳉﺔ‪ ،‬ﺇﻥ ﺇﳒﺎﺯ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﳛﺘﺎﺝ ﺇﱃ ﺑﺮﳎﺔ ﺃﻛﺜﺮ ﺑﻠﻐﺎﺕ ﺍﳉﻴﻞ ﺍﻟﺜﺎﻟﺚ ﻣﺜﻞ ‪C‬‬
‫ﺃﻛﺜﺮ ﳑﺎ ﳛﺘﺎﺟﻪ ﲢﻘﻴﻖ ﺍﻟﺒﻴﻨﺔ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬
‫ﺍﻷﺩﻭﺍﺕ ﻭﺍﻟﺘﺪﺭﻳﺐ‪ :‬ﲟﺎ ﺃﻥ ﺍﻟﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺔ ﺟﺪﻳﺪﺓ ﻧﺴﺒﻴﹰﺎ ﻓﺈﻥ ﺃﺩﻭﺍﺕ ﲢﻘﻴﻖ ﻫﺬﻩ ﺍﻟﺒﲎ ﱂ‬ ‫‪x‬‬
‫ﻳﺘﻢ ﺗﻄﻮﻳﺮﻫﺎ ﺑﺸﻜﻞ ﺟﻴﺪ‪ ،‬ﻭﺃﻳﻀﹰﺎ ﲟﺎ ﺃﻥ ﺑﺮﺍﻣﺞ ﺍﻟﺘﺪﺭﻳﺐ ﻟﻴﺴﺖ ﻣﺘﻮﻓﺮﺓ ﻋﻠﻰ ﳓﻮ ﻭﺍﺳﻊ ﻓﺈﻥ‬
‫ﺍﻟﺸﺮﻛﺎﺕ ﳚﺐ ﺃﻥ ﺗﻄﻮﺭ ﻣﻬﺎﺭ‪‬ﺎ ﺩﺍﺧﻠﻴﹰﺎ‪.‬‬
‫ﺍﳋﱪﺓ‪ :‬ﻳﻮﺟﺪ ﺣﱴ ﺍﻵﻥ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺍﻷﺷﺨﺎﺹ ﺍﻟﺬﻳﻦ ﻟﺪﻳﻬﻢ ﺧﱪﺓ ﰲ ﺑﻨﺎﺀ ﺍﻷﻧﻈﻤﺔ ﺛﻼﺛﻴﺔ‬ ‫‪x‬‬
‫ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬
‫‪527‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺍﳌﻌﺎﻳﲑ ﺍﳌﺘﻌﺎﺭﺿﺔ‪ :‬ﰎ ﺍﻗﺘﺮﺍﺡ ﻋﺪﺩ ﻗﻠﻴﻞ ﻣﻦ ﺍﳌﻌﺎﻳﲑ ﳌﺮﺍﻗﺒﺔ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ‪ ،‬ﻭﻟﻴﺲ ﻭﺍﺿﺤﹰﺎ‬ ‫‪x‬‬
‫ﺣﱴ ﺍﻵﻥ ﺃﻱ ﻣﻦ ﻫﺬﻩ ﺍﳌﻌﺎﻳﲑ ﺍﳌﻘﺘﺮﺣﺔ ﻟﻸﻏﺮﺍﺽ ﺍﳌﻮﺯﻋﺔ ﺳﻴﺘﻢ ﺍﻋﺘﻤﺎﺩﻩ‪.‬‬
‫ﻧﻘﺺ ﺃﺩﻭﺍﺕ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﻨﻬﺎﺋﻲ ﺍﻟﱵ ﺗﻌﻤﻞ ﻣﻊ ﺧﺪﻣﺎﺕ ﺍﻟﻄﺒﻘﺔ ﺍﻟﻮﺳﻄﻰ‪:‬‬ ‫‪x‬‬

‫ﺇﻥ ﺍﻷﺩﻭﺍﺕ ﺍﻟﻌﺎﻣﺔ ﺍﳌﺘﻮﻓﺮﺓ ﺑﺸﻜﻞ ﻭﺍﺳﻊ ﻣﺜﻞ ﺃﺩﻭﺍﺕ ﺍﳉﺪﻭﻟﺔ ﻭﺍﻟﺘﻘﺮﻳﺮ ﻻ ﺗﺸﻐﻞ ﺇﱃ ﺣﺪ ﺍﻵﻥ‬
‫ﻣﻦ ﺧﻼﻝ ﺍﻟﻄﺒﻘﺔ ﺍﳌﺘﻮﺳﻄﺔ‪ .‬ﺳﻴﺘﻢ ﺗﻮﺿﻴﺢ ﻫﺬﻩ ﺍﳌﺸﻜﻠﺔ ﺑﺘﻔﺼﻴﻞ ﺃﻛﺜﺮ ﰲ ﻣﺮﺍﺣﻞ ﻣﺘﻘﺪﻣﺔ ﻣﻦ‬
‫ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪.‬‬

‫‪ϖϴΒτΘϟ΍ ΔϠΟΎόϣ Ϧϣ ξόΑϭ ϡΪΨΘδϤϟ΍ ΕΎϬΟ΍ϭ Γέ΍ΩϹ ϒ͉λϮ˵ϳ ϲμΨη ΐγΎΣ Ϯϫ :ϞϳΰϬϟ΍ ϞϴϤόϟ΍‬‬

‫‪.ΓΩϭΪΤϣ ΔϴϠΤϣ Γήϛ΍άΑ ϭ΃ ϥϭΪΑ ϥϮϜϳ ˱ΎΒϟΎϏϭ‬‬

‫"‪dE:MoZ‬‬
‫ﻻ ﻳﻮﺟﺪ ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺃﻣﺜﻠﻴﺔ ﺗﺸﻜﻞ ﺍﳊﻞ ﺍﻷﻣﺜﻞ ﻟﻜﻞ ﻣﺸﺎﻛﻞ ﺍﻟﻌﻤﻞ‪ ،‬ﻭﻟﻜﻦ ﺍﳌﺮﻭﻧﺔ ﺍﳌﻼﺯﻣﺔ‬
‫ﻟﺒﻨﻴﺔ ﳐﺪﻡ ﺯﺑﻮﻥ ﺗﻘﺪﻡ ﻟﻠﻤﺆﺳﺴﺎﺕ ﺇﻣﻜﺎﻧﻴﺔ ﺻﻴﺎﻏﺔ ﺗﻮﺻﻴﻔﺎ‪‬ﺎ ﲝﻴﺚ ﺗﻼﺋﻢ ﺍﺣﺘﻴﺎﺟﺎ‪‬ﻢ‪ ،‬ﻳﻮﺿﺢ‬
‫ﺍﻟﺸﻜﻞ )‪ (9-1‬ﺍﳌﻨﻄﻖ ﺍﳊﺴﺎﰊ ﺍﻟﺬﻱ ﳚﺐ ﺃﻥ ﻳﻮﺯﻉ ﻋﻠﻰ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﺨﺪﻣﺎﺕ‪ .‬ﻳﻘﻊ ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ‬
‫ﻋﻨﺪ ﺍﻟﺰﺑﻮﻥ ﺣﻴﺚ ﺗﻮﺟﺪ ﻭﺍﺟﻬﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ‪ ،‬ﳝﻜﻦ ﺃﻥ ﻳﻘﺴﻢ ﻣﻨﻄﻖ ﺍﳌﻌﺎﳉﺔ ﻋﻠﻰ ﺍﻟﺰﺑﺎﺋﻦ‬
‫ﻭﺍﳌﺨﺪﻣﺎﺕ ﻛﻤﺎ ﻭﺿ‪‬ﺤﻨﺎ ﺳﺎﺑﻘﹰﺎ ﰲ ﻣﻨﺎﻗﺸﺘﻨﺎ ﻟﺒﲎ ﳐﺪﻡ ﺍﳌﻠﻔﺎﺕ ﻭﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﻟﺜﻨﺎﺋﻴﺔ ﻭﺍﻟﺜﻼﺛﻴﺔ‬
‫ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﻳﻜﻮﻥ ﻣﻨﻄﻖ ﺍﻟﺘﺨﺰﻳﻦ ﺍﻟﻔﻴﺰﻳﺎﺋﻲ ﻟﻠﺒﻴﺎﻧﺎﺕ‪ ،‬ﻭﻧﺸﺎﻃﺎﺕ ﺍﻟﺘﺤﻜﻢ ﺑﺘﻜﺎﻣﻞ ﺍﳌﻌﻄﻴﺎﺕ ﻣﺜﻞ‬
‫ﺗﻔﺤﺺ ﺍﻟﻘﻴﻮﺩ ﻣﻮﺟﻮﺩﺓ ﰲ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺍﻟﻘﻮﺍﺩﺡ ﺍﻟﱵ ﺗ‪‬ﻄﻠﻖ ﻋﻨﺪ ﲢﻘﻖ ﺷﺮﻭﻁ ﻣﻌﻴﻨﺔ‬
‫ﻣﺮﺗﺒﻄﺔ ﺑﻌﻤﻠﻴﺎﺕ ﺍﻹﺩﺧﺎﻝ ﻭﺍﻟﺘﻌﺪﻳﻞ ﻭﺍﻟﺘﺤﺪﻳﺚ ﻭﺍﳊﺬﻑ‪ ،‬ﻭﲟﺎ ﺃﻥ ﻫﺬﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺗﺆﺛﺮ ﻋﻠﻰ‬
‫ﺍﻟﺒﻴﺎﻧﺎﺕ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﻓﺈﻥ ﺍﻟﻘﻮﺍﺩﺡ ﺃﻳﻀﹰﺎ ﺗ‪‬ﺨﺰﻥ ﰲ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﲣﺰﻥ ﺍﻹﺟﺮﺍﺀﺍﺕ‬
‫ﺍﳌﺨﺰﻧﺔ ﻭﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﺍﻟﺒﻴﺎﻧﺎﺕ ﻣﺒﺎﺷﺮﺓ ﰲ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺃﻣﺎ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﺍﻟﱵ‬
‫ﺗﻌﻤﻞ ﻣﻊ ﻧﺘﺎﺋﺞ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻣﻦ ﺍﳌﻤﻜﻦ ﲣﺰﻳﻨﻬﺎ ﰲ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺃﻭ ﻋﻨﺪ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺫﻟﻚ‬
‫ﺣﺴﺐ ﻃﺒﻴﻌﺔ ﻣﺸﻜﻠﺔ ﺍﻟﻌﻤﻞ‪.‬‬
‫ﻳﺴﺎﻋﺪ ﲡﺰﻱﺀ ﺍﻟﺘﻄﺒﻴﻖ ﰲ ﻣﻄﺎﺑﻘﺔ ﺍﻻﺣﺘﻴﺎﺟﺎﺕ‪ ،‬ﻓﻬﻮ ﻳﻌﻄﻲ ﺍﳌﻄﻮﺭﻳﻦ ﺍﻟﻔﺮﺻﺔ ﻟﻜﺘﺎﺑﺔ ﺷﻴﻔﺮﺓ ﺗﻄﺒﻴﻘﺎﺕ ﻣﻦ‬
‫ﺍﳌﻤﻜﻦ ﻭﺿﻌﻬﺎ ﻓﻴﻤﺎ ﺑﻌﺪ ﻋﻠﻰ ﳏﻄﺔ ﻋﻤﻞ ﺍﻟﺰﺑﻮﻥ ﺃﻭ ﻋﻠﻰ ﺍﳌﺨﺪﻡ ﺣﺴﺐ ﺍﳌﻜﺎﻥ ﺍﻟﺬﻱ ﻳﻌﻄﻲ ﺃﺩﺍﺀ ﺃﻓﻀﻞ‪،‬‬
‫ﻭﻟﻴﺲ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺗﻀﻤﲔ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﱵ ﺗﻀﻊ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﱵ ﺳﻴﺘﻢ ﲡﺰﺋﺘﻬﺎ ﺃﻭ ﻛﺘﺎﺑﺔ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﱵ ﺗﻘﻮﻡ‬
‫ﺑﻌﻤﻞ ﺍﺗﺼﺎﻝ ﻣﻊ ﺍﻟﻌﻤﻠﻴﺔ‪ ،‬ﻛﻞ ﻫﺬﻩ ﺍﻟﻨﺸﺎﻃﺎﺕ ﺗﺪﺍﺭ ﻣﻦ ﻗﺒﻞ ﺃﺩﻭﺍﺕ ﲡﺰﻱﺀ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪528‬‬

‫ﺇﻥ ﺍﻷﻏﺮﺍﺽ ﺍﻟﱵ ﻳﺘﻢ ﺇﻧﺸﺎﺅﻫﺎ ﺑﻮﺍﺳﻄﺔ ﺍﻟﱪﳎﻴﺔ ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻪ ﻣﻼﺋﻤﺔ ﻟﺘﺠﺰﺋﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ ،‬ﻟﺪﻯ‬
‫ﺍﳌﱪﳎﲔ ﲢﻜﻢ ﻫﺎﺋﻞ ﲟﺤﺘﻮﻳﺎﺕ ﺍﻟﻐﺮﺽ ﻭﻣﻦ ﺍﻟﺴﻬﻞ ﻓﺼﻞ ﺷﻴﻔﺮﺓ ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻗﻮﺍﻋﺪ ﺍﻟﻌﻤﻞ‬
‫ﻭﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﻳﺪﻋﻢ ﻫﺬﺍ ﺍﻟﻔﺼﻞ ﺍﻟﺘﻄﻮﺭ ﺍﻟﺴﺮﻳﻊ ﰲ ﺍﻷﻧﻈﻤﺔ ﺫﺍﺕ ‪ n‬ﻃﺒﻘﺔ‪ ،‬ﺃﺩﻯ ﺍﻟﻀﻐﻂ ﺍﳍﺎﺋﻞ ﺑﺎﲡﺎﻩ‬
‫ﺣﻠﻮﻝ ﺍﻹﻧﺘﺮﻧﺖ ﻭﺍﻟﺘﺠﺎﺭﺓ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺇﱃ ﺗﻄﻮﺭ ﻃﺮﻕ ﲡﺰﺋﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﺴﺮﻋﺔ ﻭﺑﻄﺮﻕ ﺟﺪﻳﺪﺓ‪،‬‬
‫ﳚﺐ ﺃﻥ ﺗﻜﻮﻥ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ ﻣﺘﻌﺪﺩﺓ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻭﻣ‪‬ﺠﺰﺃﺓ‪ ،‬ﺣﻴﺚ ﺃ‪‬ﺎ ﲢﺘﺎﺝ ﺇﱃ ﻣﻜﻮﻧﺎﺕ ﳝﻜﻦ‬
‫ﲡﻤﻴﻌﻬﺎ ﺃﺛﻨﺎﺀ ﺍﻟﺘﺸﻐﻴﻞ )ﺃﻱ ﻛﻠﻤﺎ ﰎ ﻃﻠﺒﻬﺎ ﻣﻦ ﻗﺒﻞ ﺍﳌﺘﺼﻔﺢ( ﻭﳚﺐ ﺃﻥ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﳌﻜﻮﻧﺎﺕ‬
‫ﻣﺘﻮﺍﻓﻘﺔ ﻣﻊ ﳐﺘﻠﻒ ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﻭﻭﺍﺟﻬﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺃﻥ ﺍﻟﺘﺠﺰﻱﺀ ﺍﻟﻔﻌﺎﻝ‬
‫ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ﺿﺮﻭﺭﻱ ﰲ ﺑﻴﺌﺔ ﺍﻟﻮﻳﺐ ﻟﺘﺤﻘﻴﻖ ﺍﻷﺩﺍﺀ ﺍﳌﻄﻠﻮﺏ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺳﻬﻮﻟﺔ ﺍﻟﺼﻴﺎﻧﺔ ﻭﺗﻜﺎﻣﻞ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﻷﻣﻦ ﰲ ﺑﻴﺌﺔ ﻣﻮﺯﻋﺔ ﻣﺘﻘﻠﺒﺔ‪.‬‬
‫ﳝﻜﻦ ﺗﻄﻮﻳﺮ ﺷﻴﻔﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺍﺧﺘﺒﺎﺭﻫﺎ ﻋﻠﻰ ﳏﻄﺎﺕ ﻋﻤﻞ ﺍﻟﺰﺑﺎﺋﻦ ﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﺮﺍﺭﺍﺕ‬
‫ﺍﳌﺘﻌﻠﻘﺔ ﺑﺘﺠﺰﺋﺔ ﻫﺬﻩ ﺍﻟﺸﻴﻔﺮﺓ ﻭﻣﻜﺎﻥ ﻭﺿﻌﻬﺎ ﻻﺣﻘﺎﹰ‪ ،‬ﻫﺬﻩ ﺍﻹﻣﻜﺎﻧﻴﺔ ﻣﻼﺋﻤﺔ ﻟﺰﻳﺎﺩﺓ ﺇﻧﺘﺎﺟﻴﺔ‬
‫ﺍﳌﻄﻮﺭﻳﻦ‪ ،‬ﳝﻜﻦ ﺃﻥ ﺗﻮﺿﻊ ﺃﺟﺰﺍﺀ ﺍﻟﺘﻄﺒﻴﻖ ﻋﻨﺪ ﺍﻟﺰﺑﺎﺋﻦ ﺃﻭ ﺍﳌﺨﺪﻡ ﻓﻴﻤﺎ ﺑﻌﺪ ﰲ ﻣﺮﺣﻠﺔ ﺍﻟﺘﺼﻤﻴﻢ‪،‬‬
‫ﻭﻟﻜﻦ ﳚﺐ ﻋﻠﻰ ﺍﳌﻄﻮﺭﻳﻦ ﻓﻬﻢ ﻛﻴﻔﻴﺔ ﻭﻣﻜﺎﻥ ﺗﺸﻐﻴﻞ ﻛﻞ ﻋﻤﻠﻴﺔ ﻟﻜﻲ ﻳﺰﺍﻣﻦ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ﻛﻞ‬
‫ﻋﻤﻠﻴﺔ ﺃﻭ ﻣﻨﺎﻗﻠﺔ ﻋﱪ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ‪ ،‬ﺗﻌﺘﻤﺪ ﺍﻟﻘﺮﺍﺭﺍﺕ ﺍﳌﺘﻌﻠﻘﺔ ﺑﻮﺿﻊ ﺍﻟﺸﻴﻔﺮﺓ‬
‫ﻼ ﻗﺪ‬
‫ﻋﻠﻰ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺃﻭ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺇﱃ ﺣﺪ ﻣﺎ ﻋﻠﻰ ﺇﻣﻜﺎﻧﻴﺎﺕ ‪ ،DBMS‬ﻓﻤﺜ ﹰ‬
‫ﻳﻨﺨﻔﺾ ‪ DBMS‬ﺍﻟﺬﻱ ﻳﺪﻋﻢ ٍ‪ SQL‬ﺍﻟﺴﺘﺎﺗﻴﻜﻴﺔ )ﺍﻟﺴﻜﻮﻧﻴﺔ( ﻣﻦ ﺧﻼﻝ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ‬
‫ﻭﺍﻟﻘﻮﺍﺩﺡ ﻭﺍﻟﱵ ﺗﻜﻮﻥ ﻣﻮﺿﻮﻋﺔ ﰲ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﺍﻷﺩﺍﺀ ﰲ ﺣﺎﻝ ﻛﺎﻧﺖ ﻫﻨﺎﻙ ﺷﻴﻔﺮﺓ‬
‫‪ SQL‬ﺩﻳﻨﺎﻣﻴﻜﻴﺔ )ﺗﻨﺸﺄ ﺷﻴﻔﺮﺓ ‪ SQL‬ﻋﻨﺪ ﻭﻗﺖ ﺍﻟﺘﺸﻐﻴﻞ( ﻣﻮﺿﻮﻋﺔ ﰲ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪.‬‬
‫ﺳﺘﻮﻟﺪ ﻛﻞ ﺗﻌﻠﻴﻤﺔ ‪ SQL‬ﺩﻳﻨﺎﻣﻴﻜﻴﺔ ﺭﺑﻂ ﺩﻳﻨﺎﻣﻴﻜﻲ )ﺃﻭ ﺍﺗﺼﺎﻝ ﺑﺄﻏﺮﺍﺽ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻋﻨﺪ ﳐﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻋﻨﺪﻣﺎ ﺗﺘﻢ ﻣﻌﺎﳉﺘﻬﺎ‪.‬‬
‫ﻳﻌﺘﻤﺪ ﺃﺛﺮ ﺍﻷﺩﺍﺀ ﻋﻠﻰ ﻣﺪﻯ ﻛﺜﺎﻓﺔ ﺍﺳﺘﺨﺪﺍﻡ ﺗﻌﻠﻴﻤﺎﺕ ٍ‪ SQL‬ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ‪ ،‬ﻳﺘﻢ ﺍﲣﺎﺫ ﻗﺮﺍﺭ ﺗﺮﻛﻴﺰ‬
‫ﺍﳌﻌﺎﳉﺔ ﰲ ﳐﺪﻡ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺃﻭ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﻗﺒﻞ ﺍﳌﻄﻮ‪‬ﺭ ﺍﻟﺬﻱ ﻳﻜﻮﻥ ﻋﻠﻰ ﻣﻌﺮﻓﺔ ﺑﺒﻴﺌﺔ‬
‫ﺍﻟﻌﺘﺎﺩ ﺍﻟﺼﻠﺐ ﺍﳌﺘﻮﻓﺮ ﻭﺗﻔﺎﻋﻼﺕ ﺍﻟﻌﺘﺎﺩ ﺍﻟﺼﻠﺐ ﻭﺑﺮﳎﻴﺔ ‪ DBMS‬ﻭﻣﺘﻄﻠﺒﺎﺕ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬
‫ﺃﻳﻀﹰﺎ ﻣﻦ ﺍﳌﻤﻜﻦ ﺇﺿﺎﻓﺔ ﻣﺮﺍﻗﱯ ﻣﻌﺎﳉﺔ ﻣﻨﺎﻗﻼﺕ ﰲ ﺃﻧﻈﻤﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻟﺘﺤﺴﲔ ﺍﻷﺩﺍﺀ‪ ،‬ﺣﻴﺜﻤﺎ‬
‫ﺗﺘﻮﺍﻓﺮ ﻋﺪﺓ ﳐﺪﻣﺎﺕ ﺗﻄﺒﻴﻘﺎﺕ ﻭﳐﺪﻣﺎﺕ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻳﺴﺘﻄﻴﻊ ﻣﺮﺍﻗﺐ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﲢﻘﻴﻖ‬
‫ﺍﻟﺘﻮﺍﺯﻥ ﰲ ﻛﻤﻴﺔ ﺍﻟﻌﻤﻞ ﺍﻟﻮﺍﺟﺐ ﺇﳒﺎﺯﻩ ﻭﺗﻮﺟﻴﻪ ﺍﳌﻨﺎﻗﻼﺕ ﺇﱃ ﺍﳌﺨﺪﻣﺎﺕ ﻏﲑ ﺍﳌﺸﻐﻮﻟﺔ‪ ،‬ﻭﺃﻳﻀﹰﺎ‬
‫ﻳﻜﻮﻥ ﻣﺮﺍﻗﺐ ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﻣﻔﻴﺪﹰﺍ ﰲ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﳌﻮﺯﻋﺔ ﺣﻴﺚ ﳝﻜﻦ ﺃﻥ ﺗﺪﺍﺭ ﺍﳌﻨﺎﻗﻼﺕ ﺍﳌﻮﺯﻋﺔ‬
‫ﻣﻦ ﻭﺣﺪﺓ ﻋﻤﻞ ﻣﻔﺮﺩﺓ ﻋﱪ ﺑﻴﺌﺔ ﻣﺘﻐﺎﻳﺮﺓ‪.‬‬
‫‪529‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫‪ϖϴϘΤΘϟ ϚϟΫϭ ϡΪΨϣ ϭ΃ ϥϮΑί ϰϟ· ϖϴΒτΘϟ΍ Γήϔϴη Ϧϣ ˯΍ΰΟ΃ ΩΎϨγ· ΔϴϠϤϋ ϲϫ :ΕΎϘϴΒτΘϟ΍ Δ΋ΰΠΗ‬‬

‫΃‪.(ΔϔϠΘΨϣ ϞϴϐθΗ ΔϤψϧ΃ ϰϠϋ ϞϤόϟ΍ ϰϠϋ ϥϮϜ˵Ϥϟ΍ ΓέΪϗ) ϲϨϴΑ ϞϴϐθΗϭ Ϟπϓ΃ ˯΍Ω‬‬

‫‪(Mainframe)g9›L K$›¥¹£‬‬
‫ﱂ ﻳﻜﻦ ﺩﻭﺭ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ ﳏﺪﺩﹰﺍ ﺧﻼﻝ ﺍﻟﻌﻘﺪ ﺍﳌﺎﺿﻲ ﺣﻴﺚ ﺗﻄﻮﺭﺕ ﺍﻟﺒﲎ ﺍﳌﻮﺯﻋﺔ ﻭﺑﲎ‬
‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﻗﺪﺭﺍﺕ ﺍﳊﻮﺍﺳﺐ ﺍﻟﺸﺨﺼﻴﺔ‪ ،‬ﻭﻛﻤﺎ ﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﹰﺎ ﻓﺈﻥ ﺃﻧﻈﻤﺔ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﺍﻟﱵ‬
‫ﻛﺎﻧﺖ ﺗﺘﻮﺍﺟﺪ ﻋﻠﻰ ﺃﻧﻈﻤﺔ ﺍﳊﺎﺳﺐ ﺍﻟﺮﺋﻴﺴﻲ ﻣﻨﺬ ﻋﻘﺪ ﻣﻀﻰ ﲤﻴﻞ ﺇﱃ ﺍﻟﺒﻘﺎﺀ ﰲ ﺃﻧﻈﻤﺔ ﺍﳊﺎﺳﺐ‬
‫ﺍﻟﺮﺋﻴﺴﻲ‪ ،‬ﻟﻘﺪ ﰎ ﺗﻄﻮﻳﺮ ﺃﻧﻈﻤﺔ ﺫﺍﺕ ﻣﻬﺎﻡ ﺣﺮﺟﺔ ﺃﻗﻞ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﺇﻥ ﺷﻌﺒﻴﺔ ﺑﲎ‬
‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﺍﻟﺮﻏﺒﺔ ﺍﻟﻘﻮﻳﺔ ﻟﻠﻤﺆﺳﺴﺎﺕ ﻟﺘﺤﻘﻴﻖ ﻣﻌﺎﳉﺔ ﺃﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ ﺿﻤﻦ ﺍﻟﺒﻴﺌﺎﺕ ﺍﳌﻮﺯﻋﺔ ﺟﻌﻠﺖ‬
‫ﻧﻈﺮﺓ ﻫﺬﻩ ﺍﳌﺆﺳﺴﺎﺕ ﺃﻭﺳﻊ ﻭﺃﻛﺜﺮ ﴰﻮﻟﻴﺔ‪،‬ﻛﻞ ﻫﺬﺍ ﺃﺩﻯ ﺇﱃ ﺃﻣﻞ ﻫﺬﻩ ﺍﳌﺆﺳﺴﺎﺕ ﺑﺄﻥ ﺗﻨﻘﻞ ﺃﻧﻈﻤﺔ‬
‫ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﻣﻦ ﺍﳊﻮﺍﺳﺐ ﺍﻟﺮﺋﻴﺴﻴﺔ ﺇﱃ ﺑﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪.‬‬
‫ﻭﻟﻜﻦ ﻟﻨﻘﻞ ﺃﻧﻈﻤﺔ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﻣﻦ ﺃﻧﻈﻤﺔ ﺍﳊﻮﺍﺳﺐ ﺍﻟﻀﺨﻤﺔ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺇﱃ ﺃﻧﻈﻤﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‬
‫ﳏﺘﻮﻳﺎﺕ ﻛﺜﲑﺓ‪ ،‬ﻭﻟﻘﺪ ﻭﺟﺪﺕ ﺍﳌﺆﺳﺴﺎﺕ ﺃﻥ ﺇﺩﺍﺭﺓ ﻫﺬﻩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳊﺮﺟﺔ ﻫﻮ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﹰﺍ ﻋﻨﺪﻣﺎ‬
‫ﲢﻮﻝ ﺇﱃ ﺃﻧﻈﻤﺔ ﻣﻮﺯﻋﺔ‪ .‬ﻣﻦ ﺑﲔ ﻣﺸﺎﻛﻞ ﺗﻮﺯﻳﻊ ﺍﻟﱪﳎﻴﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺑﻴﺌﺔ ﺍﳌﻌﺎﳉﺔ ﺍﳌﻮﺯﻋﺔ ﺍﻟﺘﺎﱄ‪:‬‬
‫ﲢﺪﻳﺪ ﺃﻳﺔ ﺷﻴﻔﺮﺓ ﺗﺘﻮﺿﻊ ﻋﻠﻰ ﺃﺣﺪ ﳏﻄﺎﺕ ﺍﻟﻌﻤﻞ ﻭﺃﻱ ﻣﻨﻬﺎ ﺳﻴﻜﻮﻥ ﻣﺘﻮﻓﺮﹰﺍ ﻋﱪ ﺍﳌﺨﺪﻡ‪.‬‬ ‫‪x‬‬

‫ﻣﻌﺮﻓﺔ ﺍﻟﺘﻀﺎﺭﺑﺎﺕ ﺍﳌﻤﻜﻨﺔ ﰲ ﺍﻟﺸﻴﻔﺮﺓ ﻣﻊ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻷﺧﺮﻯ‪.‬‬ ‫‪x‬‬

‫ﺍﻟﺘﺄﻛﺪ ﻣﻦ ﺗﻮﻓﺮ ﻣﺎ ﻳﻜﻔﻲ ﻣﻦ ﺍﳌﻮﺍﺭﺩ ﰲ ﻛﻞ ﺍﻷﻣﺎﻛﻦ ﳌﻌﺎﳉﺔ ﺍﻟﺘﺤﻤﻴﻞ ﺍﳌﺘﻮﻗﻊ‪.‬‬ ‫‪x‬‬

‫ﻳﺘﻨﺒﺄ ﺍﳌﻄﻮﺭﻭﻥ ﲟﺴﺎﺋﻞ ﺍﻟﺘﻮﺳﻌﻴﺔ ﻭﻋﻨﻮﻧﺔ ﻫﺬﻩ ﺍﳌﺴﺎﺋﻞ ﻋﻦ ﺗﻄﻮﻳﺮ ﺍﻟﺸﻴﻔﺮﺓ ﻓﺈﻥ ﻧﻘﻞ ﺗﻄﺒﻴﻘﺎﺕ ﺍﳌﻬﺎﻡ‬
‫ﺍﳊﺮﺟﺔ ﺇﱃ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﻮﺯﻋﺔ ﻳﺘﺴﺒﺐ ﲟﺸﺎﻛﻞ ﺧﻄﲑﺓ ﻋﻨﺪ ﺍﻟﺘﺤﻮﻝ ﻣﻦ ﻃﻮﺭ ﺍﻟﺘﺠﺮﻳﺐ ﺇﱃ‬
‫ﺍﻹﻧﺘﺎﺝ‪ ،‬ﺃﺩﻯ ﻫﺬﺍ ﺍﻷﻣﺮ ﺇﱃ ﺇﺑﻄﺎﺀ ﺗﻄﻮﻳﺮ ﺃﻧﻈﻤﺔ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﻭﺍﻵﻥ ﻓﺈﻥ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﺍﻹﻧﺘﺮﻧﺖ ﺗﺰﺩﺍﺩ ﺣﺎﺟ ﹰﺔ ﺇﱃ ﺗﻄﺒﻴﻘﺎﺕ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺍﻟﻌﻤﻞ ﰲ ﺑﻴﺌﺎﺕ ﳐﺘﻠﻔﺔ ﻭﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺍﻟﺘﺨﺎﻃﺐ ﻣﻊ‬
‫ﺑﻌﻀﻬﺎ‪ ،‬ﻣﻦ ﺍﻟﺼﻌﺐ ﺍﻟﺘﺤﺮﻱ ﻋﻦ ﺍﳋﻠﻞ ﻭﺇﺻﻼﺣﻪ ﰲ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻭﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﺆﺳﺴﺎﺕ‬
‫ﻟﻴﺴﺖ ﻣﺴﺘﻌﺪﺓ ﻟﺘﻮﱄ ﻫﺬﺍ ﺍﻟﻌﻤﻞ‪.‬‬
‫ﺇﻥ ﺯﻳﺎﺩﺓ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻜﺘﺒﺎﺕ ﺍﳌﻜﻮ‪‬ﻧﺎﺕ )ﻣﻠﻔﺎﺕ ﻣﻦ ﺃﺟﺰﺍﺀ ﺗﻄﺒﻴﻘﺎﺕ ﻣ‪‬ﺸﺘﺮﻛﺔ( ﺗﺰﻳﺪ ﻣﻦ ﺍﳊﺎﺟﺔ‬
‫ﻹﺩﺍﺭﺓ ﺍﻻﻋﺘﻤﺎﺩ ﺍﳌﺘﺒﺎﺩﻝ ﺍﻟﺬﻱ ﺳﻴﺘﻄﻮﺭ ﺣﺘﻤﹰﺎ ﻷﻥ ﻫﺬﻩ ﺍﳌﻜﺘﺒﺎﺕ ﺗﺘﺸﺎﺭﻙ ﻋﺐﺀ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪530‬‬

‫ﲤﺜﻞ ﻋﻤﻠﻴﺔ ﺩﻋﻢ ﺍﻷﻧﻈﻤﺔ ﺍﳌﻮﺯﻋﺔ ﻣ‪‬ﻬ‪‬ﻤﺔ ﻣﻌﻘﺪﺓ ﻟﻠﻐﺎﻳﺔ‪ ،‬ﺣﻴﺚ ﺃﻥ ﻓﻬﻢ ﻧﺸﺎﻁ ﺍﻟﺒﻴﺌﺎﺕ ﺍﳌﺨﺘﻠﻔﺔ ﻭﺧﻠﻖ ﺷﺒﻜﺔ‬
‫ﻣﻌﺎﳉﺔ ﻣﻮﺯﻋﺔ ﻣﻌﻘﺪ ﻟﻠﻐﺎﻳﺔ‪ ،‬ﺩﻓﻌﺖ ﺍﻟﺼﻌﻮﺑﺎﺕ ﺍﻟﱵ ﺗﻌﺘﺮﺽ ﺇﺩﺍﺭﺓ ﺑﻴﺌﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺍﳌﻮﺯﻋﺔ ﻣﺪﻳﺮﻱ ﺗﻘﺎﻧﺔ‬
‫ﺍﳌﻌﻠﻮﻣﺎﺕ ﺑﺈﻋﺎﺩﺓ ﺍﻟﻨﻈﺮ ﰲ ﻫﺠﻮﻣﻬﻢ ﻋﻠﻰ ﻧﻘﻞ ﺃﻧﻈﻤﺔ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﺇﱃ ﺣﻠﻮﻝ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪.‬‬
‫ﺃﺣﺒﻄﺖ ﺍﻟﺼﻌﻮﺑﺎﺕ ﺍﻟﱵ ﺗﻮﺍﺟﻪ ﻧﻘﻞ ﺗﻄﺒﻴﻘﺎﺕ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﺇﱃ ﺑﻴﺌﺔ ﻣﻮﺯﻋﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﲎ‬
‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﻟﻜﺜﲑ ﻣﻦ ﻣﺪﻳﺮﻱ ﺗﻘﺎﻧﺔ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺣﱴ ﺃﻥ ﺍﻟﺒﻌﺾ ﻣﻨﻬﻢ ﺭﻓﺾ ﺍﳌﺒﺎﺩﺭﺓ ﰲ ﺍﻟﺘﺤﻮﻝ ﺇﱃ‬
‫ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﻭﻟﻜﻦ ﻧﻌﺘﻘﺪ ﺃﻥ ﻛﻞ ﻣﺆﺳﺴﺔ ﲢﺘﺎﺝ ﺇﱃ ﲢﻘﻴﻖ ﺗﻮﺍﺯﻥ ﺑﲔ ﻣﻨﺼﺎﺕ ﺍﳊﺎﺳﺐ‬
‫ﺍﻟﺮﺋﻴﺴﻴﺔ ﻭﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﺑﲔ ﺍﳊﻠﻮﻝ ﺍﳌﺮﻛﺰﻳﺔ ﻭﺍﳌﻮﺯﻋﺔ ﲟﺎ ﻳﺘﻨﺎﺳﺐ ﻣﻊ ﻃﺒﻘﺔ ﺑﻴﺎﻧﺎﺕ ﺍﳌﺆﺳﺴﺔ ﻭﻣﻮﻗﻊ‬
‫ﻣﺴﺘﺨﺪﻣﻲ ﻫﺬﻩ ﺍﻟﺒﻴﺎﻧﺎﺕ‪ ،‬ﺇﻥ ﺍﻟﺒﻴﺎﻧﺎﺕ ﺍﻟﱵ ﳛﺘﺎﺝ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﻮﻟﻮﺝ ﺇﻟﻴﻬﺎ ﺑﺎﺳﺘﻤﺮﺍﺭ ﻭﺍﳌﺨﻄﻄﺎﺕ‬
‫ﺍﳌﻌﻘﺪﺓ ﻭﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﳚﺐ ﺃﻥ ﺗﺒﻘﻰ ﻗﺮﻳﺒﺔ ﻣﻦ ﳏﻄﺎﺕ ﻋﻤﻞ ﺍﳌﺴﺘﺨﺪﻣﲔ‪.‬‬

‫› ‪M¦›j&›L K$›kC¶›W‬‬
‫ﺇﻥ ﳏﺎﻭﻻﺕ ﺍﳌﺆﺳﺴﺎﺕ ﻟﻨﻘﻞ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺫﺍﺕ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ ﺇﱃ ﺑ‪‬ﲎ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ‪ ،‬ﻳﺴﺘﻠﺰﻡ ﺑﻨﺎﺀ‬
‫ﺃﻧﻈﻤﺔ ﺑﺎﺳﺘﻄﺎﻋﺘﻬﺎ ﻣﻌﺎﳉﺔ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺃﻛﺜﺮ ﺑﻜﺜﲑ ﻣﻦ ﻣﺸﺎﺭﻳﻊ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﺍﻟﻌﺎﺩﻳﺔ‪ .‬ﻭﻟﻘﺪ‬
‫ﺍﺳﺘﻔﺎﺩﺕ ﺍﳌﺸﺎﺭﻳﻊ ﺍﻟﱵ ﺗﺴﺘﺨﺪﻡ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺿﺨﻤﺔ ﺟﺪﹰﺍ )‪Very Large Data bases (VLBB‬‬
‫ﻣﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺑﲎ ﺍﳊﺎﺳﺐ ﺍﳌﺘﻮﺍﺯﻳﺔ‪ ،‬ﻭﺫﻟﻚ ﻷﻥ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻮﺍﺯﻳﺔ ﻟﻘﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺗ‪‬ﻌﻄﻲ ﺳﺮﻋﺔ‬
‫ﻣﻘﺒﻮﻟﺔ ﰲ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ .‬ﻛﻤﺎ ﺍﺳﺘﺨﺪﻣﺖ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﻮﺩﻋﻴﺔ ﺍﻵﻟﻴﺎﺕ ﺍﳌﺘﻮﺍﺯﻳﺔ ﻟﺘﺤﻘﻴﻖ ﺍﳌﺰﻳﺪ ﻣﻦ‬
‫ﺍﻟﻔﻌﺎﻟﻴﺔ ﰲ ﺍﺳﺘﺨﻼﺹ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺗﻠﺨﻴﺼﻬﺎ ﻭﲢﻮﻳﻠﻬﺎ ﻭﻛﺬﻟﻚ ﲢﻤﻴﻠﻬﺎ‪ ،‬ﻭﺫﻟﻚ ﻋﻦ ﻃﺮﻳﻖ ﺗﺸﻐﻴﻠﻬﺎ‬
‫ﻋﻠﻰ ﻋﺪﺓ ﳐﺪﻣﺎﺕ ﺭﺧﻴﺼﺔ ﺍﻟﺜﻤﻦ ﰲ ﺑﻴﺌﺔ ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺎﻟﻚ‪.‬‬
‫ﺇﻥ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺍﳌﻨﺎﻗﻼﺕ ﺫﺍﺕ ﺍﳊﺠﻮﻡ ﺍﻟﻜﺒﲑﺓ‪ ،‬ﻭﻣﻊ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﳌﻌﻘﺪﺓ‪ ،‬ﻭﻣﻊ ﺃﳕﺎﻁ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳉﺪﻳﺪﺓ‪ ،‬ﻗﺪ ﺃﺛﺒﺘﺖ ﻭﺟﻮﺩ ﺇﺷﻜﺎﻻﺕ ﰲ ﺍﻟﺒﻴﺌﺎﺕ ﻭﺣﻴﺪﺓ ﺍﳌﻌﺎﰿ )ﺣﺴﺐ ‪.(DeWitt and Gray, 1992‬‬
‫ﻭﻟﻜﻦ ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ‪ ،‬ﻭﻟﻐﺔ ‪ SQL‬ﻗﺪ ﺃﺛﺮﺗﺎ ﰲ ﺍﻟﺒﻴﺌﺎﺕ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺑﻄﺮﻳﻘﺘﲔ‬
‫)ﺣﺴﺐ ‪ :(Ferguson, 1994‬ﻭﳘﺎ‪:‬‬
‫ﰲ ﻣﻌﻈﻢ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‪ ،‬ﲤﺜﻞ ‪ SQL‬ﻛﻠﻔﺔ ﻣﻌﺎﳉﺔ ﳎﻤﻮﻋﺔ ﻏﲑ ﺇﺟﺮﺍﺋﻴﺔ ﻭﻟﺬﻟﻚ ﲡﺰﺃ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‬ ‫‪-1‬‬
‫ﺇﱃ ﺃﻗﺴﺎﻡ‪ ،‬ﻳﻌﻤﻞ ﹸﻛﻞﱢ ﻣﻨﻬﺎ ﻋﻠﻰ ﻣﻌﺎﰿ ﺗﻔﺮﻋﻲ ﳐﺘﻠﻒ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻣﻦ ﻣﻊ ﺑﻘﻴﺔ ﺍﻷﻗﺴﺎﻡ‪.‬‬
‫ﻳ‪‬ﻤﻜﻦ ﺗﺸﻐﻴﻞ ﻋﺪﺓ ﺍﺳﺘﻌﻼﻣﺎﺕ ﺑﺸﻜﻞ ﺗﻔﺮﻋﻲ ﻋﻠﻰ ﻋﺪﺓ ﻣﻌﺎﳉﺎﺕ ﻣﺘﻮﺍ ٍﺯ‪ .‬ﺍﻧﻈﺮ ﺍﻟﺸﻜﻞ )‪.(9-5‬‬ ‫‪-2‬‬

‫ﻳﺘﻄﻠﺐ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﻔﻌﺎﻝ ﻟﻠﺒﲎ ﺍﳌﺘﻮﺍﺯﻳﺔ ﻟﻠﺤﻮﺍﺳﻴﺐ‪ ،‬ﺗﻄﻮﻳﺮ ﺇﺩﺭﺍﻙ ﺇﻣﻜﺎﻧﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺍﻟﱵ ﳝﻜﻦ‬
‫ﺍﺳﺘﻐﻼﳍﺎ ﰲ ﺑﻴﺌﺎﺕ ﺍﳌﺨﺪﻣﺎﺕ ﺍﻟﺘﻔﺮﻋﻴﺔ‪ ،‬ﻭﻟﻴﺲ ﻓﻘﻂ ﳎﺮﺩ ﲢﻮﻳﻞ ﻟﻠﺨﻮﺍﺭﺯﻣﻴﺎﺕ ﺍﻟﺘﺴﻠﺴﻠﻴﺔ ﺇﱃ‬
‫‪531‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺃﺧﺮﻯ ﺗﻔﺮﻋﻴﺔ‪ .‬ﺳﺘﻘﺪﻡ ﰲ ﻫﺬﻩ ﺍﻟﻔﻘﺮﺓ ﺍﺛﻨﺘﲔ ﻣﻦ ﺍﻟﺒﲎ ﺍﻟﻜﺜﲑﺓ ﻟﻠﺘﺠﻬﻴﺰﺍﺕ ﻣﺘﻌﺪﺩﺓ ﺍﳌﻌﺎﳉﺎﺕ‪ ،‬ﻛﻞ‬
‫ﻣﻨﻬﺎ ﺳﻴﻜﻮﻥ ﺍﻷﻓﻀﻞ ﻟﻨﻮﻉ ﳏﺪﺩ ﻣﻦ ﺍﳌﻌﺎﳉﺔ‪.‬‬

‫‪Δϳί΍ϮΘϤϟ΍ ΕϼϗΎϨϤϟ΍ (9-5-a) ϞϜθϟ΍‬‬

‫‪ϱί΍ϮΘϤϟ΍ ϡϼόΘγϻ΍ (9-5-b) ϞϜθϟ΍‬‬

‫‪žK#K<&›£W<ž›ZED›kCí‬‬

‫ﺍﻟﺒﻨﻴﺔ ﺍﻷﻭﱃ ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﻧﻈﺎﻡ ﻳﺴﺘﺨﺪﻡ ﻋﺪﺓ ﻣﻌﺎﳉﺎﺕ ﻣﺮﺗﺒﻄﺔ ﻣﻊ ﺑﻌﻀﻬﺎ ﺑﺸﺪﺓ‪ ،‬ﻷ‪‬ﺎ ﲤﺘﻠﻚ‬
‫ﺫﺍﻛﺮﺓ ﻣﺸﺘﺮﻛﺔ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ ﺍﻟﺸﻜﻞ )‪ .(9-6‬ﺗ‪‬ﺪﻋﻰ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﺑﺎﳌﻌﺎﳉﺔ )ﺃﻭ ﺃﺣﻴﺎﻧﹰﺎ ﺍﳌﻌﺎﳉﺎﺕ( ﺍﳌﺘﻌﺪﺩﺓ‬
‫ﺍﳌﺘﻨﺎﻇﺮﺓ )‪ ،Symmetric MultiProcessing (SMP‬ﺣﻴﺚ ﲤﺘﻠﻚ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﶈﺎﺳﻦ‬
‫)ﺣﺴﺐ ‪ .(Ferguson, 1994‬ﺃﻭﳍﺎ ﺗﻮﺿﻴﻊ ﻧﺴﺨﺔ ﻭﺣﻴﺪﺓ ﻣﻦ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﰲ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪،‬‬
‫ﻭﺑﺎﻟﺘﺎﱄ ﺳﺘﻜﻮﻥ ﻣﺘﺎﺣﺔ ﳉﻤﻴﻊ ﺍﳌﻌﺎﳉﺎﺕ‪ ،‬ﺣﻴﺚ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻣﺸﻐﻞ ﻫﺬﺍ ﺍﻟﻨﻈﺎﻡ ﻣﻜﺘﻮﺏ ﺑﺸﻜﻞ‬
‫›>‪a K›f8‬‬ ‫‪532‬‬

‫ﳝﻜﻨﻪ ﻣﻦ ﺍﻟﻌﻤﻞ ﻋﻠﻰ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﺍﳌﺸﺘﺮﻛﺔ‪ ،‬ﻟﺬﻟﻚ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﺑﺈﻣﻜﺎﻧﻪ ﺗﺸﻐﻴﻞ ﺃﺟﺰﺍﺀ ﻣﻨﻪ ﺑﺸﻜﻞ‬
‫ﺗﻔﺮﻋﻲ ﻋﻠﻰ ﺃﻱ ﻣﻦ ﺍﳌﻌﺎﳉﺎﺕ‪ ،‬ﻭﺩﻭﻥ ﺃﻥ ﻳﻘﻮﻡ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺣﺪ ﺍﳌﻌﺎﳉﺎﺕ ﲝﻤﻞ ﺃﻛﺜﺮ ﻣﻦ ﻏﲑﻫﺎ‪.‬‬
‫ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻌﺪﺩﺓ ﺍﳌﺘﻨﺎﻇﺮﺓ )‪ :(SMP‬ﻫﻲ ﺑﻨﻴﺔ ﺗﻔﺮﻋﻴﺔ ﻟﻠﻤﻌﺎﳉﺔ‪ ،‬ﲢﺘﻮﻱ ﻋﻠﻰ ﻋﺪﺓ ﻣﻌﺎﳉﺎﺕ ﻣﺮﺗﺒﻄﺔ‬
‫ﺳﻮﻳﹰﺎ ﻭﺗﺴﺘﺨﺪﻡ ﺫﺍﻛﺮﺓ ﻭﺍﺣﺪﺓ ﻣﺸﺘﺮﻛﺔ ﺑﻴﻨﻬﺎ‪.‬‬
‫ﺇﻥ ﺍﳊﺴﻨﺔ ﺍﻟﺜﺎﻧﻴﺔ ﳍﺬﻩ ﺍﻟﺒﻨﻴﺔ ﻫﻲ ﺃﻥ ﺍﻻﺯﺩﺣﺎﻡ ﻋﻨﺪ ﻋﻨﻖ ﺍﻟﺰﺟﺎﺟﺔ ‪ bottlenecked‬ﺳﻴﻨﺨﻔﺾ ﻣﻘﺎﺭﻧﺔ‬
‫ﺑﺎﻟﻨﻈﻢ ﻭﺣﻴﺪﺓ ﺍﳌﻌﺎﰿ‪ ،‬ﻭﺫﻟﻚ ﻷﻥ ﲨﻴﻊ ﺍﳌﻌﺎﳉﺎﺕ ﺗﺘﺸﺎﺭﻙ ﺍﳌﻬﺎﻡ ﺑﺸﻜﻞ ﻣﺘﻨﺎﻇﺮ ﰲ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ‪،‬‬
‫ﻟﻜﻦ ﻭﻣﻊ ﺫﻟﻚ ﻓﺈﻧﻪ ﻣﺎ ﺯﺍﻝ ﻫﻨﺎﻙ ﺍﺯﺩﺣﺎﻡ ﻋﻠﻰ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ ﰲ ﺣﺎﻝ ﰎ ﺇﺭﺳﺎﻝ ﻋﻤﻠﻴﺎﺕ‬
‫ﺩﺧﻞ‪/‬ﺧﺮﺝ ﺑﻜﺜﺎﻓﺔ ﺇﻟﻴﻬﺎ‪ ،‬ﻭﻟﻜﻦ ﲡﻬﻴﺰ ﻛﻞ ﻣﻌﺎﰿ ﺑﺬﺍﻛﺮﺓ ﳐﺒﺌﺔ ‪ cache‬ﺧﺎﺻﺔ ﺑﻪ‪ ،‬ﻣﻦ ﺷﺄﻧﻪ ﺃﻥ‬
‫ﻳﻘﻠﻞ ﻣﻦ ﻭﻃﺄﺓ ﻫﺬﻩ ﺍﳌﺸﻜﻠﺔ‪ .‬ﻭﻣﻦ ﰒ ﳝﻜﻦ ﺗﻘﻠﻴﻞ ﺣﺠﻢ ﺍﻟﻄﻠﺒﺎﺕ ﻋﻠﻰ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ ﻋﻦ‬
‫ﻃﺮﻳﻖ ﺇﻋﺎﺩﺓ ﺗﻔﻌﻴﻞ ﺍﻧﺘﻈﺎﺭ ﺍﳌﻨﺎﻗﻼﺕ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﺍﳌﻌﺎﰿ‪ ،‬ﻭﺍﻟﱵ ﺳﺒﻖ ﺃﻥ ﺑﺪﺃﺕ ﻣﻌﺎﳉﺘﻬﺎ‪ ،‬ﻭﻫﺬﺍ‬
‫ﺑﺪﻭﺭﻩ ﻳﺆﺩﻱ ﺇﱃ ﺇﻋﺎﺩﺓ ﺗﻔﻌﻴﻞ ﺍﳌﻨﺎﻗﻠﺔ ﺑﺴﺮﻋﺔ ﺃﻛﱪ‪ ،‬ﻭﺑﺎﺳﺘﺨﺪﺍﻡ ﻋﺪﺩ ﺃﻗﻞ ﻣﻦ ﺍﻟﻄﻠﺒﺎﺕ ﻋﻠﻰ‬
‫ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪ ،‬ﻭﻛﺬﻟﻚ ﻣﻦ ﺍﶈﺘﻤﻞ ﺟﻌﻞ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﳋﺎﺻﺔ ﺑﻜﻞ ﻣﻨﺎﻗﻠﺔ ﻣﻔﻌﻠﺔ ﻣﺴﺘﺨﺪﻣﺔ ﰲ‬
‫ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺨﺒﺌﻴﺔ ﻟﻠﻤﻌﺎﰿ ﺍﶈﺪﺩ )ﺣﺴﺐ ‪.(Ferguson, 1994‬‬

‫‪ΓϮϘΑ ΔτΒΗήϣ ΔΠϟΎόϤϟ΍ ΓΩΪόΘϣ ΔϴϨΑ‬‬ ‫‪(9-6) ϞϜθϟ΍‬‬


‫‪533‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺛﺎﻟﺜﹰﺎ ﺇﻥ ﺍﻟﺒﻨﻴﺔ ‪ SMP‬ﻣﻔﻴﺪﺓ ﰲ ﺍﳊﺎﻻﺕ ﺍﻟﱵ ﳚﺐ ﺃﻥ ﺗﺒﻘﻰ ﻓﻴﻬﺎ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻮﺟﻮﺩﺓ ﰲ ﺍﻟﺬﺍﻛﺮﺓ‬
‫ﺧﻼﻝ ﻋﻤﻠﻴﺔ ﺍﳌﻌﺎﳉﺔ ‪‬ﺪﻑ ﲢﻘﻴﻖ ﺍﳌﺴﺘﻮﻯ ﺍﳌﻄﻠﻮﺏ ﻭﻛﺬﻟﻚ ﺍﻷﺩﺍﺀ‪ .‬ﺃﻣﺎ ﻣﺸﺎﻛﻞ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ ﳝﻜﻦ‬
‫ﺃﻥ ﺗﺘﻀﻤﻦ ﺍﺣﺘﻤﺎﻝ ﺍﳌﻨﺎﺯﻋﺔ ﻋﻠﻰ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪ ،‬ﻭﻛﺬﻟﻚ ﻭﺟﻮﺏ ﺍﺳﺘﺨﺪﺍﻡ ﺣﺰﻡ ﻋﺮﻳﻀﺔ‬
‫ﻟﻠﻤﻌﻄﻴﺎﺕ ﻣﻦ ﺃﺟﻞ ﺍﺳﺘﻌﺎﺩ‪‬ﺎ ﺇﱃ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪ ،‬ﻭﻛﺬﻟﻚ ﺗﻮﺿﻊ ﻛﺎﻣﻞ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ ﰲ‬
‫ﻧﻘﻄﺔ ﻭﺍﺣﺪﺓ ﻣﻌﺮﺿﺔ ﻟﻠﻔﺸﻞ‪.‬ﻛﻤﺎ ﺇﻥ ﺍﺯﺩﺣﺎﻡ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺪﺧﻞ‪/‬ﺍﳋﺮﺝ ﺳﻴﺰﺩﺍﺩ ﻛﻠﻤﺎ ﲤﺖ ﺇﺿﺎﻓﺔ‬
‫ﻣﻌﺎﳉﺎﺕ ﺟﺪﻳﺪﺓ ﺇﱃ ﺑﻴﺌﺔ ﺍﻟﺬﺍﻛﺮﺓ ﺍﳌﺸﺘﺮﻛﺔ‪.‬‬
‫ﻋﻠﻰ ﺧﻼﻑ ﺍﻟﺒﻨﻴﺔ ٍ‪ ،SQL‬ﺗ‪‬ﻮﺟﺪ ﺍﻟﺒﻨﻴﺔ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺸﻜﻞ ﻣﻘﻠﻘﻞ ﺃﻭ ﻏﲑ ﻭﺛﻴﻖ‪ ،‬ﺍﻧﻈﺮ ﺍﻟﺸﻜﻞ )‪،(9-7‬‬
‫ﺗﺪﻋﻰ ﺑﻨﻴﺔ ﺍﳌﻌﺎﳉﺔ ﺍﻟﻔﺮﻋﻴﺔ ﺍﻟﻜﺜﻴﻔﺔ )‪ ،Massively Parallel Processing (MPP‬ﺃﻭ ﺑﻨﻴﺔ ﺍﻟﻼ‬
‫ﺗﺸﺎﺭﻙ‪ ،‬ﺣﻴﺚ ﻳﺘﻢ ﰲ ﻫﺬﻩ ﺍﻟﺒﻴﻨﺔ ﺗﺮﻛﻴﺐ ﻛﻞ ﻣﻌﺎﰿ ﻣﻊ ﺫﺍﻛﺮﺗﻪ ﺍﳋﺎﺻﺔ‪ .‬ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻛﻞ ﻋﻘﺪﺓ‬
‫ﻓﻴﻬﺎ ﺃﺣﺎﺩﻳﺔ ﺍﳌﻌﺎﰿ‪ ،‬ﺃﻭ ﻣﺘﻌﺪﺩﺓ ﺍﳌﻌﺎﳉﺎﺕ‪ ،‬ﻓﺈﻥ ﺍﻻﺯﺩﺣﺎﻡ ﺍﻟﺬﻱ ﻛﺎﻥ ﳛﺪﺙ ﰲ ﺑﻨﻴﺔ ‪ SMP‬ﻏﲑ ﳏﺘﻤﻞ‬
‫ﺍﳊﺪﻭﺙ ﰲ ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ‪ ،‬ﻭﻣﻦ ﺍﶈﺘﻤﻞ ﺇﺿﺎﻓﺔ ﻋﻘﺪ )ﻣﻌﺎﰿ ﺁﺧﺮ ﻣﻊ ﺫﺍﻛﺮﺗﻪ( ﰲ ﻭﺣﺪﺓ ﻭﺣﻴﺪﺓ ﺇﱃ‬
‫ﻫﺬﻩ ﺍﻟﺒﻨﻴﺔ‪.‬‬
‫ﳝﻜﻦ ﻫﺬﺍ ﺍﻟﺘﺤﺴﻦ ﺍﳋﻄﻲ ﺍﳌﺆﺳﺴﺎﺕ ﻣﻦ ﲢﻘﻴﻖ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺑﺘﻜﺎﻟﻴﻒ ﺃﻗﻞ‪ ،‬ﻣﻀﻴﻔﹰﺎ ﻗﺪﺭﺍﺕ‬
‫ﻣﻌﺎﳉﺔ ﺑﺒﻌﺾ ﺍﻟﺰﻳﺎﺩﺍﺕ ﺣﺴﺐ ﺍﳊﺎﺟﺔ‪ .‬ﺇﻥ ﻫﺬﺍ ﺍﻟﺘﺤﺴﲔ ﳚﻌﻞ ﺍﻟﻨﻈﺎﻡ ﻗﺎﺑﻞ ﻟﻺﺩﺍﺭﺓ ﺑﺸﻜﻞ ﺃﻛﱪ‬
‫ﰲ ﺑﻴﺌﺎﺕ ﺍﻟﻌﻤﻞ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ‪ ،‬ﺣﻴﺚ ﺗﻜﻮﻥ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﻮﺩﻋﻴﺔ ﻗﺎﺑﻠﺔ ﻟﻠﻨﻤﻮ ﺑﺸﻜﻞ ﺳﺮﻳﻊ ﻛﻤﺎ‬
‫ﳝﻜﻦ ﳍﺬﻩ ﺍﻟﻨﻈﻢ ﻋﻦ ﻃﺮﻳﻖ ﲤﺮﻳﺮ ﺍﻟﺮﺳﺎﺋﻞ ﺑﲔ ﺍﳌﻌﺎﳉﺎﺕ‪ ،‬ﲡﺰﻱﺀ ﺍﳌﻬﺎﻡ ﺍﻟﻜﺒﲑﺓ ﻭﺗﻮﺯﻳﻊ ﺍﻷﺟﺰﺍﺀ‬
‫ﻋﻠﻰ ﻋﺪﺓ ﻣﻌﺎﳉﺎﺕ‪ .‬ﰲ ﺍﳊﻘﻴﻘﺔ ﺇﻥ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﱵ ﲤﻠﻚ ﻣﻬﺎﻣﹰﺎ ﺿﺨﻤﺔ ﺟﺪﺍﹰ‪ ،‬ﻣﻦ ﺍﳌﻤﻜﻦ ﲡﺰﻱﺀ‬
‫ﻫﺬﻩ ﺍﳌﻬﺎﻡ ﻭﺟﻌﻠﻬﺎ ﺗ‪‬ﻨﻔﱠﺬ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻣﻦ‪ ،‬ﺳﺘﻜﻮﻥ ﻣﻨﺎﺳﺒﺔ ﻟﻼﺳﺘﻔﺎﺩﺓ ﻣﻦ ﺑ‪‬ﲎ ‪ MPP‬ﺃﻛﺜﺮ ﻣﻦ‬
‫ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ‪ .SMP‬ﻭﺍﻵﻥ ﻫﻨﺎﻙ ﻓﻌﺎﻟﻴﺎﺕ ﺗﻄﻮﻳﺮ ﻛﺜﲑﺓ ﻟﺘﻘﻨﻴﺎﺕ ‪ ،MPP‬ﻓﻬﻨﺎﻙ ﺍﻟﺸﺮﻛﺎﺕ ‪،IBM‬‬
‫‪) DEC ،Oracle ،Intel ،NCR‬ﻭﻫﻲ ﻗﺴﻢ ﻣﻦ ‪... ،Silicon Graphics ،Encore ،Hp ،(Compaq‬‬
‫ﻭﻏﲑﻫﺎ‪ ،‬ﻣﻨﺸﻐﻠﺔ ﰲ ﺃﲝﺎﺙ ﺗﻄﻮﻳﺮ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺎﺕ ﻭﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ ﻧﻈﻢ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﳐﺘﻠﻔﺔ ﻋﻦ ﺍﻟﻨﻈﻢ‬
‫ﺍﻟﺘﻘﻠﻴﺪﻳﺔ‪ ،‬ﻓﺈﻧﻪ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﻟﻠﺸﺮﻛﺎﺕ ﺍﻟﱵ ﺗﺄﺧﺬ ﺑﻌﲔ ﺍﻻﻋﺘﺒﺎﺭ ﺃﻥ ﺗﻘﻮﻡ ﻫﺬﻩ ﺍﻟﻨﻈﻢ ﺑﺈﻋﺎﺩﺓ ﺗﻌﻤﻴﻢ‬
‫ﻭﺑﻨﺎﺀ ﺗﺼﻤﻴﻢ ﻭﺗﻄﺒﻴﻖ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳋﺎﺻﺔ ‪‬ﻢ‪ ،‬ﺇﻋﺎﺩﺓ ﲣﻄﻴﻂ ﺍﳌﻘﺪﺭﺓ ﻟﺪﻳﻬﻢ‪ ،‬ﻭﺇﻋﺎﺩﺓ ﺗﻘﻴﻴﻢ‬
‫ﻭﺇﺩﺍﺭﺓ ﺍﻷﺩﺍﺀ‪ ،‬ﻭﺍﻟﻌﻤﻠﻴﺎﺗﻴﺔ‪ ،‬ﻭﺇﺟﺮﺍﺋﻴﺎﺕ ﺍﳉﺪﻭﻟﺔ ﻟﺪﻳﻬﻢ‪.‬‬
‫ﺑﻨﻴﺔ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻮﺍﺯﻳﺔ ﺍﻟﻜﺜﻴﻔﺔ ‪ :MPP‬ﻫﻲ ﺑﻨﻴﺔ ﺍﻟﻼ ﺗﺸﺎﺭﻙ‪ ،‬ﺣﻴﺚ ﻟﻜﻞ ﻣﻌﺎﰿ ﺫﺍﻛﺮﺗﻪ ﺍﳋﺎﺻﺔ‪.‬‬

‫› ‪µKB TKM:Y&›MPP¹SMPkC¶›W‬‬
‫ﲤﺘﻠﻚ ﺍﳌﺆﺳﺴﺎﺕ ﳐﺎﺯﻥ ﺿﺨﻤﺔ ﻣﻦ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻤﻠﻴﺎﺗﻴﺔ ﺍﳌﺘﺮﺍﻛﻤﺔ ﺗﺎﺭﳜﻴﺎﹰ‪ ،‬ﻭﺍﻟﱵ ﺗﺮﻏﺐ ﺑﺎﻻﺳﺘﻔﺎﺩﺓ‬
‫ﻣﻨﻬﺎ‪ ،‬ﻭﺧﺼﻮﺻﺎﹰ ﻣﻦ ﺗﻠﻚ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﻘﻴﻤﺔ ﺍﳋﺎﺻﺔ ﲟﻔﺎﻫﻴﻢ ﺍﻟﻌﻤﻞ‪ ،‬ﻣﺜﻞ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﻨﺘﺠﺎﺕ‬
‫›>‪a K›f8‬‬ ‫‪534‬‬

‫ﻭﺍﳌﺒﻴﻌﺎﺕ ﻭﻗﻮﺍﺋﻢ ﺍﳉﺮﺩ‪ .‬ﺣﱴ ﻭﻗﺖ ﻗﺮﻳﺐ ﻛﺎﻧﺖ ﻫﺬﻩ ﺍﳌﺆﺳﺴﺎﺕ ﻻ ﲤﻠﻚ ﻗﺪﺭﺓ ﻣﻌﺎﳉﺔ ﻛﺎﻓﻴﺔ ﻟﻜﻲ‬
‫ﺗﻜﻮﻥ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﻫﺬﻩ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺨﺰﻧﺔ )ﺣﺴﺐ ‪ .(Rudin, 1995‬ﺃﻣﺎ ﺍﻵﻥ ﻓﺈﻥ‬
‫ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﻗﺪ ﺃﻋﻄﺖ ﻫﺬﻩ ﺍﳌﺆﺳﺴﺎﺕ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﲢﻠﻴﻞ ﺍﻟﻜﻤﻴﺎﺕ ﺍﻟﻀﺨﻤﺔ ﻣﻦ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳌﺘﺮﺍﻛﻤﺔ ﺗﺎﺭﳜﻴﹰﺎ ﻭﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﻮﺩﻋﻴﺔ ﻭﻣﺎ ﺷﺎ‪‬ﻬﺎ‪ .‬ﻭﻗﺪ ﺃﻭﺟﺪ ﻇﻬﻮﺭ‬
‫ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺍﻟﺒﻨﻴﺔ ﺍﻟﺘﺤﺘﻴﺔ ﻟﻌﻤﻠﻴﺎﺕ ﺗﻄﻮﻳﺮ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﻮﺩﻋﻴﺔ ﺍﳌﺰﺩﻭﺟﺔ‪ ،‬ﻭﺍﻟﺬﻱ‬
‫ﺳﻴﻮﺻﻒ ﺑﺎﻟﺘﻔﺼﻴﻞ ﰲ ﺍﻟﻔﺼﻞ ﺍﳊﺎﺩﻱ ﻋﺸﺮ‪ .‬ﻗﺪ ﺍﺳﺘﺨﺪﻣﺖ ﻣﺆﺳﺴﺎﺕ ﺍﻟﺒﻴﻊ ﺑﺎﻟﺘﺠﺰﺋﺔ ﺍﻟﱵ ﲤﺘﻠﻚ‬
‫ﻛﻤﻴﺎﺕ ﺿﺨﻤﺔ ﻣﻦ ﻣﻌﻄﻴﺎﺕ ﺍﳌﺒﻴﻌﺎﺕ ﻭﺍﻟﱵ ﲢﺘﺎﺝ ﺇﱃ ﲢﻠﻴﻞ‪ ،‬ﻧﻈﻢ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﰲ ﺳﺒﻴﻞ ﺫﻟﻚ‪.‬‬
‫ﺗﻮﺟﺪ ﺣﺴﺐ )‪ (Rudin, 1995‬ﻋﺪﺓ ﻧﻘﺎﻁ ﳚﺐ ﺃﻥ ﺗﻀﻌﻬﺎ ﺍﳌﺆﺳﺴﺎﺕ ﰲ ﺣﺴﺒﺎ‪‬ﺎ ﻋﻨﺪﻣﺎ ﲢﺎﻭﻝ‬
‫ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﻧﻈﻢ ‪ SMP‬ﺃﻭ ‪ MPP‬ﻭﻫﻲ‪:‬‬
‫ﻣﺘﻄﻠﺒﺎﺕ ﲢﻠﻴﻞ ﺍﳌﻌﻄﻴﺎﺕ‪ :‬ﺗﺴﻌﻰ ﺍﻟﻨﻈﻢ ﺍﻟﺘﻔﺮﻋﻴﺔ ﻟﺘﻜﻮﻥ ﺍﻷﻛﺜﺮ ﻓﻌﺎﻟﻴﺔ ﰲ ﺣﻞ ﺍﳌﺴﺎﺋﻞ ﺍﻟﱵ‬ ‫‪x‬‬
‫ﺗﺘﻄﻠﺐ ﻣﻌﺎﳉﺔ ﻛﻤﻴﺎﺕ ﺿﺨﻤﺔ ﺟﺪﹰﺍ ﻣﻦ ﺍﳌﻌﻄﻴﺎﺕ )‪ 250 GB‬ﺃﻭ ﺃﻛﺜﺮ(‪ ،‬ﺃﻭ ﺗﻨﻔﻴﺬ ﺍﺳﺘﻌﻼﻣﺎﺕ‬
‫ﻣﻌﻘﺪﺓ‪ ،‬ﺃﻭ ﻣﻌﺎﳉﺔ ﻣﻌﻄﻴﺎﺕ ﻣﺴﺘﺨﺪﻣﺔ ﻣﻦ ﻗﺒﻞ ﻋﺪﺩ ﻛﺒﲑ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺍﳌﺘﺰﺍﻣﻨﲔ‪ .‬ﻭﻟﻜﻦ‬
‫ﺍﳌﺸﻜﻠﺔ ﺗﻈﻬﺮ ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻣﻬﻤﺔ ﺍﺳﺘﺮﺍﺗﻴﺠﻴﹰﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺆﺳﺴﺔ‪ ،‬ﺃﻭ ﻋﻨﺪﻣﺎ‬
‫ﺗﻜﻮﻥ ﻛﻠﻔﺔ ﺍﻟﺘﺠﻬﻴﺰﺍﺕ ﻭﺍﻟﱪﳎﻴﺎﺕ‪ ،‬ﻭﻛﻠﻔﺔ ﺇﻋﺎﺩﺓ ﺍﻟﺘﺪﺭﻳﺐ ﻏﲑ ﻣﺴﺎﻭﻳﺔ ﳌﺮﺩﻭﺩ ﻫﺬﺍ ﺍﻻﻧﺘﻘﺎﻝ‬
‫ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺆﺳﺴﺔ‪ .‬ﻭﻣﻦ ﺃﻣﺜﻠﺔ ﻫﺬﻩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺒﻴﻊ ﺑﺎﻟﺘﺠﺰﺋﺔ ﺍﻟﱵ ﺗﻌﻄﻲ ﻗﻴﻤﹰﺎ‬
‫ﺍﺳﺘﺮﺍﺗﻴﺠﻴﺔ ﻟﻠﺒﺎﻋﺔ‪ ،‬ﻭﻣﻨﻬﺎ ﻧﻈﺎﻡ ﲢﻠﻴﻞ ﺳﻠﺔ ﺍﻟﺘﺴﻮﻕ ﺍﳋﺎﺹ ﺑـ ‪،Catalina Marketing‬‬
‫ﻭﺍﻟﺬﻱ ﻻ ﻳﺘﺘﺒﻊ ﺍﳌﻨﺘﺠﺎﺕ ﺍﻟﱵ ﻳﺘﻢ ﺷﺮﺍﺅﻫﺎ ﻓﺤﺴﺐ‪ ،‬ﻭﺇﳕﺎ ﻳﺘﺘﺒﻊ ﺗﺸﻜﻴﻼﺕ ﺍﳌﻨﺘﺠﺎﺕ ﺍﻟﱵ ﻳﺘﻢ‬
‫ﺷﺮﺍﺅﻫﺎ ﰲ ﺍﻟﻮﻗﺖ ﻧﻔﺴﻪ‪ .‬ﳝﻜﻦ ﻟﻠﺒﺎﻋﺔ ﺍﺳﺘﺨﺪﺍﻡ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻨﺘﺎﺋﺞ ﻣﻦ ﺃﺟﻞ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺮﻭﻳﺞ‬
‫ﺍﳌﻨﺴﻖ ﻟﻠﻤﻨﺘﺠﺎﺕ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺒﻌﻀﻬﺎ ﺑﻌﻀﺎﹰ‪ ،‬ﻭﻣﻦ ﺃﺟﻞ ﺍﲣﺎﺫ ﻗﺮﺍﺭﺍﺕ ﲢﺪﻳﺪ ﺍﻷﺳﻌﺎﺭ ﻭﻓﺘﺮﺍﺕ‬
‫ﺍﻟﺼﻼﺣﻴﺔ‪.‬‬
‫ﺗﱪﻳﺮ ﺍﻟﺘﻜﺎﻟﻴﻒ ‪ :Cost justification‬ﺗﺬﻛﺮ ﺃﻥ ﺍﻟﻨﻈﻢ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺳﺘﻜﻮﻥ ﻣﺘﻤﻤﺔ ﻟﻠﻨﻈﻢ‬ ‫‪x‬‬
‫ﺍﻟﻌﻤﻠﻴﺎﺗﻴﺔ‪ ،‬ﻭﻟﻴﺲ ﺍﺳﺘﺒﺪﺍ ﹰﻻ ﳍﺎ‪ ،‬ﻭﺗﺴﺘﺨﺪﻣﻬﺎ ﺍﳌﺆﺳﺴﺎﺕ ﻟﺘﺤﺴﲔ ﺍﻟﻌﺎﺋﺪﺍﺕ ﻭﻟﻴﺲ ﻟﺘﺨﻔﻴﺾ‬
‫ﺍﻟﺘﻜﺎﻟﻴﻒ‪ .‬ﻭﻟﺬﻟﻚ ﻓﺈﻥ ﺇﺟﺮﺍﺋﻴﺎﺕ ﺣﺴﺎﺏ ﺍﻟﻜﻠﻒ ﻭﺗﱪﻳﺮﺍ‪‬ﺎ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﻟﻦ ﺗﻜﻮﻥ ﻣﻨﺎﺳﺒﺔ ﻣﻊ‬
‫ﺍﻟﻨﻈﻢ ﺍﻟﺘﻔﺮﻋﻴﺔ‪ .‬ﻭﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺗﺴﻌﻰ ﻟﺘﺤﺴﲔ ﺍﺳﺘﺮﺍﲡﻴﺎﺕ ﺍﻟﺘﺴﻮﻳﻖ‬
‫ﺍﳋﺎﺻﺔ ﺑﺎﳌﺆﺳﺴﺔ‪ ،‬ﻓﺈﻧﻪ ﺳﻴﻜﻮﻥ ﻣﻦ ﺍﳌﻨﺎﺳﺐ ﺍﻋﺘﺒﺎﺭ ﺍﻟﻨﻈﻢ ﺍﻟﺘﻔﺮﻋﻴﺔ ﻛﻌﻤﻠﻴﺎﺕ ﺍﺳﺘﺜﻤﺎﺭ‬
‫ﺍﳌﻘﺪﺭﺍﺕ ﺍﻟﺘﺴﻮﻳﻘﻴﺔ‪.‬‬
‫ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ‪ :‬ﺇﺫﺍ ﻛﺎﻥ ﺑﺎﻹﻣﻜﺎﻥ ﲢﻘﻴﻖ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻘﺘﺮﺣﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻘﻨﻴﺎﺕ‬ ‫‪x‬‬
‫ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺍﳌﺘﻮﻓﺮﺓ ﻟﺪﻯ ﺍﳌﺆﺳﺴﺔ‪ ،‬ﻓﺈﻧﻪ ﻣﻦ ﺍﻷﻓﻀﻞ ﻭﺑﺸﻜﻞ ﳏﺘﻤﻞ ﻣﺘﺎﺑﻌﺔ ﺍﻟﻌﻤﻞ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ‪ .‬ﺇﻥ ﻧﻈﻢ ‪ MPP‬ﻣﺎﺯﺍﻟﺖ ﺑﻌﻴﺪﺓ ﻋﻦ ﺍﻟﻨﻀﺞ‪ ،‬ﻭﲢﻘﻴﻘﻬﺎ ﺑﺎﻟﺘﺄﻛﻴﺪ ﻫﻮ ﲢ ٍِﺪ ﻷﻱ‬
‫‪535‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻣﺆﺳﺴﺔ‪ .‬ﻭﻟﺬﻟﻚ ﺣﱴ ﻭﻟﻮ ﻛﻨﺖ ﻣﺘﺄﻛﺪﹰﺍ ﻣﻦ ﺃﻥ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ ﺳﺘﻜﻮﻥ ﺫﺍﺕ ﻣﻌﲎ ﰲ ﺣﻞ‬
‫ﺍﳌﺴﺄﻟﺔ ﺍﻟﱵ ﺗﻮﺍﺟﻬﻬﺎ ﺍﳌﺆﺳﺴﺔ ‪ -‬ﻓﺈﻧﻪ ﳚﺐ ﺍﻟﻘﻴﺎﻡ ﺑﺘﺤﻠﻴﻞ ﻣﻌﻘﻮﻝ ﻟﺘﺤﺪﻳﺪ ﻓﻴﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﳝﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﺗﻘﻨﻴﺎﺕ ﺃﻛﺜﺮ ﻧﻀﺠﹰﺎ‪ .‬ﻛﻤﺎ ﺃﻧﻪ ﻣﻦ ﺍﳌﻌﻘﻮﻝ ﲢﻘﻴﻖ ﺣﻞ ﺍﳌﺴﺄﻟﺔ ﺍﳌﺘﻮﻗﻊ ﺍﺳﺘﻔﺎﺩ‪‬ﺎ ﻣﻦ‬
‫ﺍﻟﱪﳎﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﻴﺌﺔ ﻭﺣﻴﺪﺓ ﺍﳌﻌﺎﰿ‪.‬‬
‫ﻭﻟﻜﻦ ﺍﻟﻌﻜﺲ ﻏﲑ ﻣﻘﺒﻮﻝ‪ ،‬ﺃﻱ ﺃﻧﻪ ﳚﺐ ﺍﺳﺘﺒﻌﺎﺩ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﻗﺒﻞ ﺍﻟﺒﺪﺀ ﺑﺘﺠﻬﻴﺰ ﺍﳊﻞ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﳌﻌﺎﳉﺔ ﺍﻟﺘﻔﺮﻋﻴﺔ‪.‬‬
‫ﺗﻌﺎﰿ ﺗﻄﺒﻴﻘﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﻮﺩﻋﻴﺔ‪ ،‬ﻭﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺒﺤﺚ ﻋﻦ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻨﺎﻗﺸﺔ ﺳﺎﺑﻘﹰﺎ‬
‫ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﱵ ﺗﻘﻮﻡ ﺑﺎﻟﻮﺻﻮﻝ ﺇﱃ ﻛﻤﻴﺎﺕ ﻛﺒﲑﺓ ﻣﻦ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺘﻌﺮﻳﻔﻴﺔ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﺮﺑﻂ ‪ join‬ﻭﺍﻟﺘﺠﻤﻴﻊ ‪ .aggregate‬ﺗﺘﻄﻠﺐ ﻫﺬﻩ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻋﻤﻠﻴﺎﺕ ﺩﺧﻞ‪/‬ﺧﺮﺝ‬
‫ﻋﺪﻳﺪﺓ‪ ،‬ﻭﻣﻦ ﺍﶈﺘﻤﻞ ﺃﻥ ﺗﻮﻟﺪ ﳎﻤﻮﻋﺎﺕ ﻣﻦ ﺍﻟﻨﺘﺎﺋﺞ ﺍﻟﻮﺳﻄﻴﺔ ﺫﺍﺕ ﺍﳊﺠﻮﻡ ﺍﻟﻀﺨﻤﺔ )ﺣﺴﺐ‬
‫‪ .(Frazer, 1998‬ﰲ ﺍﻟﻮﻗﺖ ﺍﳊﺎﺿﺮ ﻻ ﺗﻮﺟﺪ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻋﻼﺋﻘﻴﺔ ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻪ ‪ O/R‬ﻛﺒﲑﺓ‬
‫ﻑ ﻟﺘﻮﺍﻓﻖ ﺗﻄﺒﻴﻘﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻀﺨﻤﺔ ‪) VLDB‬ﺍﻧﻈﺮ ﺍﳌﻠﺤﻖ ‪ D‬ﻟﻠﺘﻌﻠﻢ ﻋﻦ‬ ‫ﺑﺸﻜﻞ ﻛﺎ ِ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻪ ‪ .(O/R‬ﻭﻣﻊ ﺫﻟﻚ ﻓﺈﻥ ﺗﻘﻨﻴﺔ ‪ O/R‬ﺣﺎﳌﺎ ﺗﺼﺒﺢ ﺃﻛﺜﺮ‬
‫ﻧﻀﺠﺎﹰ‪ ،‬ﻓﺈ‪‬ﺎ ﻭﻣﻦ ﺍﳌﺘﻮﻗﻊ ﺃﻥ ﺗﺼﺒﺢ ﻗﺎﺩﺭﺓ ﻋﻠﻰ ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺿﺨﻤﺔ ﺣﺠﻤﻬﺎ ﻋﻠﻰ‬
‫ﺍﻷﻗﻞ ﻳﺴﺎﻭﻱ ﺣﺠﻢ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﺍﳊﺎﻟﻴﺔ‪ .‬ﻭﺫﻟﻚ ﻷﻥ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﺍﻟﻨﻮﻉ‬
‫‪ O/R‬ﺗﻌﺎﰿ ﺃﳕﺎﻁ ﻣﻌﻄﻴﺎﺕ ﺟﺪﻳﺪﺓ ﻭﺍﻟﱵ ﺗﻜﻮﻥ ﻛﺒﲑﺓ ﺟﺪﹰﺍ ﲣﺰﻳﻨﻴﹰﺎ‪ .‬ﻭﺳﺘﺘﻌﺎﻣﻞ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ‬
‫ﺍﻟﻨﻮﻉ ‪ O/R‬ﻣﻊ ﻋﻼﻗﺎﺕ ﻣﻌﻘﺪﺓ ﺑﲔ ﻧﺴﺦ ﺃﳕﺎﻁ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳉﺪﻳﺪﺓ‪ ،‬ﺳﺘﺬﻫﺐ ﻫﺬﻩ ﺍﻟﻌﻼﻗﺎﺕ ﺃﺑﻌﺪ‬
‫ﻣﻦ ﺑﻨﻴﺔ ﺳﻄﺮ‪/‬ﻋﻤﻮﺩ ﺍﻟﺒﺴﻴﻄﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻟﻌﻼﺋﻘﻴﺔ‪ .‬ﻭﻣﻦ ﺍﳌﺘﻮﻗﻊ ﺗﻔﻌﻴﻞ ﻃﺮﺍﺋﻖ ﺍﳌﻌﺎﳉﺔ‬
‫ﺍﻟﺘﻔﺮﻋﻴﺔ ﳍﺬﻩ ﺍﻟﺘﻄﻮﺭﺍﺕ ﺍﳉﺪﻳﺪﺓ‪.‬‬

‫› ‪M:E j›žKEßΛ¶›W‬‬
‫ﺗﺮﻣﺰ ﺍﻟﱪﳎﻴﺔ ﺍﻟﻮﺳﻴﻄﺔ ﻏﺎﻟﺒﹰﺎ ﺇﱃ ﺍﻟﻐﺮﺍﺀ ﺍﻟﺬﻱ ﻳﺮﺑﻂ ﺗﻄﺒﻴﻘﺎﺕ ﺍﳌﺨﺪﻡ ﻭﺍﻟﺰﺑﻮﻥ ﻣﻌﹰﺎ‪ .‬ﻭﺗﺴﺘﺨﺪﻡ‬
‫ﻣﺼﻄﻠﺢ ﺍﻟﱪﳎﻴﺔ ﺍﻟﻮﺳﻴﻄﺔ ﺑﺸﻜﻞ ﺷﺎﺋﻊ ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ ﺃﻱ ﻣﻜﻮﻥ ﺑﺮﳎﻲ ﻳﻘﻊ ﺑﲔ ﺍﻟﺰﺑﻮﻥ ﺍﳌﺘﻤﺜﻞ‬
‫ﺑﺎﳊﺎﺳﺐ ﺍﻟﺸﺨﺼﻲ‪ ،‬ﻭﺑﲔ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﰲ ﺍﻟﺒﻨﻴﺔ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ ‪.n-tier‬‬
‫ﻓﺎﻟﱪﳎﻴﺔ ﺍﻟﻮﺳﻄﻴﺔ )ﺣﺴﺐ ‪ (Hurwitz, 1998‬ﻫﻲ ﺃﻱ ﺻﻒ ﻣﻦ ﺻﻔﻮﻑ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﱵ ﺗﺴﻤﺢ‬
‫ﻟﺘﻄﺒﻴﻘﻬﺎ ﺑﺎﻟﺘﻮﺍﺻﻞ )ﺍﻟﺘﻜﺎﻣﻞ( ﻣﻊ ﺑﺮﳎﻴﺎﺕ ﺃﺧﺮﻯ ﻭﺩﻭﻥ ﺃﻥ ﻳﺘﻄﻠﺐ ﺫﻟﻚ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻡ ﺃﻥ ﻳﻔﻬﻢ‬
‫ﺃﻭ ﻳﻘﻮﻡ ﺑﺘﺸﻔﲑ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻣﻨﺨﻔﻀﺔ ﺍﳌﺴﺘﻮﻯ ﺍﻟﻼﺯﻣﺔ ﻟﺘﺤﻘﻴﻖ ﺍﻟﺘﻮﺍﺻﻞ‪ .‬ﻟﻘﺪ ﻭﺟﺪﺕ ﺍﻟﱪﳎﻴﺎﺕ‬
‫ﺍﻟﻮﺳﻴﻄﺔ ﻣﻨﺬ ﻋﺪﺓ ﻋﻘﻮﺩ‪ ،‬ﻭﻣﻦ ﺃﻣﺜﻠﺘﻬﺎ ﺗﻠﻚ ﺍﳋﺎﺻﺔ ﲟﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﻭﺍﻟﱵ ﺃﻧﺘﺠﺘﻬﺎ ﺷﺮﻛﺔ ‪،IBM‬‬
‫›>‪a K›f8‬‬ ‫‪536‬‬

‫ﻭﺍﳌﺴﻤﺎﺓ ‪ ،CICS‬ﻭﻛﺬﻟﻚ ‪ Tuxedo‬ﺍﳋﺎﺻﺔ ﺑﻨﻈﺎﻡ ‪ UNIX‬ﻣﻦ ﳎﻤﻮﻋﺔ ﺃﻧﻈﻤﺔ ‪ .BEA‬ﻭﻟﻜﻦ‬


‫ﺍﻧﺘﺸﺎﺭ ﺗﻘﻨﻴﺎﺕ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﻗﺪﳝﺎﹰ‪ ،‬ﻭﺍﻧﺘﺸﺎﺭ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻄﻮﻳﺮ ﺍﳌﻮﺟﻬﺔ ﳓﻮ ﺍﻟﻮﻳﺐ ﺣﺪﻳﺜﺎﹰ‪ ،‬ﻗﺪ‬
‫ﺣﺮﺹ ﻋﻠﻰ ﻇﻬﻮﺭ ﻋﻤﻠﻴﺎﺕ ﺗﻄﻮﻳﺮ ﺟﺪﻳﺪﺓ ﻟﱪﳎﻴﺎﺕ ﻭﺳﻴﻄﺔ ﲡﺎﺭﻳﺔ‪ .‬ﺑﺎﻟﻄﺒﻊ ﺳﻴﻜﻮﻥ ﻣﻦ ﺍﳌﺜﺎﱄ‬
‫ﺟﺪﹰﺍ ﺃﻥ ﺗﻮﺟﺪ ﺑﺮﳎﻴﺔ ﻭﺳﻴﻄﺔ ﻋﻤﻮﻣﻴﺔ‪ ،‬ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻦ ﺣﺰﻣﺔ ﺑﺮﳎﻴﺔ ﻭﺍﺣﺪﺓ ﺑﺈﻣﻜﺎ‪‬ﺎ ﺍﻻﺗﺼﺎﻝ‬
‫ﻭﺍﻟﺘﻜﺎﻣﻞ ﻣﻊ ﺃﻱ ﻧﻮﻉ ﻣﻦ ﺍﻷﻧﻈﻤﺔ‪ .‬ﺗﺴﺘﺨﺪﻡ ﻣﻌﻈﻢ ﺍﳌﺆﺳﺴﺎﺕ ﻋﺪﺓ ﺣﺰﻡ ﺑﺮﳎﻴﺔ ﻭﺳﻴﻄﺔ ﳐﺘﻠﻔﺔ‪،‬‬
‫ﻭﺣﱴ ﰲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﰲ ﺍﻟﺘﻄﺒﻴﻖ ﻧﻔﺴﻪ‪.‬‬

‫‪ΐϠτΘϳ ϥ΃ ϥϭΩ ϯήΧ΃ ΕΎϴΠϣήΑ ϊϣ ϞϤόϳ ϥ΃ Ύϣ ϖϴΒτΘϟ ΢ϤδΗ ΔϴΠϣήΑ ϲϫ :ΔϴτγϮϟ΍ ΔϴΠϣήΒϟ΍‬‬

‫‪.ϞϣΎϜΘϠϟ Δϣίϼϟ΍ ϯϮΘδϤϟ΍ ΔπϔΨϨϣ ΕΎϴϠϤόϟ΍ Ϧϣ ϱ΃ ϖϴϘΤΗ ϭ΃ ϢϬϓ ϡΪΨΘδϤϟ΍ Ϧϣ ϚϟΫ‬‬

‫‪Synchronous‬‬ ‫ﻫﻨﺎﻙ ﻧﻘﻄﺔ ﺃﺧﺮﻯ ﳚﺐ ﺃﺧﺬﻫﺎ ﺑﻌﲔ ﺍﻻﻋﺘﺒﺎﺭ‪ ،‬ﻭﻫﻲ ﻓﻴﻤﺎ ﺇﺫﺍ ﻛﺎﻥ ﺍﻻﺗﺼﺎﻝ ﻣﺘﺰﺍﻣﻨﹰﺎ‬
‫ﺃﻭ ﻏﲑ ﻣﺘﺰﺍﻣﻦ ‪ .Asynchronous‬ﰲ ﺍﻷﻧﻈﻤﺔ ﺍﳌﺘﺰﺍﻣﻨﺔ‪ ،‬ﻳﻨﺘﻈﺮ ﺍﻟﻨﻈﺎﻡ ﺍﻟﻄﺎﻟﺐ ﺇﺟﺎﺑﺔ ﻋﻠﻰ ﻃﻠﺒﻪ ﰲ‬
‫ﺍﻟﺰﻣﻦ ﺍﳊﻘﻴﻘﻲ‪ ،‬ﺇﻥ ﺃﺣﺪ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﺍﻷﻧﻈﻤﺔ ﺍﳌﺘﺰﺍﻣﻨﺔ ﻫﻮ ﺍﻟﻨﻈﺎﻡ ﺍﳌﺼﺮﰲ ﺍﻟﺬﻱ ﻳﻌﻤﻞ ﺑﻮﺿﻌﻴﺔ‬
‫ﺍﺗﺼﺎﻝ ‪ ،on-line‬ﺣﻴﺚ ﻳﻘﻮﻡ ﺍﻟﻄﺮﻑ ﺍﻟﻄﺎﻟﺐ ﺑﺘﻔﺤﺺ ﺭﺻﻴﺪ ﺍﳊﺴﺎﺏ ﻗﺒﻞ ﺍﻟﺸﻴﻚ‪ .‬ﺃﻣﺎ ﺍﻷﻧﻈﻤﺔ‬
‫ﺍﻟﻼﻣﺘﺰﺍﻣﻨﺔ‪ ،‬ﻓﺈﻥ ﺍﻟﻨﻈﺎﻡ ﺍﻟﻼﻣﺘﺰﺍﻣﻦ ﻳﻘﻮﻡ ﺑﺈﺭﺳﺎﻝ ﺍﻟﻄﻠﺐ ﻭﻟﻜﻨﻪ ﻻ ﻳﻨﺘﻈﺮ ﺇﺟﺎﺑﺔ ﻋﻠﻴﻪ ﰲ ﺍﻟﺰﻣﻦ‬
‫ﺍﳊﻘﻴﻘﻲ‪ ،‬ﻭﺇﳕﺎ ﻳﺘﻢ ﻗﺒﻮﻝ ﺍﻹﺟﺎﺑﺔ ﺣﺎﳌﺎ ﻳﺄﰐ ﺩﻭﺭﻫﺎ‪ .‬ﻳﻌﺘﱪ ﺍﻟﱪﻳﺪ ﺍﻹﻟﻜﺘﺮﻭﱐ ﺃﺣﺪ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ‬
‫ﺍﻷﻧﻈﻤﺔ ﺍﻟﻼﻣﺘﺰﺍﻣﻨﺔ‪.‬‬
‫ﺃﻋﻄﻰ ‪ Hurwitz, 1998‬ﻧﻈﺎﻡ ﺗﺼﻨﻴﻒ ﻣﺴﺎﻋﺪ ﳛﺘﻮﻱ ﻋﻠﻰ ﺳﺘﺔ ﻓﺌﺎﺕ ﺗﻨﻈﻢ ﺍﻷﳕﺎﻁ ﺍﻟﻌﺪﻳﺪﺓ ﺍﳌﺘﻮﻓﺮﺓ‬
‫ﺣﺎﻟﻴﹰﺎ ﻣﻦ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‪ .‬ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺍﻟﺘﺼﻨﻴﻔﺎﺕ ﻣﻌﺘﻤﺪﺓ ﻋﻠﻰ ﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻮﺳﻊ‪ ،‬ﻭﻗﺎﺑﻠﻴﺔ ﺍﻻﺳﺘﻌﺎﺩﺓ‪:‬‬
‫ﺍﺳﺘﺪﻋﺎﺀ ﺍﻹﺟﺮﺍﺀ ﺍﻟﺒﻌﻴﺪ ﻏﲑ ﺍﳌﺘﺰﺍﻣﻦ‪ :(RRC) :‬ﻭﻓﻴﻪ ﻳﺮﺳﻞ ﺍﻟﺰﺑﻮﻥ ﻃﻠﺒﹰﺎ ﳋﺪﻣﺎﺕ ﻣﻌﻴﻨﺔ ﻭﻟﻜﻨﻪ‬ ‫‪x‬‬
‫ﻻ ﻳﻨﺘﻈﺮ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ .‬ﺳﻴﻘﻮﻡ ﺍﻟﺰﺑﻮﻥ ﺑﺸﻜﻞ ﳕﻮﺫﺟﻲ ﺑﺘﺸﻜﻴﻞ ﺍﺗﺼﺎﻝ ﻣﻦ ﳕﻂ ﻧﻘﻄﺔ ﻟﻨﻘﻄﺔ‬
‫)‪ (point-to-pint‬ﻣﻊ ﺍﳌﺨﺪﻡ ﻭﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺍﻷﺧﺮﻯ ﺧﻼﻝ ﺍﻧﺘﻈﺎﺭﻩ ﻟﻼﺳﺘﺠﺎﺑﺔ‪.‬‬
‫ﺇﺫﺍ ﻓﺸﻞ ﺍﻻﺗﺼﺎﻝ ﻓﺈﻧﻪ ﻳﺘﻮﺟﺐ ﻋﻠﻰ ﺍﻟﺰﺑﻮﻥ ﺇﻋﺎﺩﺓ ﺍﻻﺗﺼﺎﻝ ﻭﺇﺭﺳﺎﻝ ﺍﻟﻄﻠﺐ ﺛﺎﻧﻴﺔ‪ .‬ﻫﺬﺍ ﺍﻟﻨﻤﻂ ﻣﻦ‬
‫ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻗﺎﺑﻞ ﻟﻠﺘﻮﺳﻊ ﺑﺸﻜﻞ ﻋﺎﻝِ‪ ،‬ﻭﻗﺎﺑﻠﻴﺔ ﺇﺻﻼﺡ ﺍﻷﻋﻄﺎﻝ ﻣﻨﺨﻔﻀﺔ‪ ،‬ﻭﻗﺪ ﺣﻞ ﳏﻠﻪ‬
‫ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﺒﻌﻴﺪ ﺍﳌﺘﺰﺍﻣﻦ ﻟﻺﺟﺮﺍﺋﻴﺎﺕ ‪ Synchronous RRC‬ﰲ ﻋﺎﻡ ‪.1998‬‬
‫ﺍﻻﺳﺘﺪﻋﺎﺀ ﺍﻟﺒﻌﻴﺪ ﺍﳌﺘﺰﺍﻣﻦ ﻟﻺﺟﺮﺍﺋﻴﺎﺕ ‪ :Synchronous RPC‬ﲤﻜﻦ ﻫﺬﻩ ﺍﻟﱪﳎﻴﺔ ﺍﻟﻮﺳﻄﻴﺔ‬ ‫‪x‬‬
‫ﺍﻟﱪﻧﺎﻣﺞ ﺍﳌﻮﺯﻉ ﻣﻦ ﺍﺳﺘﺪﻋﺎﺀ ﺧﺪﻣﺎﺕ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ ﳐﺘﻠﻔﺔ‪ ،‬ﺩﻭﻥ ﺃﻥ ﻳﺘﻄﻠﺐ ﺫﻟﻚ ﻣﻨﻪ‬
‫ﻛﺘﺎﺑﺔ ﺷﻴﻔﺮﺓ ﻣﻔﺼﻠﺔ ﻛﺎﻟﱵ ﺗﻄﻠﺐ ﰲ ‪ .RPC‬ﻣﻦ ﺍﻷﻣﺜﻠﺔ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﳐﺪﻡ ﻣﻨﺎﻗﻼﺕ‬
‫‪ Microsoft‬ﻭ ‪ ،IBM.SCILS‬ﺍﳉﺎﻓﺎ ﺍﳌﻜﺎﻓﺌﺔ ﻟـ ‪ Rpc‬ﻫﻲ ﺇﺣﺪﻯ ﺍﻟﻄﺮﻕ ﺍﻟﺒﻌﻴﺪﺓ‪.‬‬
‫‪537‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺗﻘﻨﻴﺔ ﺍﺷﺘﺮﺍﻙ‪/‬ﻧﺸﺮ ‪ :Publish/subscribe‬ﻫﺬﺍ ﺍﻟﻨﻤﻂ ﻣﻦ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻳﻘﻮﻡ ﲟﺮﺍﻗﺒﺔ‬ ‫‪x‬‬


‫ﺑﻌﺾ ﺍﻷﻧﺸﻄﺔ ﻭﺍﻟﻔﻌﺎﻟﻴﺎﺕ ﻭﻣﻦ ﰒ ﻳﺮﺳﻞ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﳌﻨﺎﺳﺒﺔ ﺇﱃ ﺍﳌﺸﺘﺮﻛﲔ‪ .‬ﻭﻫﻮ ﻻ ﻣﺘﺰﺍﻣﻦ‪،‬‬
‫ﻓﺎﻟﺰﺑﻮﻥ )ﺍﳌﺸﺘﺮﻙ( ﻳﻘﻮﻡ ﺑﺘﻨﻔﻴﺬ ﺃﻧﺸﻄﺔ ﺃﺧﺮﻯ ﺑﻴﻨﻤﺎ ﻳﺮﺳﻞ ﺍﳌﺨﺪﻡ ﻣﻼﺣﻈﺎﺕ ﻭﺗﻨﺒﻴﻬﺎﺕ‬
‫ﻟﻠﻤﺸﺘﺮﻙ‪ .‬ﻳﻘﻮﻡ ﺍﳌﺸﺘﺮﻙ ﺑﺘﻨﺒﻴﻪ ﺍﻟﻨﺎﺷﺮ ﺑﺄﻧﻪ ﻳﺮﻳﺪ ﺍﺳﺘﻘﺒﺎﻝ ﻣﻌﻠﻮﻣﺎﺕ ﻣﻌﻴﻨﺔ‪ ،‬ﻭﻋﻨﺪ ﺣﺪﻭﺙ‬
‫ﺙ ﻣﻌﲔ ﳛﻤﻞ ﻣﻌﻪ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﳌﻄﻠﻮﺑﺔ‪ ،‬ﻳﺘﻢ ﺇﺭﺳﺎﳍﺎ ﺇﱃ ﺍﳌﺸﺘﺮﻙ ﺍﻟﺬﻱ ﳝﻠﻚ ﺍﳋﻴﺎﺭ ﰲ‬ ‫ﺣﺪ ِ‬
‫ﺍﺳﺘﻘﺒﺎﻝ ﻫﺬﻩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺃﻭ ﺭﻓﻀﻬﺎ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﳝﻜﻨﻚ ﺗﺰﻭﻳﺪ ﻣﻜﺘﺒﺔ ﺍﻟﻜﺘﺮﻭﻧﻴﺔ‬
‫ﺑﻜﻠﻤﺎﺕ ﻣﻔﺘﺎﺣﻴﺔ ﺣﻮﻝ ﺍﶈﺎﻭﺭ ﺍﻟﱵ ﺗﻜﻮﻥ ﻣﻬﺘﻤﹰﺎ ﺑﺎﳊﺼﻮﻝ ﻋﻠﻴﻬﺎ‪ ،‬ﻭﺣﺎﳌﺎ ﺗﻀﻴﻒ ﺍﳌﻜﺘﺒﺔ‬
‫ﻋﻨﻮﺍﻥ ﺍﻟﻜﺘﺎﺏ ﺍﻟﺬﻱ ﻗﺪ ﳛﺘﻮﻱ ﻋﻠﻰ ﺇﺣﺪﻯ ﺍﻟﻜﻠﻤﺎﺕ ﺍﳌﻔﺘﺎﺣﻴﺔ‪ ،‬ﻓﺈﻥ ﺳﻴﺘﻢ ﺇﺭﺳﺎﻝ ﻣﻌﻠﻮﻣﺎﺕ‬
‫ﺣﻮﻝ ﻫﺬﺍ ﺍﻟﻌﻨﻮﺍﻥ ﺇﻟﻴﻚ ﺑﺸﻜﻞ ﺁﱄ‪ .‬ﺇﻥ ﻫﺬﺍ ﺍﻟﻨﻤﻂ ﻣﻦ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻣﻔﻴﺪ ﺟﺪﹰﺍ ﻣﻦ‬
‫ﺙ ﻣﻌﲔ‪.‬‬‫ﺃﺟﻞ ﻣﺮﺍﻗﺒﺔ ﺍﳊﺎﻻﺕ ﺍﻟﱵ ﳓﺘﺎﺟﻬﺎ ﻟﻠﻘﻴﺎﻡ ﺑﻔﻌﻞ ﻣﺎ ﻋﻨﺪ ﺣﺪﻭﺙ ﺣﺪ ِ‬
‫ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺍﳌﻮﺟﻬﺔ ﺑﺎﻟﺮﺳﺎﺋﻞ )‪ :(MOM‬ﻫﺬﻩ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻏﲑ ﻣﺘﺰﺍﻣﻨﺔ‪ ،‬ﺣﻴﺚ‬ ‫‪x‬‬
‫ﻳﻘﻮﻡ ﺍﻟﺰﺑﻮﻥ ﺑﺈﺭﺳﺎﻝ ﺭﺳﺎﺋﻞ ﻳﺘﻢ ﲨﻌﻬﺎ ﻭﲣﺰﻳﻨﻬﺎ ﺇﱃ ﺃﻥ ﺗﺘﻢ ﻣﻌﺎﳉﺘﻬﺎ‪ ،‬ﺑﻴﻨﻤﺎ ﻳﻘﻮﻡ ﺍﻟﺰﺑﻮﻥ‬
‫ﺑﺘﻨﻔﻴﺬ ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﺃﺧﺮﻯ ﳝﻜﻦ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺗﺪﻓﻖ ﺍﻟﻌﻤﻞ ﻣﺜﻞ ﺗﻄﺒﻴﻘﺎﺕ ﺳﻴﺎﺳﻴﺔ ﺍﻟﺘﺄﻣﲔ‬
‫)ﻭﺍﻟﱵ ﺗﺘﻄﻠﺐ ﻋﺪﺓ ﺧﻄﻮﺍﺕ ﻣﻌﺎﳉﺔ( ﺃﻥ ﺗﺴﺘﻔﻴﺪ ﻣﻦ ﺗﻘﻨﻴﺔ ‪.MOM‬‬
‫ﻭﺳﻴﻂ ﻃﻠﺐ ﺍﻷﻏﺮﺍﺽ )‪ :Object request Broker (ORB‬ﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻟﺘﻘﻨﻴﺔ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ ﺃﻥ‬ ‫‪x‬‬
‫ﺗ‪‬ﺮﺳﻞ ﺃﻏﺮﺍﺿﹰﺎ ﻭﺗﻄﻠﺐ ﺧﺪﻣﺎﺕ ﰲ ﺍﻟﻨﻈﻢ ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻪ‪ ،‬ﺣﻴﺚ ﻳﺘﺘﺒﻊ ﺍﻟﻮﺳﻴﻂ ‪ ORB‬ﻣﻮﻗﻊ‬
‫ﻛﻞ ﻏﺮﺽ‪ ،‬ﻭﻳﻘﻮﻡ ﺑﺘﻮﺟﻴﻪ ﺍﻟﻄﻠﺒﺎﺕ ﺇﱃ ﻛﻞ ﻏﺮﺽ‪.‬ﺇﻥ ﻛﻞ ﻭﺳﻄﺎﺀ ‪ ORB‬ﺍﳊﺎﻟﻴﺔ ﻫﻲ ﻭﺳﻄﺎﺀ‬
‫ﻣﺘﺰﺍﻣﻨﺔ‪ ،‬ﻭﻟﻜﻦ ﻫﻨﺎﻙ ﻭﺳﻄﺎﺀ ‪ ORB‬ﻻ ﻣﺘﺰﺍﻣﻨﺔ ﻗﻴﺪ ﺍﻟﺘﻄﻮﻳﺮ‪.‬‬
‫ﻭﺳﻄﺎﺀ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪ :SQL‬ﻳﺘﻢ ﲢﻘﻴﻖ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻭﻗﻮﺍﻋﺪ‬ ‫‪x‬‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻋﱪ ﺍﻟﺸﺒﻜﺎﺕ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﺮﳎﻴﺎﺕ ﻭﺳﻴﻄﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ‪ SQL‬ﻟﻠﻮﺻﻮﻝ ﺇﱃ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺇﻥ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﲤﺘﻠﻚ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﲢﻮﻳﻞ ﻟﻐﺔ ٍ‪ SQL‬ﻣﻦ ﺷﻜﻠﻬﺎ‬
‫ﺍﻟﻌﺎﻡ ﻭﺍﻟﻘﻴﺎﺳﻲ‪ ،‬ﺇﱃ ﻟﻐﺔ ‪ SQL‬ﺧﺎﺻﺔ ﺑﻘﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﶈﺪﺩﺓ ﰲ ﺍﻻﺗﺼﺎﻝ‪ .‬ﻭﻗﺪ ﺳﻴﻄﺮ ﻋﻠﻰ‬
‫ﻫﺬﺍ ﺍﳌﻴﺪﺍﻥ ﺷﺮﻛﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ ﻗﺎﻣﺖ ﺑﺘﻄﻮﻳﺮ ﺑﺮﳎﻴﺎﺕ ﻭﺳﻴﻄﺔ ﺗﺘﻤﺘﻊ ﺑﺎﻟﻘﺪﺭﺓ ﻋﻠﻰ‬
‫ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺃﻛﺜﺮ ﻣﻦ ﻧﻮﻉ ﻣﻦ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺍﻟﺘﺼﻨﻴﻒ ﺍﻟﺴﺎﺑﻖ ﻳﺰﻭﺩﻧﺎ ﺑﻔﻬﻢ ﺃﺳﺎﺳﻲ ﻟﻼﺧﺘﻼﻓﺎﺕ ﺍﻟﻮﻇﻴﻔﻴﺔ ﰲ ﺍﻟﱪﳎﻴﺎﺕ‬
‫ﺍﻟﻮﺳﻴﻄﺔ‪ ،‬ﺇﻻ ﺃﻥ ﻫﻨﺎﻙ ﻣﻨﺘﺠﺎﺕ ﺻﺤﻴﺤﺔ ﲡﻤﻊ ﺑﲔ ﺍﻟﻘﺪﺭﺍﺕ ﺍﻟﺴﺎﺑﻘﺔ‪.‬‬
‫ﰲ ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ‪ ،‬ﺗﺰﻭﺩﻧﺎ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺍﳌﻮﺟﻬﺔ ﳓﻮ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺑﻮﺍﺟﻬﺔ ﺑﺮﳎﻴﺔ‬
‫‪ API‬ﻣﻦ ﺃﺟﻞ ﺍﻟﻨﻔﺎﺫ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺇﻥ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﱪﳎﻴﺔ ‪ APIs‬ﻫﻲ ﳎﻤﻮﻋﺎﺕ ﻣﻦ‬
‫ﺍﻹﺟﺮﺍﺀﺍﺕ‪ ،‬ﺗﺴﺘﺨﺪﻣﻬﺎ ﺍﻟﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ ﻣﻦ ﺃﺟﻞ ﺗﻨﻔﻴﺬ ﺇﺟﺮﺍﺀﺍﺕ ﻣﻦ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ‬
‫›>‪a K›f8‬‬ ‫‪538‬‬

‫ﺍﳌﺜﺎﻝ‪ ،‬ﻟﺘﺤﻘﻴﻖ ﻋﻤﻠﻴﺔ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺗﻘﻮﻡ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﱪﳎﻴﺔ ‪ API‬ﺑﺎﺳﺘﺪﻋﺎﺀ‬
‫ﺇﺟﺮﺍﺀﺍﺕ ﻣﻦ ﻣﻜﺘﺒﺔ ﻣﺎ‪ ،‬ﻭﺍﻟﱵ ﺑﺪﻭﺭﻫﺎ ﺗﻘﻮﻡ ﺑﺈﺭﺳﺎﻝ ﺗﻌﻠﻴﻤﺎﺕ ‪ SQL‬ﺑﺸﻜﻞ ﺷﻔﺎﻑ ﺇﱃ ﳐﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﳝﻜﻦ ﻟﻠﻮﺍﺟﻬﺔ ﺍﻟﱪﳎﻴﺔ ﺃﻥ ﺗﻌﻤﻞ ﻣﻊ ﺑﺮﳎﻴﺎﺕ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ ‪ ،front-end‬ﻣﺜﻞ‬
‫ﻟﻐﺎﺕ ﺍﳉﻴﻞ ﺍﻟﺜﺎﻟﺚ‪ ،‬ﺃﻭ ﻣﻮﻟﺪﺍﺕ ﺍﻟﺘﻘﺎﺭﻳﺮ ﺍﳌﺘﺨﺼﺼﺔ‪ ،‬ﻭﳝﻜﻦ ﺃﻥ ﺗﺘﻀﻤﻦ ﺗﺴﻬﻴﻼﺕ ﺧﺎﺻﺔ ‪‬ﺎ ﻣﻦ‬
‫ﺃﺟﻞ ﺑﻨﺎﺀ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ .‬ﻋﻨﺪﻣﺎ ﺗﻜﻮﻥ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﱪﳎﻴﺔ ﻣﺘﺎﺣﺔ ﻟﻌﺪﺓ ﺃﺩﻭﺍﺕ ﺗﻄﻮﻳﺮ ﺑﺮﳎﻴﺔ‪ ،‬ﻓﺈﻧﻪ‬
‫ﺳﻴﻜﻮﻥ ﻟﺪﻳﻚ ﺍﺳﺘﻘﻼﻟﻴﺔ ﻣﻌﺘﱪﺓ ﻟﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﺰﺑﻮﻥ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﻴﺌﺔ ﺍﻟﱪﳎﺔ ﺍﻷﻛﺜﺮ ﻣﻼﺀﻣﺔ ﰲ‬
‫ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ‪ ،‬ﻃﺎﳌﺎ ﺃ‪‬ﺎ ﺗﺴﺘﻄﻴﻊ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻣﻌﻄﻴﺎﺕ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻣﺜﻞ ﻫﺬﻩ‬
‫ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﲡﻌﻞ ﻣﻦ ﺍﳌﻤﻜﻦ ﻟﻠﻤﻄﻮﺭﻳﻦ ﺃﻥ ﻳﺮﺑﻄﻮﺍ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺑﺴﻬﻮﻟﺔ ﻣﻊ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ‬
‫ﺷﺎﺋﻌﺔ‪.‬‬

‫‪άϴϔϨΗ ϞΟ΃ Ϧϣ ΔϴϘϴΒτΘϟ΍ Ξϣ΍ήΒϟ΍ ΎϬϣΪΨΘδΗ ˬΕ΍˯΍ήΟϹ΍ Ϧϣ ΔϋϮϤΠϣ ϲϫ :API ΔϴΠϣήΒϟ΍ ΔϬΟ΍Ϯϟ΍‬‬

‫·‪.ϞϴϐθΘϟ΍ ϡΎψϧ Ϧϣ Ε΍˯΍ήΟ‬‬

‫ﺇﻥ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻔﺘﻮﺣﺔ ﻣﺸﺎ‪‬ﺔ ﻟﻠﻮﺍﺟﻬﺔ ﺍﻟﱪﳎﻴﺔ ‪ ،API‬ﻭﻟﻜﻨﻬﺎ ﻣﺘﺎﺣﺔ‬
‫ﻓﻘﻂ ﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﺍﻟﱵ ﺗﻌﻤﻞ ﲢﺖ ﺑﻴﺌﺔ ‪.Windows‬‬
‫ﻭﻫﻲ ﻣﻔﻴﺪﺓ ﻛﺜﲑﹰﺍ ﰲ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ‪ ،‬ﻭﻟﻴﺴﺖ ﻣﻨﺎﺳﺒﺔ ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﺃﳕﺎﻁ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﺍﻷﺧﺮﻯ ﻣﺜﻞ ﻣﻠﻔﺎﺕ ‪ .(La Rue, 1997) ISAM‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﺻﻌﺒﺔ‬
‫ﺍﻟﱪﳎﺔ ﻭﺍﻟﺘﺤﻘﻴﻖ‪ ،‬ﻭﻟﻜﻨﻬﺎ ﺣﺎﺯﺕ ﻋﻠﻰ ﻗﺒﻮﻝ ﺟﻴﺪ‪ ،‬ﻭﺫﻟﻚ ﻷ‪‬ﺎ ﺗﺴﻤﺢ ﻟﻠﻤﱪﳎﲔ ﺑﺎﻻﺗﺼﺎﻝ ﻣﻊ ﺃﻱ‬
‫ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺗﺎﺑﻌﺔ ﻷﻱ ﻣﻨﺘﺞ )ﻣﻮﺯﻉ( ﺗﻘﺮﻳﺒﺎﹰ‪ ،‬ﺩﻭﻥ ﺍﳊﺎﺟﺔ ﳌﻌﺮﻓﺔ ﺍﻟﺸﻴﻔﺮﺓ ﺍﳌﻨﺎﺳﺒﺔ ﺍﳋﺎﺻﺔ‬
‫ﺑﻘﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺍﻧﻈﺮ ﺇﱃ ﺍﻟﻔﺼﻞ ﺍﻟﻌﺎﺷﺮ ﳌﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ ﺣﻮﻝ ‪ ODBC‬ﻭﻛﻴﻔﻴﺔ ﲢﻘﻴﻖ‬
‫ﺍﻻﺗﺼﺎﻝ ﺑﻘﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺍﻹﻧﺘﺮﻧﺖ‪.‬‬
‫ﻭﻗﺪ ﺃﻋﻄﺖ ﺗﻘﻨﻴﺔ ‪ OLE-DB‬ﻣﻦ ‪ Microsoft‬ﻗﻴﻤﺔ ﺇﺿﺎﻓﻴﺔ ﳌﻌﻴﺎﺭ ‪ ODBC‬ﻋﻦ ﻃﺮﻳﻖ ﺗﺰﻭﻳﺪﻩ ﺑﻨﻘﻄﺔ‬
‫ﻭﺍﺣﺪﺓ ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ )‪ .(Linthicum, 1997‬ﲣﻄﻂ ﺷﺮﻛﺔ ‪ Microsoft‬ﳉﻌﻞ ﺗﻘﻨﻴﺔ‬
‫‪ OLE-DB‬ﻣﻌﻴﺎﺭﹰﺍ ﻋﻤﻮﻣﻴﹰﺎ ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻗﺪ ﺃﺿﺎﻓﺖ ﺗﻘﻨﻴﺔ ‪ OLE-DB‬ﺇﱃ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﺍﺳﺘﺨﺮﺍﺝ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺗﻄﺒﻴﻘﺎﺕ ‪.OLAP‬ﻛﻤﺎ ﳝﻜﻦ ﲢﻘﻴﻖ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻘﺪﳝﺔ‬
‫ﰲ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﻌﺾ ﺍﳌﻨﺘﺠﺎﺕ ﻣﺜﻞ ‪ EDA/SQL‬ﺍﻟﱵ ﲢﺎﻭﻝ ﺩﻋﻢ ﺍﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻐﻴﻞ ﺍﳌﺨﺘﻠﻔﺔ‪ ،‬ﻭﺍﻟﺸﺒﻜﺎﺕ ﻭﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫‪Java‬‬ ‫ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺻﻔﻮﻑ ‪) JDBC‬ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ (Java‬ﰲ ﻣﺴﺎﻋﺪﺓ ﺑﺮﳎﻴﺎﺕ‬
‫ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﻋﺪﺩ ﻣﻦ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺩﻭﻥ ﺍﳊﺎﺟﺔ ﻟﻔﻬﻢ ﺍﳋﺼﺎﺋﺺ ﺍﳋﺎﺻﺔ ﺑﻘﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫‪539‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺗﻌﺮﻑ ﺗﻘﻨﻴﺔ ‪ JDBC‬ﻭﺍﺟﻬﺔ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻻﺳﺘﺪﻋﺎﺀ )‪ Call-level Inter face (CLI‬ﻣﻦ ﺃﺟﻞ ﻋﻤﻠﻴﺎﺕ‬
‫ﺍﻟﺘﻄﻮﻳﺮ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ‪ ،Java‬ﻭﺗﺴﺘﻤﺪ ﻣﻦ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﺍﺗﻔﺎﻗﺎ‪‬ﺎ )ﻣﻌﺎﻳﲑﻫﺎ ‪ .(conventions‬ﺇﻥ ﺑﻨﺎﺀ‬
‫ﻟﻐﺔ ﻣﺸﺘﺮﻛﺔ ﺗﻘﺪﻡ ﺑﺘﻌﺮﻳﻒ ﻭﺍﺟﻬﺎﺕ ﺑﲔ ﺍﳌﻜﻮﻧﺎﺕ ﻭﺍﻵﻟﻴﺎﺕ ﺍﻟﱵ ﺗﺘﻮﺳﻂ ﺑﻴﻨﻬﺎ ﻣﻦ ﺷﺄﻧﻪ ﺃﻥ ﻳﺴﻬﻞ‬
‫ﺗﻄﻮﻳﺮ ﺑﺮﳎﻴﺔ ﻭﺳﻴﻄﺔ ﻋﻤﻮﻣﻴﺔ )‪ .(keuffel, 1997‬ﻭﻗﺪ ﻗﺎﻡ ﺍﻻﲢﺎﺩ ‪) OMG‬ﻭﻫﻮ ﺍﲢﺎﺩ ﺻﻨﺎﻋﻲ ﰎ‬
‫ﺗﺄﺳﻴﺴﻪ ﻋﺎﻡ ‪ ،1989‬ﻭﻫﻮ ﺍﺧﺘﺼﺎﺭ ﻟـ ‪ (Object Management Group‬ﺑﺈﻧﺘﺎﺝ ﻣﻌﻴﺎﺭ ﺍﲰﺎﻩ‬
‫‪ (Request Broker Common Object) CORBA‬ﺍﻟﺬﻱ ﻭﺿﻊ ﺗﻮﺻﻴﻒ ﺑﺮﳎﻴﺔ ﻋﻤﻮﻣﻴﺔ ﻭﺳﻴﻄﺔ‬
‫ﻏﺮﺿﻴﺔ ﺍﻟﺘﻮﺟﻪ‪ .‬ﻭﻗﺪ ﻗﺎﻣﺖ ﺷﺮﻛﺔ ‪ Microsoft‬ﺑﺘﻄﻮﻳﺮ ﳕﻮﺫﺟﺎﹰ ﺍﲰﻪ ‪(Distributed DCOM‬‬
‫)‪ ،Component Object Model‬ﻭﻟﻜﻦ ﻣﻌﻴﺎﺭ ‪ CORBA‬ﺑﻘﻲ ﻫﻮ ﺍﻷﻗﻮﻯ ﻛﺘﻮﺻﻴﻒ‪ ،‬ﻷﻧﻪ ﻗﺪ ﻃﻮﺭ‬
‫ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺃﻧﻈﻤﺔ ﺍﳌﻨﺼﺎﺕ ﺍﳌﺨﺘﻠﻔﺔ‪ .‬ﺇﻥ ﻣﺜﻞ ﻫﺬﻩ ﺍﳌﻌﺎﻳﲑ ﻣﻬﻤﺔ ﺑﺸﻜﻞ ﺧﺎﺹ ﰲ‬
‫ﺷﺒﻜﺔ ﺍﻹﻧﺘﺮﻧﺖ ﺍﻟﻮﺍﺳﻌﺔ ﺍﻟﻌﺎﳌﻴﺔ ‪ www‬ﻭﺫﻟﻚ ﺑﺴﺒﺐ ﺍﻟﺘﻨﻮﻉ ﺍﻟﻜﺒﲑ ﰲ ﺍﻟﺒﻴﺌﺎﺕ ﺍﳌﺘﺼﻠﺔ ‪‬ﺎ‪.‬‬

‫!?‪·j¦…¶WážK?E:·K—dE‬‬
‫ﺃﺩﺕ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺇﱃ ﻇﻬﻮﺭ ﺍﻟﺸﺒﻜﺎﺕ ﺍﻟﱵ ﺗﺼﻞ ﻣﻜﻮﻧﺎﺕ‬
‫ﻫﺬﻩ ﺍﻟﺒﻴﺌﺔ ﻣﻊ ﺑﻌﻀﻬﺎ‪ .‬ﺇﻥ ﲢﻘﻴﻖ ﺃﻣﻦ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﺒﻴﺌﺎﺕ ﺍﳌﻮﺯﻋﺔ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﹰﺍ‬
‫ﻣﻦ ﲢﻘﻴﻘﻪ ﰲ ﺍﻟﺒﻴﺌﺔ ﺍﳌﺮﻛﺰﻳﺔ )ﳌﺰﻳﺪ ﻣﻦ ﺍﻟﺘﻔﺼﻴﻞ ﻋﻦ ﺃﻣﻦ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻧﻈﺮ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﱐ‬
‫ﻋﺸﺮ(‪ .‬ﺇﻥ ﺍﻟﺸﺒﻜﺎﺕ ﺣﺴﺎﺳﺔ )ﺳﺮﻳﻌﺔ ﺍﻟﺘﺄﺛﺮ( ﻟﻼﺧﺘﺮﺍﻗﺎﺕ ﺍﻷﻣﻨﻴﺔ ﻣﻦ ﺧﻼﻝ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻨﺼﺖ‬
‫ﻭﻋﻤﻠﻴﺎﺕ ﺍﻻﺗﺼﺎﻝ ﻏﲑ ﺍﳌﺸﺮﻭﻋﺔ )ﻏﲑ ﺍﳌﺴﻤﻮﺡ ‪‬ﺎ(‪ ،‬ﺃﻭ ﺍﻻﺳﺘﺮﺟﺎﻉ ﻏﲑ ﺍﳌﺸﺮﻭﻉ ﳊﺰﻡ )ﻃﺮﻭﺩ(‬
‫ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺗﻨﺘﻘﻞ ﻋﱪ ﺍﻟﺸﺒﻜﺔ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ ﺑﲎ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﺃﻛﺜﺮ ﺣﺴﺎﺳﻴﺔ ﻟﻼﺧﺘﺮﺍﻗﺎﺕ‬
‫ﺍﻷﻣﻨﻴﺔ ﻣﻦ ﺍﻟﻨﻈﻢ ﺍﳌﺘﻤﺮﻛﺰﺓ‪.‬‬
‫ﺇﻥ ﻣﻘﺎﻳﻴﺲ ﺍﻷﻣﻦ ﺍﻟﱵ ﳚﺐ ﺍﲣﺎﺫﻫﺎ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺗﺘﻀﻤﻦ ﺍﳌﻘﺎﻳﻴﺲ ﺍﻷﻣﻨﻴﺔ ﺍﻟﺸﺎﺋﻌﺔ ﻣﻦ ﺃﺟﻞ‬
‫ﺃﻣﻦ ﲨﻴﻊ ﺍﻟﻨﻈﻢ‪ ،‬ﻭﻟﻜﻦ ﳚﺐ ﺃﻥ ﺗﺘﻀﻤﻦ ﻣﻘﺎﻳﻴﺲ ﺇﺿﺎﻓﻴﺔ ﻳﺘﻮﺟﺐ ﺍﲣﺎﺫﻫﺎ ﻣﻦ ﺃﺟﻞ ﻋﻤﻠﻴﺎﺕ ﺃﻣﻦ‬
‫ﺧﺎﺻﺔ ﺑﺎﻟﺒﻴﺌﺎﺕ ﺍﳌﻮﺯﻋﺔ ﻟﺒﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﺫﻟﻚ ﺣﺴﺐ )‪ (Bobrowski, 1994‬ﻭﻫﻲ‪:‬‬
‫ﺃﻣﻦ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﻨﻈﺎﻡ‪ ،‬ﺗﺴﺘﺨﺪﻡ ﻋﺎﺩﺓ ﺃﲰﺎﺀ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ‬ ‫‪x‬‬
‫ﺍﳌﻮﺍﻓﻘﺔ ﻟﻜﻞ ﻣﻨﻬﺎ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﻌﺮﻳﻒ ﺑﺎﳌﺴﺘﺨﺪﻣﲔ ﻭﺻﻼﺣﻴﺎ‪‬ﻢ ﻋﻨﺪﻣﺎ ﻳﺮﻏﺒﻮﻥ ﺑﺎﻻﺗﺼﺎﻝ‬
‫ﺑﻨﻈﺎﻡ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﺘﻌﺪﺩ ﺍﳌﺴﺘﺨﺪﻣﲔ‪ ،‬ﻭﳚﺐ ﺃﻥ ﺗﺘﻀﻤﻦ ﻣﻌﺎﻳﲑ ﺍﻷﻣﻦ ﻗﻮﺍﻋﺪ ﲢﺪﺩ ﺃﻃﻮﺍﻝ‬
‫ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ‪ ،‬ﺍﺗﻔﺎﻗﺎﺕ ﺗﺴﻤﻴﺔ ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ‪ ،‬ﻣﻌﺪﻝ ﺗﻐﻴﲑﺍﺕ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ‪ ....،‬ﻭﳚﺐ ﺃﻥ‬
‫ﺗﻀﻤﻦ ﺃﺩﻭﺍﺕ ﺇﺩﺍﺭﺓ ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ ﻛﺠﺰﺀ ﻣﻦ ﺍﻟﺸﺒﻜﺔ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪540‬‬

‫ﺃﻣﺎﻥ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ :‬ﻣﻌﻈﻢ ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳋﺎﺻﺔ‬ ‫‪x‬‬
‫ﺑﺒﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﲤﺘﻠﻚ ﺃﺷﻜﺎﻝ ﲪﺎﻳﺔ ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺗﺸﺒﻪ‬
‫ﻫﺬﻩ ﺍﻷﺷﻜﺎﻝ ﺗﻠﻚ ﺍﻟﱵ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﻨﻈﺎﻡ‪.‬‬
‫ﻣﻦ ﺍﳌﻤﻜﻦ ﺃﻥ ﺗﺘﻢ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﳍﻮﻳﺔ ﻣﻦ ﺧﻼﻝ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﻣﻦ ﰒ ﲤﺮﻳﺮ ﻣﻌﻠﻮﻣﺎﺕ‬
‫ﻫﺬﻩ ﺍﻟﻌﻤﻠﻴﺔ ﺇﱃ ﻫﺬﺍ ﺍﳌﺴﺘﻮﻯ‪ .‬ﺇﻥ ﻋﻤﻠﻴﺔ ﺍﻹﺩﺍﺭﺓ ﺍﻟﱵ ﺗﺴﺘﻔﻴﺪ ﻣﻦ ﻣﻘﺪﺭﺍﺕ ﺍﻟﻨﻈﺎﻡ ﻟﻠﺤﺼﻮﻝ‬
‫ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺍﳍﻮﻳﺔ ﻫﻲ ﻋﻤﻠﻴﺔ ﺳﻬﻠﺔ‪ ،‬ﺇﻻ ﺃﻥ ﺍﶈﺎﻭﻻﺕ ﺍﳋﺎﺭﺟﻴﺔ ﻟﻠﻮﺻﻮﻝ ﺇﱃ‬
‫ﺍﻟﻘﺎﻋﺪﺓ ﺳﺘﻜﻮﻥ ﺳﻬﻠﺔ ﺃﻳﻀﹰﺎ ﻷﻥ ﲤﺮﻳﺮ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺑﲔ ﻫﺬﻩ ﺍﳌﺴﺘﻮﻳﺎﺕ ﺳﻴﻘﻠﻞ ﻣﻦ ﻋﺪﺩ‬
‫ﺍﻟﻄﺒﻘﺎﺕ ﺍﻟﱵ ﲢﺎﻓﻆ ﻋﻠﻰ ﺃﻣﻦ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ ﻣﻦ ﻃﺒﻘﺘﲔ ﺇﱃ ﻃﺒﻘﺔ ﻭﺍﺣﺪﺓ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﳚﺐ ﻋﺪﻡ‬
‫ﺗﺸﺠﻴﻊ ﺍﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﺍﻟﱵ ﻳﻘﻮﻡ ‪‬ﺎ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪.‬‬
‫ﺃﻣﻦ ﺍﻻﺗﺼﺎﻻﺕ ﰲ ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ :‬ﺇﻥ ﺍﻟﺘﺸﻔﲑ ﺳﻴﺴﺎﻋﺪ ﺃﻣﻦ ﺍﻻﺗﺼﺎﻻﺕ ﰲ ﻫﺬﻩ ﺍﻟﻨﻈﻢ‪،‬‬ ‫‪x‬‬
‫ﺣﻴﺚ ﺍﻟﺘﺸﻔﲑ ﻫﻮ ﻋﻤﻠﻴﺔ ﲢﻮﻳﻞ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻘﺮﻭﺀﺓ )ﺍﻟﻨﺺ ﺍﻟﺼﺮﻳﺢ( ﺇﱃ ﻣﻌﻄﻴﺎﺕ ﻏﲑ ﻣﻘﺮﻭﺀﺓ‬
‫)ﻧﺺ ﻣﺸﻔﺮ(‪ .‬ﻳﺮﺳﻞ ﻣﻌﻈﻢ ﺍﻟﺰﺑﺎﺋﻦ ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ ﺍﳋﺎﺻﺔ ﺑﻘﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻛﻨﺺ ﺻﺮﻳﺢ‬
‫ﺇﱃ ﳐﺪﻣﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺗﺴﺘﺨﺪﻡ ﺍﻟﻨﻈﻢ ﺍﻟﻀﺨﻤﺔ ﻹﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﻣﺜﻞ‬
‫‪ Oracle‬ﻭ‪ Sybase‬ﻭ‪ Inform‬ﻗﺪﺭﺍﺕ ﻧﻘﻞ ﺁﻣﻨﺔ ﻟﻨﻘﻞ ﻛﻠﻤﺎﺕ ﺍﳌﺮﻭﺭ ﻋﱪ ﺍﻟﺸﺒﻜﺔ‪ .‬ﺇﻥ ﻋﻤﻠﻴﺎﺕ‬
‫ﺗﺸﻔﲑ ﲨﻴﻊ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ ﻳﺘﻢ ﲤﺮﻳﺮﻫﺎ ﻋﱪ ﺍﻟﺸﺒﻜﺔ ﺗﻜﻮﻥ ﻣﻄﻠﻮﺑﺔ ﺑﺸﻜﻞ ﻭﺍﺿﺢ‪ ،‬ﻭﻟﻜﻦ‬
‫ﻫﻨﺎﻙ ﻛﻠﻔﺔ ﻛﺒﲑﺓ ﻟﱪﳎﻴﺎﺕ ﺍﻟﺘﺸﻔﲑ‪ ،‬ﻭﻟﺬﻟﻚ ﻓﺈﻥ ﺍﻟﺘﺸﻔﲑ ﺳﻴﺆﺛﺮ ﻋﻠﻰ ﺍﻷﺩﺍﺀ ﺑﺸﻜﻞ ﺳﻠﱯ‬
‫ﺑﺴﺒﺐ ﺍﻟﺰﻣﻦ ﺍﻟﻼﺯﻡ ﻟﺘﺸﻔﲑ ﻭﻓﻚ ﺗﺸﻔﲑ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬

‫‪·jZ›¶Wág;ëLj›kA  WB<&›žKE:<&›W ›j?dA<MEC—KK9‬‬


‫ﺇﻥ ﺍﻻﻧﻔﺠﺎﺭ ﺍﻟﺬﻱ ﺣﺪﺙ ﰲ ﻣﻮﺍﻗﻊ ﺍﻟﻮﻳﺐ ﻭﺟﻌﻞ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳊﺎﻟﻴﺔ ﻗﺎﺑﻠﺔ ﻟﻠﻮﺻﻮﻝ ﻣﻦ ﻗﺒﻞ‬
‫ﻣﺴﺘﻌﺮﺽ ﺍﻟﻮﻳﺐ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﺗﺼﺎﻻﺕ ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﺃﺩﻯ ﺇﱃ ﻇﻬﻮﺭ ﻗﻀﺎﻳﺎ ﺟﺪﻳﺪﺓ ﺃﺑﻌﺪ ﻣﻦ ﺍﻟﻘﻀﺎﻳﺎ‬
‫ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺍﳋﺎﺻﺔ ﺑﺄﻣﻦ ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﻟﱵ ﲤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﰲ ﺍﻟﻔﻘﺮﺓ ﺍﻟﺴﺎﺑﻘﺔ‪ .‬ﺇﻥ ﺍﻹﻧﺸﺎﺀ‬
‫ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻲ )ﺍﻵﱄ( ﻟﺼﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻧﻄﻼﻗﹰﺎ ﻣﻦ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻳﺘﻄﻠﺐ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻫﺬﻩ‬
‫ﺍﻟﻘﺎﻋﺪﺓ‪ ،‬ﻓﺈﺫﺍ ﻛﺎﻧﺖ ﻫﺬﻩ ﺍﻟﻘﺎﻋﺪﺓ ﻏﲑ ﳏﻤﻴﺔ ﺑﺸﻜﻞ ﺟﻴﺪ‪ ،‬ﻓﺈ‪‬ﺎ ﺳﺘﻜﻮﻥ ﺿﻌﻴﻔﺔ ﻭﻣﻌﺮﺿﺔ ﻟﻠﻮﺻﻮﻝ‬
‫ﻣﻦ ﻗﺒﻞ ﺃﻱ ﻣﺴﺘﺨﺪﻡ‪ .‬ﻭﻫﺬﻩ ﻫﻲ ﺍﻟﻨﻘﻄﺔ ﺍﳉﺪﻳﺪﺓ ﺍﳋﺎﺻﺔ ﺑﻀﻌﻒ ﺃﻣﻦ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﺍﻟﱵ ﰎ‬
‫ﲡﻨﺒﻬﺎ ﺳﺎﺑﻘﹰﺎ ﻣﻦ ﻗﺒﻞ ﺍﳌﺨﻄﻄﺎﺕ ﺍﻟﺼﺎﺭﻣﺔ ﺍﳋﺎﺻﺔ ﺑﺎﻟﺘﺤﻘﻖ ﻣﻦ ﺻﻼﺣﻴﺎﺕ ﺍﻟﻨﻔﺎﺫ ﺇﱃ ﻗﺎﻋﺪﺓ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﳌﺆﺳﺴﺔ ﺗﺮﻏﺐ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺎﺕ ‪ HTML‬ﺳﺎﻛﻨﺔ ﻓﻘﻂ‪ ،‬ﻋﻨﺪﺋ ِﺬ ﻓﻌﻤﻠﻴﺔ ﺍﳊﻤﺎﻳﺔ ﳚﺐ‬
‫ﺃﻥ ﺗﺘﻢ ﳌﻠﻔﺎﺕ ‪ HTML‬ﺍﳌﺨﺰﻧﺔ ﻋﻠﻰ ﳐﺪﻡ ﺍﻟﻮﻳﺐ‪ .‬ﺗﺴﺘﺨﺪﻡ ﻋﻤﻠﻴﺔ ﺑﻨﺎﺀ ﺻﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻟﺴﺎﻛﻨﺔ‬
‫‪541‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺃﺩﻭﺍﺕ ﺗﻘﻠﻴﺪﻳﺔ ﺧﺎﺻﺔ ﺑﻨﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﺜﻞ ‪ Visual Basic‬ﻭ‪ ،Power Builder‬ﻭﺑﺎﻟﺘﺎﱄ ﳝﻜﻦ‬
‫ﺍﻟﺘﺤﻜﻢ ﺑﻌﻤﻠﻴﺔ ﺇﻧﺸﺎﺋﻬﻢ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻃﺮﺍﺋﻖ ﻗﻴﺎﺳﻴﺔ ﻟﻠﺘﺤﻜﻢ ﺑﺎﻟﻨﻔﺎﺫ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺇﺫﺍ ﻛﺎﻧﺖ‬
‫ﺑﻌﺾ ﻣﻠﻔﺎﺕ ‪ HTML‬ﺍﶈﻤﻠﺔ ﻋﻠﻰ ﳐﺪﻡ ﺍﻟﻮﻳﺐ ﺣﺴﺎﺳﺔ ﻓﻴﻤﻜﻦ ﻭﺿﻌﻬﺎ ﰲ ﳎﻠﺪﺍﺕ ﳏﻤﻴﺔ‬
‫ﺑﺎﺳﺘﺨﺪﺍﻡ ﺁﻟﻴﺎﺕ ﺍﳊﻤﺎﻳﺔ ﺍﻟﱵ ﻳﻘﺪﻣﻬﺎ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ‪ ،‬ﺃﻭ ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﳌﻠﻔﺎﺕ ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮﺍﺀﺓ‬
‫ﻭﻟﻜﻦ ﻏﲑ ﻣﻨﺸﻮﺭﺓ ﰲ ﺍ‪‬ﻠﺪ‪ .‬ﻭﻟﺬﻟﻚ ﳚﺐ ﻋﻠﻰ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻌﺮﻓﺔ ﺍﺳﻢ ﺍﳌﻠﻒ ﺑﺸﻜﻞ ﺩﻗﻴﻖ ﻣﻦ‬
‫ﺃﺟﻞ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺻﻔﺤﺔ ‪ HTML‬ﺣﺴﺎﺳﺔ‪ .‬ﻛﻤﺎ ﺃﻧﻪ ﻣﻦ ﺍﻟﺸﺎﺋﻊ ﺃﻥ ﻳﺘﻢ ﺍﺧﺘﺼﺎﺭ ﳏﺘﻮﻳﺎﺕ ﳐﺪﻡ‬
‫ﺍﻟﻮﻳﺐ ﻋﻠﻰ ﺻﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻟﱵ ﻳﻜﻮﻥ ﻣﺴﻤﻮﺣﹰﺎ ﺍﺳﺘﻌﺮﺍﺿﻬﺎ ﺑﺸﻜﻞ ﻋﻤﻮﻣﻲ‪ .‬ﺃﻣﺎ ﺍﳌﻠﻔﺎﺕ‬
‫ﺍﳊﺴﺎﺳﺔ ﻓﻴﻤﻜﻦ ﺣﻔﻈﻬﺎ ﻋﻠﻰ ﳐﺪﻡ ﺁﺧﺮ ﻗﺎﺑﻞ ﻟﻠﻮﺻﻮﻝ ﻣﻦ ﻗﺒﻞ ﺷﺒﻜﺔ ﺍﻹﻧﺘﺮﺍﻧﺖ ﺍﳋﺎﺻﺔ‬
‫ﺑﺎﳌﺆﺳﺴﺔ‪ ،‬ﺇﻥ ﻗﻴﺎﺳﺎﺕ ﺍﳊﻤﺎﻳﺔ )ﻣﺜﻞ ﺗﻠﻚ ﺍﳌﻮﺻﻮﻓﺔ ﺳﺎﺑﻘﹰﺎ( ﺳﺘﻜﻮﻥ ﻣﻄﻠﻮﺑﺔ ﺇﺫﺍ ﻛﺎﻥ ﻫﻨﺎﻙ ﺑﻌﺾ‬
‫ﺍﳌﺴﺘﺨﺪﻣﲔ ﻏﲑ ﻣﺴﻤﻮﺡ ﳍﻢ ﺑﺎﻟﻮﺻﻮﻝ ﺇﱃ ﲨﻴﻊ ﺍﳌﻠﻔﺎﺕ ﺍﳌﺨﺰﻧﺔ ﻋﻠﻰ ﺷﺒﻜﺔ ﺍﻹﻧﺘﺮﺍﻧﺖ ﺍﳋﺎﺻﺔ‬
‫ﺑﺎﳌﺆﺳﺴﺔ‪.‬‬
‫ﻭﻫﻨﺎ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﻼﺣﻴﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﺤﻜﻢ ﺑﻌﻤﻠﻴﺎﺕ‬
‫ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻠﻔﺎﺕ ﺍﳊﺴﺎﺳﺔ‪.‬‬
‫ﺇﻥ ﻣﻘﺎﻳﻴﺲ ﺍﳊﻤﺎﻳﺔ ﺍﳋﺎﺻﺔ ﺑﺘﻮﻟﻴﺪ ﺻﻔﺤﺎﺕ ﺍﻟﻮﻳﺐ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ ﳐﺘﻠﻔﺔ ﻋﻤﺎ ﺳﺒﻖ‪ .‬ﺣﻴﺚ ﻳﺘﻢ ﲣﺰﻳﻦ‬
‫ﺍﻟﺼﻔﺤﺎﺕ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﻛﻘﻮﺍﻟﺐ‪ ،‬ﻭﻣﻦ ﰒ ﻳﺘﻢ ﻧﻘﻞ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳊﺎﻟﻴﺔ ﺍﳌﻨﺎﺳﺒﺔ ﻣﻦ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﻭﺇﻗﺤﺎﻣﻬﺎ ﰲ ﻫﺬﻩ ﺍﻟﻘﻮﺍﻟﺐ ﺣﺎﳌﺎ ﻳﺘﻢ ﺗﺸﻐﻴﻞ ﺍﻻﺳﺘﻌﻼﻡ ﺃﻭ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﳌﺮﺗﺒﻄﺔ ‪‬ﺬﻩ ﺍﻟﺼﻔﺤﺔ‪.‬‬
‫ﻭﻫﺬﺍ ﻳﻌﲏ ﺃﻥ ﳐﺪﻡ ﺍﻟﻮﻳﺐ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻗﺎﺩﺭﹰﺍ ﻋﻠﻰ ﺍﻟﻮﺻﻮﻝ ﻭﺍﻟﻨﻔﺎﺫ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪،‬‬
‫ﻭﻟﻴﻌﻤﻞ ﺍﻻﺗﺼﺎﻝ ﻣﻊ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺑﺸﻜﻞ ﺟﻴﺪ‪ ،‬ﻓﺈﻧﻪ ﳚﺐ ﺃﻥ ﻳﺴﺘﻄﻴﻊ ﺍﻟﻨﻔﺎﺫ ﺑﺸﻜﻞ ﻛﺎﻣﻞ‬
‫ﻟﻘﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ ﲢﻘﻴﻖ ﺍﻵﻣﺎﻥ ﺍﳌﻄﻠﻮﺏ ﻟﻠﻤﺨﺪﻡ ﻫﻮ ﻧﻘﻄﺔ ﺣﺮﺟﺔ ﳊﻤﺎﻳﺔ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﺍﳌﺨﺪﻡ ﺍﳌﺘﺼﻞ ﺑﻘﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺁﻣﻨﹰﺎ ﻓﻴﺰﻳﺎﺋﻴﺎﹰ‪ ،‬ﻭﺃﻥ ﻳﻜﻮﻥ ﺑﺎﻹﻣﻜﺎﻥ ﺍﻟﺘﺤﻜﻢ ﺑﺘﻨﻔﻴﺬ‬
‫ﺗﻮﺻﻴﻒ ‪ CGI‬ﻭﺍﺟﻬﺔ ﺭﺑﻂ ﺑﻮﺍﺑﺔ ﻣﺸﺘﺮﻛﺔ‪.‬‬
‫ﳝﻜﻦ ﺍﻟﺘﺤﻜﻢ ﺑﻌﻤﻠﻴﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﺧﻼﻝ ﻃﺒﻘﺔ ﺃﺧﺮﻯ ﻣﻦ ﺍﳊﻤﺎﻳﺔ‪ ،‬ﻭﻫﻲ ﻃﺒﻘﺔ‬
‫ﺍﳊﻤﺎﻳﺔ ﺍﳋﺎﺻﺔ ﺑﺎﻟﺘﺤﻘﻖ ﻣﻦ ﺻﻼﺣﻴﺎﺕ ﺍﳌﺴﺘﺨﺪﻣﲔ‪ .‬ﻭﺳﻴﺴﻤﺢ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻤﻠﻴﺔ ﺗﺴﺠﻴﻞ ﺍﻟﺪﺧﻮﻝ‬
‫)‪ (login‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺻﻔﺤﺎﺕ ‪ HTML‬ﳌﺪﻳﺮ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ‪ DBA‬ﺑﺘﻌﺮﻳﻒ ﺻﻼﺣﻴﺎﺕ ﻛﻞ‬
‫ﻣﺴﺘﺨﺪﻡ‪ .‬ﻭﻛﻞ ﺟﻠﺴﺔ ﳝﻜﻦ ﺗﺘﺒﻌﻬﺎ ﻋﻦ ﻃﺮﻳﻖ ﲣﺰﻳﻦ ﺑﻌﺾ ﺍﳌﻌﻠﻮﻣﺎﺕ‪ ،‬ﻋﻠﻰ ﺁﻟﺔ ﺍﻟﺰﺑﻮﻥ ﻭﻫﺬﻩ‬
‫ﺍﳌﻌﻠﻮﻣﺎﺕ ﳝﻜﻦ ﺇﻋﺎﺩ‪‬ﺎ ﺇﱃ ﺍﳌﺨﺪﻡ ﻭﺑﺎﻟﺘﺎﱄ ﺳﺘﺰﻭﺩﻩ ﺑﺎﳌﻌﻠﻮﻣﺎﺕ ﺍﳋﺎﺻﺔ ﲜﻠﺴﺔ ﺍﻟﺪﺧﻮﻝ‪ .‬ﻛﻤﺎ‬
‫ﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ ﺗﻮﺻﻴﻔﺎﺕ ‪ CGI‬ﻭﺍﻟﻄﺮﻕ ﺍﻷﺧﺮﻯ ﻣﻦ ﺃﺟﻞ ﻛﺘﺎﺑﺔ ﺍﻹﺟﺮﺍﺋﻴﺎﺕ ﺍﻟﻼﺯﻣﺔ ﻟﻠﺘﺤﻘﻖ ﻣﻦ‬
‫ﺍﻟﺼﻼﺣﻴﺎﺕ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪542‬‬

‫ﻛﻤﺎ ﺃﻧﻪ ﳚﺐ ﲢﻘﻴﻖ ﺃﻣﺎﻥ ﺍﳉﻠﺴﺔ ﻟﻠﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺴﺮﻳﺔ ﻟﻦ ﻳﺘﻢ ﺇﻓﺸﺎﺅﻫﺎ ﺧﻼﻝ ﺍﳉﻠﺴﺔ‪ ،‬ﻭﺫﻟﻚ‬
‫ﻷﻥ ﻫﺬﻩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻳﺘﻢ ﺇﺭﺳﺎﳍﺎ ﻋﱪ ﺍﻟﺸﺒﻜﺔ ﻟﻜﻲ ﺗﺴﺘﻘﺒﻠﻬﺎ ﺁﻟﺔ ﻣﻌﻴﻨﺔ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﻬﻲ ﻣﻌﺮﺿﺔ ﻟﻠﺘﻨﺼﺖ‪.‬‬
‫ﻭﻷﻥ ﺍﻟﱪﻭﺗﻮﻛﻮﻝ ‪ TCP/IP‬ﻟﻴﺲ ﺁﻣﻦ ﺑﺸﻜﻞ ﺟﻴﺪ‪ ،‬ﻳﺼﺒﺢ ﺍﺳﺘﺨﺪﺍﻡ ﻧﻈﺎﻡ ﺗﺸﻔﲑ ﻛﺎﳌﻮﺿﺢ ﰲ‬
‫ﺍﻟﻔﻘﺮﺓ ﺍﻟﺴﺎﺑﻘﺔ ﺃﺳﺎﺳﻴﹰﺎ‪ .‬ﺗﺴﺘﺨﺪﻡ ﻣﻌﻈﻢ ﺃﻧﻈﻤﺔ ﺍﻹﻧﺘﺮﻧﺖ ﺍﲢﺎﺩ ﻣﻦ ﺗﻘﻨﻴﺎﺕ ﺗﺸﻔﲑ ﻣﻔﺘﺎﺡ ﻋﺎﻡ‬
‫ﻭﻣﻔﺘﺎﺡ ﺳﺮﻱ‪ .‬ﻗﺪ ﻳﺸﻔﺮ ﻛﻞ ﻣﻦ ﺍﳌﺨﺪﻡ ﻭﺍﻟﺰﺑﻮﻥ ﺍﳌﻔﺘﺎﺡ ﺍﻟﺴﺮﻱ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻔﺎﺗﻴﺤﻪ ﺍﳋﺎﺻﺔ‪ .‬ﻳﺘﻢ‬
‫ﺇﺭﺳﺎﻝ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺸﻔﺮﺓ ﻣﻊ ﺍﳌﻔﺘﺎﺡ ﺍﻟﻌﺎﻡ‪ ،‬ﺃﻭ ﳝﻜﻦ ﺣﻔﻆ ﺍﳌﻔﺘﺎﺡ ﺍﻟﻌﺎﻡ ﰲ ﺟﻬﺔ ﺛﺎﻟﺜﺔ ﺗﺴﻤﻰ )‪(CA‬‬
‫ﺣﺎﻓﻆ ﺍﻟﺸﻬﺎﺩﺓ ﻭﺍﻟﱵ ﺳﺘﻘﻮﻡ ﺑﺘﻘﺪﳝﻪ ﻋﻨﺪ ﺍﳊﺎﺟﺔ‪ .‬ﺗﺴﺘﺨﺪﻡ ﻃﺮﻳﻘﺔ ﻣﻌﻴﺎﺭﻳﺔ ﻟﻠﺘﺸﻔﲑ ﻭﻫﻲ‬
‫)‪ Secure Sockets Layer (SSL‬ﻣﻦ ﻗﺒﻞ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﻄﻮﺭﻳﻦ ﻟﺘﺸﻔﲑ ﲨﻴﻊ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ‬
‫ﺗﻨﺘﻘﻞ ﺑﲔ ﺍﻟﺰﺑﻮﻥ ﻭﺍﳌﺨﺪﻡ ﺧﻼﻝ ﺍﳉﻠﺴﺔ‪.‬‬
‫ﺗﺴﺘﺨﺪﻡ ﺍﻟﻌﻨﺎﻭﻳﻦ ﻭ‪ URL‬ﺍﻟﱵ ﺗﺒﺪﺃ ﺑـ ‪ ،https://‬ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ )‪ (SSL‬ﻣﻦ ﺃﺟﻞ ﺍﻟﻨﻘﻞ‪.‬‬
‫ﻫﻨﺎﻙ ﻣﻘﺎﻳﻴﺲ ﺃﻣﻨﻴﺔ ﺳﻴﺘﻢ ﻣﻨﺎﻗﺸﺘﻬﺎ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﱐ ﻋﺸﺮ‪ ،‬ﻣﺜﻞ ﺍﻟﺘﻮﻗﻴﻊ ﺍﻟﺮﻗﻤﻲ‪ ،‬ﳐﺪﻣﺎﺕ ﺃﻣﻦ‬
‫‪ ،Kerberos‬ﻭﻣﻘﺎﻳﻴﺲ ﺍﳊﻤﺎﻳﺔ ﺍﳋﺎﺻﺔ ﺑﺒﺎﺋﻊ ﻣﻌﲔ‪.‬‬

‫‪·j¦…¶WáKK9‬‬
‫ﻻ ﻳﻮﺟﺪ ﺟﺪﺍﻝ ﰲ ﺃﻥ ﺑ‪‬ﲎ ﺍﳌﺨﺪﻡ‪/‬ﺍﻟﺰﺑﻮﻥ ﻗﺪ ﺃﺛﺮﺕ ﰲ ﺑﲎ ﻣﻌﺎﳉﺔ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻟﻜﻦ ﻏﺎﻟﺒﹰﺎ ﻣﺎ‬
‫ﻳﺴﻤﻊ ﺃﺣﺪﻧﺎ ﻋﻦ ﻓﺸﻞ ﲡﻬﻴﺰﺍﺕ ﺑﻴﺌﺔ ﻭﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﺑﺸﻜﻞ ﻛﺒﲑ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻭﻣﻦ ﺃﺟﻞ‬
‫ﳒﺎﺡ ﻣﺸﺎﺭﻳﻊ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﳚﺐ ﺩﺭﺍﺳﺔ ﺍﳌﺴﺄﻟﺔ ﺍﳋﺎﺻﺔ ﺑﺎﻟﻌﻤﻞ‪ ،‬ﻣﻊ ﺗﻌﺮﻳﻒ ﺟﻴﺪ ﶈﺪﺩﺍﺕ ﺍﻟﺘﻘﻨﻴﺎﺕ‬
‫ﺍﳌﺮﺍﺩ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻭﶈﺪﺩﺍﺕ ﺍﻟﺘﻜﺎﻟﻴﻒ‪ .‬ﺣﺴﺐ ‪ Linthicum, 1996‬ﻓﺈﻧﻪ ﻫﻨﺎﻙ ﺑﻌﺾ ﺍﻟﻨﻮﺍﺣﻲ ﺍﻟﱵ‬
‫ﳚﺐ ﻣﺮﺍﻋﺎ‪‬ﺎ ﻭﲝﺬﺭ ﻣﻦ ﺃﺟﻞ ﲢﺴﲔ ﻓﺮﺻﺔ ﳒﺎﺡ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺟﻴﺪﺓ‪.‬‬
‫ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺪﻗﻴﻖ ﻟﻠﻤﺴﺄﻟﺔ ﺍﳌﻄﺮﻭﺣﺔ‪ :‬ﻛﻤﺎ ﰲ ﺗﻄﻮﻳﺮ ﺃﻱ ﻧﻮﻉ ﺁﺧﺮ ﻣﻦ ﺑ‪‬ﲎ ﺍﳌﻌﺎﳉﺔ‪ ،‬ﺣﻴﺚ ﺗﻌﺘﱪ‬ ‫‪x‬‬
‫ﻋﻤﻠﻴﺔ ﺣﺮﺟﺔ ﻭﺣﺎﲰﺔ ﰲ ﺑﻨﺎﺀ ﺗﺼﻤﻴﻢ ﺳﻠﻴﻢ ﻭﺑﻨﻴﺔ ﺟﻴﺪﺓ ﻟﻨﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﳊﺪﻳﺜﺔ‪ .‬ﻭﻟﻘﺪ‬
‫ﻛﺎﻧﺖ ﻃﺮﻕ ﺍﳌﻄﻮﺭﻳﻦ ﺍﻟﻘﺪﳝﺔ ﺍﳌﺘﻤﺜﻠﺔ ﰲ ﺍﺧﺘﻴﺎﺭ ﺍﻟﺘﻘﻨﻴﺎﺕ ﻭﻣﻦ ﰒ ﺗﻜﻴﻴﻒ ﺍﻟﺘﻄﺒﻴﻖ ﻟﻴﺘﻮﺍﻓﻖ‬
‫ﻣﻌﻬﺎ‪ ،‬ﻣﻦ ﺃﻛﺜﺮ ﺍﻟﻌﻮﺍﻣﻞ ﺩﻓﻌﹰﺎ ﻟﻈﻬﻮﺭ ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﻟﱵ ﻇﻬﺮﺕ ﰲ ﺍﻟﻌﻘﺪ ﺍﻷﺧﲑ‪ .‬ﻭﻟﻜﻦ‬
‫ﺍﻟﻌﻜﺲ ﻫﻮ ﺍﻷﻓﻀﻞ‪ ،‬ﻓﻤﻦ ﺍﳌﻨﺎﺳﺐ ﺟﺪﹰﺍ ﲢﺪﻳﺪ ﻧﻈﺎﻡ ﺍﳌﺴﺄﻟﺔ ﺑﺸﻜﻞ ﺩﻗﻴﻖ ﻭﲢﺪﻳﺪ ﻣﺘﻄﻠﺒﺎ‪‬ﺎ‪،‬‬
‫ﻭﻣﻦ ﰒ ﺍﺳﺘﺨﺪﺍﻡ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﺘﺤﻠﻴﻞ ﻫﺬﻩ ﰲ ﺍﺧﺘﺒﺎﺭ ﺍﻟﺘﻘﻨﻴﺎﺕ ﺍﳌﻄﻠﻮﺑﺔ‪.‬‬
‫ﲢﻠﻴﻞ ﺑﻨﻴﺎﻥ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ :‬ﻣﻦ ﺍﳌﻬﻢ ﺃﻳﻀﹰﺎ ﲢﺪﻳﺪ ﺗﻔﺎﺻﻴﻞ ﺑﻨﻴﺔ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﺫﻟﻚ ﻷﻥ‬ ‫‪x‬‬
‫ﺗﻄﻮﻳﺮ ﺍﳊﻠﻮﻝ ﺍﳌﻌﺘﻤﺪﺓ ﻋﻠﻰ ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺗﺴﺘﻠﺰﻡ ﺭﺑﻂ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﻜﻮﻧﺎﺕ ﻣﻌﺎﹰ‪ ،‬ﻭﺍﻟﱵ‬
‫ﳝﻜﻦ ﺃﻥ ﻻ ﺗﻌﻤﻞ ﻣﻊ ﺑﻌﻀﻬﺎ ﺑﺴﻬﻮﻟﺔ ﻭﺑﺸﻜﻞ ﺟﻴﺪ‪ .‬ﺇﻥ ﺇﺣﺪﻯ ﳏﺎﺳﻦ ﺍﳌﻌﺎﳉﺔ ﺍﳌﻌﺘﻤﺪﺓ ﻋﻠﻰ‬
‫‪543‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﻫﻲ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ ﻃﺮﻕ ﺍﻟﻨﻈﻢ ﺍﳌﻔﺘﻮﺣﺔ‪ ،‬ﻭﻟﻜﻨﻬﺎ ﺗﺸﻜﻞ ﻋﺎﺋﻘﹰﺎ ﻛﺒﲑﹰﺍ ﰲ‬
‫ﺣﺎﻝ ﻛﺎﻥ ﻣﻦ ﺍﻟﺼﻌﺐ ﺍﻟﺘﻮﺍﺻﻞ ﺑﲔ ﺍﳌﻜﻮﻧﺎﺕ ﻏﲑ ﺍﳌﺘﺠﺎﻧﺴﺔ‪ .‬ﳚﺐ ﻋﻠﻰ ﺍﶈﻠﻞ ﲢﺪﻳﺪ‬
‫ﳏﻄﺎﺕ ﻋﻤﻞ ﺍﻟﺰﺑﻮﻥ‪ ،‬ﻭﲢﺪﻳﺪ ﳐﺪﻣﺎﺗﻪ ﻭﻓﻖ ﺍﻟﺸﺒﻜﺔ ﻭﻃﺒﻘﺔ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻭﻛﺬﻟﻚ ﺍﻟﺒﻨﻴﺔ‬
‫ﺍﻟﺘﺤﺘﻴﺔ ﻟﻠﺸﺒﻜﺔ ﻭﺃﺩﻭﺍﺕ ﺍﻟﺘﻄﻮﻳﺮ ﺍﻟﱪﳎﻲ‪ .‬ﻭﳚﺐ ﻋﻠﻰ ﺍﶈﻠﻞ ﺍﻟﺘﺄﻛﺪ ﻣﻦ ﺃﻥ ﺍﻻﺗﺼﺎﻝ ﳏﻘﻖ ﰲ‬
‫ﻛﻞ ﻧﻘﻄﺔ ﻣﻦ ﻧﻘﺎﻃﻪ‪ ،‬ﻣﺜﻞ ﺍﻻﺗﺼﺎﻝ ﻣﻊ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻄﻴﺔ ﻭﻣﻊ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻭﻣﻊ‬
‫ﺍﻟﺸﺒﻜﺔ‪.‬‬
‫ﺍﺳﺘﺒﻌﺎﺩ ﺍﻟﺒ‪‬ﲎ ﺍﳌﻘﺎﺩﺓ ﺑﻮﺍﺳﻄﺔ ﺍﻷﺩﻭﺍﺕ‪ :‬ﻛﻤﺎ ﺫﻛﺮﻧﺎ ﻗﺒﻞ ﻗﻠﻴﻞ‪ ،‬ﻓﺈﻧﻪ ﳚﺐ ﲢﺪﻳﺪ ﻣﺘﻄﻠﺒﺎﺕ‬ ‫‪x‬‬
‫ﺍﳌﺸﺮﻭﻉ ﻗﺒﻞ ﺍﺧﺘﻴﺎﺭ ﺃﺩﻭﺍﺕ ﺍﻟﺘﻄﻮﻳﺮ‪ ،‬ﻭﻟﻴﺲ ﺍﻟﻌﻜﺲ‪ .‬ﺇﻥ ﺍﺧﺘﻴﺎﺭ ﺍﻷﺩﻭﺍﺕ ﺃﻭ ﹰﻻ ﻭﻣﻦ ﰒ‬
‫ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﳊﻞ ﺍﳌﺴﺄﻟﺔ ﺳﻴﺆﺩﻱ ﺇﱃ ﺗﻮﺍﻓﻖ ﻗﻠﻴﻞ ﺑﲔ ﻫﺬﻩ ﺍﻷﺩﻭﺍﺕ ﻭﺍﳌﺴﺄﻟﺔ‪ ،‬ﺇﻥ ﻣﺜﻞ ﻫﺬﺍ‬
‫ﺍﻻﺧﺘﻴﺎﺭ ﻏﺎﻟﺒﹰﺎ ﻳﻜﻮﻥ ﺑﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﺍﻻﻧﻔﻌﺎﻻﺕ ﻭﻟﻴﺲ ﺑﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﻮﻇﻴﻔﻴﺔ‬
‫ﺍﳌﻘﺪﻣﺔ ﻣﻦ ﻗﺒﻞ ﻫﺬﻩ ﺍﻷﺩﻭﺍﺕ ﻭﻧﻮﻋﻬﺎ‪.‬‬
‫ﲢﻘﻴﻖ ﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻮﺳﻊ ﺍﳌﻨﺎﺳﺒﺔ‪ :‬ﺇﻥ ﺗﻄﻮﻳﺮ ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺑﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﺍﻟﺒﲎ ﻣﺘﻌﺪﺩﺓ‬ ‫‪x‬‬
‫ﺍﻟﻄﺒﻘﺎﺕ ﻣﻦ ﺷﺄﻧﻪ ﺃﻥ ﻳﺴﻤﺢ ﳍﺬﻩ ﺍﻟﻨﻈﻢ ﺃﻥ ﺗﻜﻮﻥ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻮﺳﻊ ﲝﻴﺚ ﺗﻜﻮﻥ ﻗﺎﺩﺭﺓ ﻋﻠﻰ‬
‫ﺍﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺃﻱ ﻋﺪﺩ ﳑﻜﻦ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻣﲔ‪ ،‬ﻭﻣﻌﺎﳉﺔ ﺃﲪﺎﻝ ﻣﺘﻨﻮﻋﺔ‪ .‬ﻭﻟﻜﻦ ﺍﳊﻠﻮﻝ ﺍﳌﻌﺘﻤﺪﺓ‬
‫ﻋﻠﻰ ﺍﻟﺒﲎ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ ﻏﺎﻟﺒﹰﺎ ﻣﺎ ﺗﻜﻮﻥ ﻏﺎﻟﻴﺔ ﺍﻟﺜﻤﻦ ﻭﺻﻌﺒﺔ ﺍﻟﺘﻄﻮﻳﺮ ﻭﺍﻟﺒﻨﺎﺀ‪ .‬ﻭﻛﺬﻟﻚ ﻓﺈﻥ‬
‫ﺃﺩﻭﺍﺕ ﺗﻄﻮﻳﺮ ﺍﻟﺒﻴﺌﺎﺕ ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻣﺎ ﺗﺰﺍﻝ ﳏﺪﻭﺩﺓ ﺃﻳﻀﺎﹰ‪ ،‬ﻭﻟﺬﻟﻚ ﻓﺈﻧﻪ ﳚﺐ ﻋﻠﻰ‬
‫ﻣﺼﻤﻢ ﺍﻟﺒﻨﻴﺔ ﲡﻨﺐ ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﺍﻟﺒﻴﺌﺎﺕ ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺇﺫﺍ ﱂ ﻳﻜﻦ ﺫﻟﻚ ﻣﻄﻠﻮﺑﹰﺎ‪ .‬ﻳﻜﻮﻥ‬
‫ﻟﻠﺒﻴﺌﺔ ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻣﻌﲎ ﰲ ﺣﺎﻝ ﻭﺟﻮﺩ ﺃﻛﺜﺮ ﻣﻦ ‪ 100‬ﻣﺴﺘﺨﺪﻡ ﻣﺘﺰﺍﻣﻦ‪ ،‬ﺃﻭ ﰲ ﻧﻈﻢ‬
‫ﻣﻌﺎﳉﺔ ﺍﳌﻨﺎﻗﻼﺕ ﺫﺍﺕ ﺍﳊﺠﻮﻡ ﺍﻟﻀﺨﻤﺔ‪ ،‬ﺃﻭ ﰲ ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﺍﻟﺰﻣﻦ ﺍﳊﻘﻴﻘﻲ‪ .‬ﳝﻜﻦ ﺃﻥ‬
‫ﺗﻌﻤﻞ ﺍﻟﺒﻴﺌﺎﺕ ﺍﻟﺼﻐﲑﺓ ﺑﻔﻌﺎﻟﻴﺔ ﺃﻛﺜﺮ ﻋﻠﻰ ﺍﻷﻧﻈﻤﺔ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺔ‪ ،‬ﻭﺧﺼﻮﺻﹰﺎ ﰲ ﺣﺎﻝ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻟﻘﻮﺍﺩﺡ ﻭﺍﻹﺟﺮﺍﺋﻴﺎﺕ ﻹﺩﺍﺭﺓ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ‪.‬‬
‫ﻭﺿﻊ ﺍﳋﺪﻣﺎﺕ ﺑﺸﻜﻞ ﻣﻨﺎﺳﺐ‪ :‬ﻛﻤﺎ ﺫﻛﺮﻧﺎ ﺳﺎﺑﻘﺎﹰ‪ ،‬ﻓﺈﻥ ﺍﻟﺘﺤﻠﻴﻞ ﺍﻟﺪﻗﻴﻖ ﻟﻠﻤﺴﺄﻟﺔ ﺍﳌﻄﺮﻭﺣﺔ‬ ‫‪x‬‬
‫ﻣﻬﻢ ﻣﻦ ﺃﺟﻞ ﺍﲣﺎﺫ ﻗﺮﺍﺭﺍﺕ ﻭﺿﻊ ﺧﺪﻣﺎﺕ ﺍﳌﻌﺎﳉﺔ‪.‬ﺣﻴﺚ ﺃﻥ ﺍﻻﻧﺘﻘﺎﻝ ﳓﻮ ﺍﻟﻌﻤﻼﺀ ﺍﳍﺰﻳﻠﲔ‬
‫ﻭﺍﳌﺨﺪﻣﺎﺕ ﺍﻟﺜﻘﻴﻠﺔ ‪ fat servers‬ﻟﻴﺲ ﻫﻮ ﺍﳊﻞ ﺍﳌﻨﺎﺳﺐ ﺩﻭﻣﹰﺎ‪ .‬ﺇﻥ ﻧﻘﻞ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﺑﻜﺎﻣﻠﻬﺎ‬
‫ﺇﱃ ﺍﳌﺨﺪﻡ ﻭﺑﺎﻟﺘﺎﱄ ﺇﻧﺸﺎﺀ ﳐﺪﻡ ﺛﻘﻴﻞ‪ ،‬ﺳﻴﺆﺛﺮ ﻋﻠﻰ ﺍﻟﻄﺎﻗﺔ ﻭﺍﻟﻘﺪﺭﺓ‪ ،‬ﻭﺫﻟﻚ ﻷﻥ ﲨﻴﻊ‬
‫ﺍﳌﺴﺘﺨﺪﻣﲔ ﺳﻴﺤﺎﻭﻟﻮﻥ ﺍﺳﺘﺨﺪﺍﻡ ﻫﺬﺍ ﺍﻟﺘﻄﺒﻴﻖ ﺍﳌﺘﻮﺿﻊ ﺑﻜﺎﻣﻠﻪ ﻋﻠﻰ ﺍﳌﺨﺪﻡ‪ .‬ﻭﺫﻟﻚ ﻓﺈﻧﻪ ﰲ‬
‫ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﻣﻦ ﺍﳌﻤﻜﻦ ﲢﻘﻴﻖ ﺗﻮﺍﺯﻥ ﺃﻓﻀﻞ ﻋﻦ ﻃﺮﻳﻖ ﻧﻘﻞ ﺑﻌﺾ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺇﱃ‬
‫ﺍﻟﻄﺮﻑ ﺍﻟﻌﻤﻴﻞ‪ .‬ﺃﻣﺎ ﺍﳌﺨﺪﻣﺎﺕ ﺍﻟﺜﻘﻴﻠﺔ ﻓﺘﺆﺩﻱ ﺇﱃ ﺗﻘﻠﻴﻞ ﺍﳊﻤﻞ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﻭﺫﻟﻚ ﻷﻥ‬
‫ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﲢﺪﺙ ﺑﺎﻟﻘﺮﺏ ﻣﻦ ﺍﳌﻌﻄﻴﺎﺕ ﻭﻛﺬﻟﻚ ﺗﺆﺩﻱ ﺇﱃ ﲣﻔﻴﺾ ﺍﻟﻘﺪﺭﺓ ﺍﻟﱵ ﳚﺐ‬
‫›>‪a K›f8‬‬ ‫‪544‬‬

‫ﺃﻥ ﻳﺘﻤﺘﻊ ‪‬ﺎ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﺇﻥ ﻓﻬﻢ ﺍﳌﺴﺄﻟﺔ ﺑﺸﻜﻞ ﺟﻴﺪ ﻭﺩﻗﻴﻖ‪ ،‬ﻣﻦ ﺷﺄﻧﻪ ﺃﻥ ﻳﺴﺎﻋﺪ ﻣﺼﻤﻢ ﺍﻟﺒﻨﻴﺔ‬
‫ﻋﻠﻰ ﺍﻟﺘﻮﺯﻳﻊ ﺍﳌﻨﺎﺳﺐ ﻟﻠﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ‪.‬‬
‫ﲢﻠﻴﻞ ﺍﻟﺸﺒﻜﺔ‪ :‬ﺇﻥ ﻣﺸﻜﻠﺔ ﺍﻻﺯﺩﺣﺎﻡ ﺍﻟﺸﺎﺋﻌﺔ ﰲ ﺍﻟﻨﻈﻢ ﺍﳌﻮﺯﻋﺔ ﻣﺎﻳﺰﺍﻝ ﺳﺒﺒﻬﺎ ﺍﻟﺸﺒﻜﺔ ﻭﺍﻟﱵ‬ ‫‪x‬‬
‫ﲤﺜﻞ ﻋﻨﻖ ﺍﻟﺰﺟﺎﺟﺔ‪ .‬ﻭﻟﺬﻟﻚ ﻓﺈﻧﻪ ﳚﺐ ﻋﻠﻰ ﻣﺼﻤﻢ ﺍﻟﺒﻨﻴﺔ ﻋﺪﻡ ﲡﺎﻫﻞ ﺧﻄﺮ ﻋﺮﺽ ﺣﺰﻣﺔ‬
‫ﻣﻌﻄﻴﺎﺕ ﺍﻟﺸﺒﻜﺔ ﺍﻟﱵ ﳚﺐ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻷﻧﻪ ﺇﺫﺍ ﻛﺎﻧﺖ ﺍﻟﺸﺒﻜﺔ ﻏﲑ ﻓﻌﺎﻟﺔ ﰲ ﻣﻌﺎﳉﺔ ﻛﻤﻴﺔ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ ﳚﺐ ﻧﻘﻠﻬﺎ ﺑﲔ ﺍﻟﺰﺑﻮﻥ ﻭﺍﳌﺨﺪﻡ‪ ،‬ﻓﺈﻥ ﺯﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺳﻴﻜﻮﻥ ﺳﻲﺀ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ‬
‫ﻣﻦ ﺍﶈﺘﻤﻞ ﺃﻥ ﻳﻔﺸﻞ ﺍﻟﻨﻈﺎﻡ‪.‬‬
‫ﻛﻦ ﺣﺬﺭﹰﺍ ﻭﻣﺪﺭﻛﹰﺎ ﻟﻠﺘﻜﺎﻟﻴﻒ ﺍﳋﻔﻴﺔ‪ :‬ﺇﻥ ﻣﺸﺎﻛﻞ ﲢﻘﻴﻖ ﻧﻈﻢ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺗﻔﻮﻕ ﻣﺸﺎﻛﻞ‬ ‫‪x‬‬
‫ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻠﻴﻞ ﻭﺍﻟﺘﻄﻮﻳﺮ‪ ،‬ﻭﻣﺸﺎﻛﻞ ﺍﻟﺒﻨﻴﺔ ﺍﻟﱵ ﰎ ﺫﻛﺮﻫﺎ ﻗﺒﻞ ﻗﻠﻴﻞ )ﺣﺴﺐ ‪.(Atre, 1995‬‬
‫ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ‪ ،‬ﺳﻴﻌﺎﱐ ﺍﻟﻨﻈﺎﻡ ﺍﻟﺬﻱ ﻳﺴﻌﻰ ﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﺠﻬﻴﺰﺍﺕ ﻭﺍﻟﺸﺒﻜﺎﺕ ﻭﻧﻈﻢ‬
‫ﺍﻟﺘﺸﻐﻴﻞ ﻭﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﻣﻦ ﺍﻟﺘﻌﻘﻴﺪ ﰲ ﻣﻜﺎﻣﻠﺔ ﻫﺬﻩ ﺍﳌﻜﻮﻧﺎﺕ ﻏﲑ‬
‫ﺍﳌﺘﺠﺎﻧﺴﺔ ﻟﺒﻨﺎﺀ ﻧﻈﺎﻡ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﻛﻤﺎ ﺃﻥ ﺍﻟﺘﺪﺭﻳﺐ ﻟﻪ ﻛﻠﻔﺘﻪ ﺍﻟﻜﺒﲑﺓ ﻭﺍﻟﱵ ﻏﺎﻟﺒﹰﺎ ﻣﺎ ﺗﻜﻮﻥ‬
‫ﺩﻭﺭﻳﺔ‪ ،‬ﻭﺃﻳﻀﹰﺎ ﻏﺎﻟﺒﹰﺎ ﻣﺎ ﻳﺘﻢ ﺇﻏﻔﺎﳍﺎ ﻭﻋﺪﻡ ﺃﺧﺬﻫﺎ ﺑﺎﳊﺴﺒﺎﻥ‪ ،‬ﻛﻤﺎ ﺃﻥ ﺗﻌﻘﻴﺪﺍﺕ ﺍﻟﻌﻤﻞ ﰲ ﺑﻴﺌﺔ‬
‫ﻣﺘﻌﺪﺩﺓ ﺍﳌﺴﺘﺨﺪﻣﲔ ﳝﻜﻦ ﺃﻥ ﺗﻜﻮﻥ ﻣﻜﻠﻔﺔ ﺟﺪﹰﺍ‪.‬‬
‫ﺇﺫﺍ ﲤﺖ ﻣﻌﺎﳉﺔ ﻫﺬﻩ ﺍﻟﻘﻀﺎﻳﺎ ﺑﺸﻜ ِﻞ ﻣﻨﺎﺳﺐ‪ ،‬ﻓﺈﻧﻪ ﺳﻴﻜﻮﻥ ﻫﻨﺎﻙ ﳎﻤﻮﻋﺔ ﻣﻦ ﺍﻟﻔﻮﺍﺋﺪ ﺍﻟﱵ ﲤﻜﹼﻦ‬
‫ﻣﻦ ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﺑ‪‬ﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ )ﺣﺴﺐ ‪:(Atre, 1995‬‬
‫ﻳﺼﺒﺢ ﺑﺎﻹﻣﻜﺎﻥ ﺗﺴﻠﻴﻢ ﻭﻇﺎﺋﻒ ﺍﻟﻨﻈﺎﻡ ﻋﻠﻰ ﻣﺮﺍﺣﻞ‪ ،‬ﻭﻫﻜﺬﺍ ﻳﺘﻢ ﺗﺴﻠﻴﻢ ﺃﻭﻝ ﺟﺰﺀ ﻣﻨﻪ ﻃﺎﳌﺎ‬ ‫‪x‬‬
‫ﰎ ﺇ‪‬ﺎﺅﻩ‪ ،‬ﻭﻣﻦ ﰒ ﺍﳉﺰﺀ ﺍﻟﺬﻱ ﻳﻠﻴﻪ‪ ،‬ﻭﻫﻜﺬﺍ‪...‬‬
‫ﺗﺸﺠﻊ ﻭﺍﺟﻬﺔ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﻴﺎﻧﻴﺔ ﺍﻟﺸﺎﺋﻌﺔ ﰲ ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﺍﳌﺴﺘﺨﺪﻣﲔ ﻋﻠﻰ ﺍﺳﺘﺨﺪﺍﻡ‬ ‫‪x‬‬
‫ﺍﻟﻮﻇﺎﺋﻒ ﺍﻟﱵ ﺗﻘﺪﻣﻬﺎ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪.‬‬
‫ﺇﻥ ﺍﳌﺮﻭﻧﺔ ﻭﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻮﺳﻊ ﺍﻟﱵ ﺗﺘﻤﺘﻊ ‪‬ﺎ ﺍﳊﻠﻮﻝ ﺍﳌﻌﺘﻤﺪﺓ ﻋﻠﻰ ﺑ‪‬ﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﺗﺴﻬﻞ ﻋﻤﻠﻴﺔ‬ ‫‪x‬‬
‫ﺇﻋﺎﺩﺓ ﻫﻨﺪﺳﺔ ﻣﻌﺎﳉﺔ ﺍﻟﻌﻤﻞ‪.‬‬
‫ﳝﻜﻦ ﺣﺼﺮ ﺍﳌﺰﻳﺪ ﻣﻦ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﻟﺘﻨﻔﺬ ﺑﺸﻜﻞ ﻗﺮﻳﺐ ﻣﻦ ﻣﺼﺎﺩﺭ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ ﺗﺘﻢ‬ ‫‪x‬‬
‫ﻣﻌﺎﳉﺘﻬﺎ‪ ،‬ﻭﻫﺬﺍ ﻣﺎ ﻳﺆﺩﻱ ﺇﱃ ﲢﺴﲔ ﺯﻣﻦ ﺍﻻﺳﺘﺠﺎﺑﺔ‪ ،‬ﻭﺍﻟﺘﻘﻠﻴﻞ ﻣﻦ ﺍﻻﺯﺩﺣﺎﻣﺎﺕ ﻋﻠﻰ‬
‫ﺍﻟﺸﺒﻜﺔ‪.‬‬
‫ﺇﻥ ﺑ‪‬ﲎ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺗﺴﻤﺢ ﺑﻌﻤﻠﻴﺎﺕ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻟﻮﻳﺐ‪ ،‬ﻛﻤﺎ ﺗﺴﻬﻞ ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ‬ ‫‪x‬‬
‫ﺍﻻﺗﺼﺎﻝ ﺍﻟﺪﺍﺧﻠﻲ ﺍﻟﻔﻌﺎﻝ ﰲ ﺍﳌﺆﺳﺴﺎﺕ‪ ،‬ﻭﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺇﺩﺍﺭﺓ ﺍﻷﻋﻤﺎﻝ ﺍﳋﺎﺭﺟﻴﺔ ﻋﱪ‬
‫ﺍﻹﻧﺘﺮﻧﺖ‪.‬‬
‫‪545‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫›‪·jZ›žK?E:fhžKE:<&›W K癵jqj‬‬
‫ﻟﻘﺪ ﺭﺃﻳﻨﺎ ﺳﺎﺑﻘﺎﹰ ﰲ ﺍﻟﺸﻜﻞ )‪ (9-1‬ﻣﻜﻮﻧﺎﺕ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﻟﻠﱪﻧﺎﻣﺞ‪ ،‬ﻭﺍﻟﱵ ﳚﺐ ﺃﻥ ﻳﺘﻢ ﺗﻮﺯﻳﻌﻬﺎ‬
‫ﻋﻠﻰ ﺑﻨﻴﺔ ﺗﻄﺒﻴﻖ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺛﻨﺎﺋﻴﺔ ﺃﻭ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ .‬ﺇﻥ ﺗﻘﺴﻴﻢ ﺍﻟﺒﻴﺌﺔ ﻹﻧﺸﺎﺀ ﺑﻨﻴﺔ ﺛﻨﺎﺋﻴﺔ ﺃﻭ ﺛﻼﺛﻴﺔ‬
‫ﺃﻭ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ )‪ ،(n-tier‬ﻳﻌﲏ ﺃﻧﻪ ﳚﺐ ﺍﲣﺎﺫ ﺍﻟﻘﺮﺍﺭﺍﺕ ﺍﻟﻼﺯﻣﺔ ﻟﻮﺿﻊ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﻟﻠﻤﻌﺎﳉﺔ‪.‬‬
‫ﻭﰲ ﻛﻞ ﺣﺎﻟﺔ‪ ،‬ﻓﺈﻥ ﺍﳌﺨﺪﻡ ﻳﻘﻮﻡ ﲟﻌﺎﳉﺔ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ ﻟﻠﺘﺨﺰﻳﻦ )ﳏﺮﻙ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ(‪ ،‬ﺑﻴﻨﻤﺎ‬
‫ﻳﻌﺎﰿ ﺍﻟﺰﺑﻮﻥ ﺍﻟﺒﻨﻴﺔ ﺍﳌﻨﻄﻘﻴﺔ )ﻣﻨﻄﻖ( ﻟﻠﻌﺮﺽ‪.‬‬
‫ﻳﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-8-a‬ﺑﻌﺾ ﺣﺎﻻﺕ ﺍﻟﻨﻈﻢ ﺛﻨﺎﺋﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﳝﻜﻦ ﻭﺿﻊ ﻣﻨﻄﻖ ﺍﳌﻌﺎﳉﺔ ﻟﺪﻯ ﺍﻟﺰﺑﻮﻥ‬
‫)ﺇﻧﺸﺎﺀ ﺍﻟﻌﻤﻴﻞ ﺍﻟﻀﺨﻢ(‪ ،‬ﺃﻭ ﺻﻔﺤﺔ ﻋﻠﻰ ﺍﳌﺨﺪﻡ )ﺇﻧﺸﺎﺀ ﺍﻟﻌﻤﻴﻞ ﺍﳍﺰﻳﻞ(‪ ،‬ﺃﻭ ﺗﻘﺴﻴﻤﻪ ﺑﲔ ﺍﳌﺨﺪﻡ‬
‫ﻭﺍﻟﺰﺑﻮﻥ )ﺍﻟﺒﻴﺌﺔ ﺍﳌﻮﺯﻋﺔ(‪ .‬ﺇﻥ ﺗﻮﺿﻊ ﻣﻨﻄﻖ ﺍﳌﻌﺎﳉﺔ ﻫﻮ ﻣﺎ ﻳ‪‬ﻤﻴﺰ ﺳﻴﻨﺎﺭﻳﻮ ﻋﻦ ﺁﺧﺮ ﻣﻦ ﺍﻟﺴﻴﻨﺎﺭﻳﻮﻫﺎﺕ‬
‫ﺍﻟﺜﻼﺛﻴﺔ‪ .‬ﰲ ﺍﻟﻌﻤﻴﻞ ﺍﻟﻀﺨﻢ‪ ،‬ﺗﺘﻢ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﰲ ﺍﻟﻌﻤﻴﻞ‪ ،‬ﺃﻣﺎ ﰲ ﺍﻟﻌﻤﻴﻞ ﺍﳍﺰﻳﻞ ﻓﺘﺘﻢ ﻋﻤﻠﻴﺎﺕ‬
‫ﺍﳌﻌﺎﳉﺔ ﰲ ﺍﳌﺨﺪﻡ‪ .‬ﻭﻳﺘﻢ ﺗﻘﺴﻴﻢ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ ﺑﲔ ﺍﳌﺨﺪﻡ ﻭﺍﻟﺰﺑﻮﻥ ﰲ ﺍﻟﺒﻴﺌﺔ ﺍﳌﻮﺯﻋﺔ‪.‬‬
‫ﻳ‪‬ﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-8-b‬ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﻭﺍﻟﺒﻨﻴﺔ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ ﺍﻟﻨﻤﻮﺫﺟﻴﺔ ﺣﻴﺚ ﻛﻤﺎ‬
‫ﺃﺳﻠﻔﻨﺎ‪ ،‬ﳝﻜﻦ ﻭﺿﻊ ﺑﻌﻀﹰﺎ ﻣﻦ ﺃﻗﺴﺎﻡ ﻣﻨﻄﻖ ﺍﳌﻌﺎﳉﺔ ﻋﻠﻰ ﺍﻟﻌﻤﻴﻞ‪ .‬ﻭﻟﻜﻦ ﺍﻟﺰﺑﻮﻥ ﺍﻟﻨﻤﻮﺫﺟﻲ ﰲ‬
‫ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺍﳌﻮﺟﻬﺔ ﳓﻮ ﺍﻟﻮﻳﺐ ﻳﻜﻮﻥ ﻣﻦ ﻧﻮﻉ ﺍﻟﻌﻤﻴﻞ ﺍﳍﺰﻳﻞ ﻣﺴﺘﺨﺪﻣﹰﺎ ﺍﳌﺴﺘﻌﺮﺽ ﻣﻦ‬
‫ﺃﺟﻞ ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ‪ .‬ﺇﻥ ﺍﻟﻄﺒﻘﺎﺕ ﺍﻟﻮﺳﻄﻰ ﺗﺘﻢ ﺑﺮﳎﺘﻬﺎ ﻗﻴﺎﺳﻴﺎﹰ ﺑﺈﺣﺪﻯ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻘﺎﺑﻠﺔ ﻟﻠﻨﻘﻞ‪ ،‬ﻣﺜﻞ‬
‫ﻟﻐﺔ ‪ C‬ﺃﻭ ﻟﻐﺔ ‪ .Java‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺍﻟﺘﻌﻘﻴﺪ ﺍﳌﺘﺰﺍﻳﺪ ﻹﺩﺍﺭﺓ ﻋﻤﻠﻴﺎﺕ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﺇﻻ ﺃﻥ‬
‫ﻣﺮﻭﻧﺔ ﻭﺳﻬﻮﻟﺔ ﺇﺩﺍﺭﺓ ﺍﳌﻨﻬﺠﻴﺎﺕ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ ﻗﺪ ﺟﻌﻠﻬﺎ ﺷﺎﺋﻌﺔ ﺑﺸﻜﻞ ﻣﺘﺰﺍﻳﺪ ﺃﺩﺕ ﺍﻟﺒﻴﺌﺎﺕ‬
‫ﺍﻟﻼ ﻣﺘﺠﺎﻧﺴﺔ ﻭﺍﳌﻮﺯﻋﺔ ﻭﺍﻟﺴﺮﻳﻌﺔ ﻟﻺﻧﺘﺮﻧﺖ ﻭﺍﻟﺘﺠﺎﺭﺓ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ ﺇﱃ ﻋﻤﻠﻴﺎﺕ ﺗﻄﻮﻳﺮ ﺍﻟﻌﺪﻳﺪ ﻣﻦ‬
‫ﺍﻟﺒﲎ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬

‫‪Storage‬‬ ‫‪Storage‬‬
‫‪Server‬‬ ‫‪Storage‬‬
‫‪Logic‬‬ ‫‪Logic‬‬
‫‪Server‬‬ ‫‪Logic‬‬
‫‪Server‬‬
‫‪Processing‬‬ ‫‪Processing‬‬
‫‪Processing‬‬
‫‪Logic‬‬ ‫‪Logic‬‬
‫‪Logic‬‬
‫‪Client‬‬
‫‪Processing‬‬ ‫‪Processing‬‬ ‫‪Client‬‬ ‫‪Processing‬‬
‫‪Client‬‬
‫‪Logic‬‬ ‫‪Logic‬‬ ‫‪Logic‬‬

‫‪Fat Client‬‬ ‫‪Thin Client‬‬ ‫‪Distributed‬‬

‫‪ΕΎϘΒτϟ΍ Δϴ΋ΎϨΛ ϥϮΑί/ϡΪΨϣ ΕΎΌϴΑ (9-8-a) ϞϜθϟ΍‬‬


‫›>‪a K›f8‬‬ ‫‪546‬‬

‫‪Distributed‬‬ ‫‪Storage‬‬
‫‪Server‬‬ ‫‪Logic‬‬

‫‪Oracle‬‬ ‫‪Distributed‬‬ ‫‪Storage‬‬


‫‪Solaris‬‬ ‫‪Server‬‬ ‫‪Logic‬‬
‫‪SQL*Net‬‬
‫‪TCP/IP‬‬

‫‪Application‬‬ ‫‪Processing‬‬ ‫‪Application‬‬ ‫‪Processing‬‬


‫‪Server‬‬ ‫‪Logic‬‬ ‫‪Server‬‬ ‫‪Logic‬‬

‫‪App. Services‬‬
‫‪SQL*Net‬‬
‫‪Tuxedo‬‬
‫‪Wed‬‬ ‫‪Processing‬‬
‫‪TCP/IP‬‬
‫‪Server‬‬ ‫‪Logic‬‬
‫‪Solaris‬‬

‫‪Client‬‬ ‫‪Processing‬‬
‫‪Logic‬‬ ‫‪Processing‬‬
‫‪Client‬‬
‫‪Logic‬‬
‫‪C++‬‬
‫‪Tuxedo‬‬
‫‪TCP/IP‬‬
‫‪Windows 98‬‬

‫‪ΔϘΒσ n Ε΍Ϋ ϥϮΑί/ϡΪΨϣ ΕΎΌϴΑ (9-8-b) ϞϜθϟ΍‬‬

‫ﺇﺫﹰﺍ ﻓﺎﻟﺰﺑﻮﻥ ﻫﻮ ﺍﳌﺴﺆﻭﻝ ﺩﺍﺋﻤﹰﺎ ﻋﻦ ﻣﻨﻄﻖ ﺍﻟﻌﺮﺽ‪ .‬ﻭﺫﻟﻚ ﻣﻦ ﺧﻼﻝ ﺍﳌﺴﺘﻌﺮﺽ‪ ،‬ﺃﻭ ﺑﻌﺾ‬
‫ﻭﺍﺟﻬﺎﺕ ﺍﻻﺳﺘﺨﺪﺍﻡ ﺍﳋﺎﺻﺔ ﺑﺎﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﺨﺘﻠﻔﺔ‪ .‬ﻭﺗﻜﻮﻥ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻮﺍﺟﻬﺎﺕ ﻋﺒﺎﺭﺓ ﻋﻦ‬
‫ﻭﺍﺟﻬﺎﺕ ﺍﺳﺘﺨﺪﺍﻡ ﺑﻴﺎﻧﻴﺔ )‪ (GVI‬ﰲ ﺍﻟﺪﺭﺟﺔ ﺍﻷﻭﱃ‪ .‬ﻭﻻ ﲣﺘﻠﻒ ﻋﻨﻬﺎ ﻭﺍﺟﻬﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺗﻌﻠﻴﻘﺎﺕ ﻟﻐﺔ ‪ SQL‬ﻓﺈ‪‬ﺎ ﻣﺎﺯﺍﻟﺖ ﻣﺴﺘﺨﺪﻣﺔ ﻟﻠﻮﺻﻮﻝ ﺇﱃ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪،‬‬
‫ﺇﻻ ﺃﻥ ﻭﺍﺟﻬﺎﺕ )‪ Query-by-Example (QBE‬ﻗﺪ ﺃﺛﺒﺘﺖ ﺷﻌﺒﻴﺘﻬﺎ ﺃﻳﻀﹰﺎ ﰲ ﺍﻻﺳﺘﻌﻼﻡ ﻣﻦ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﺃﺩﺕ ﺳﻬﻮﻟﺔ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺗﻀﻤﲔ ﺍﳌﻘﺪﺭﺍﺕ ﺍﻟﱪﳎﻴﺔ ﻟﱪﺍﻣﺞ ﺳﻄﺢ ﺍﳌﻜﺘﺐ ﺍﳋﺎﺻﺔ ﺑﻘﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻣﺜﻞ ‪ Microsoft + Access‬ﺇﱃ ﺟﻌﻞ ﺍﳌﺆﺳﺴﺎﺕ ﺗﺴﺘﺨﺪﻡ ﻣﺜﻞ ﻫﺬﻩ ﺍﳌﻨﺘﺠﺎﺕ ﻛﻮﺣﺪﺍﺕ‬
‫ﺍﺗﺼﺎﻝ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ ‪ ،front-end‬ﻣﻊ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺃﻛﺜﺮ ﻗﻮﺓ ﻣﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻄﺮﻑ ﺍﳋﻠﻔﻲ‬
‫‪ back-end‬ﻣﺜﻞ ﺃﻭﺭﺍﻛﻞ ‪ ،Oracle‬ﻭ‪ .Informix‬ﳝﻜﻦ ﻻﺳﺘﻌﻼﻣﺎﺕ ﻣﻦ ﺍﻟﻨﻮﻉ ‪ pass-through‬ﻳﺘﻢ‬
‫ﺑﻨﺎﺅﻫﺎ ﻭﺗﺸﻜﻴﻠﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺑﺮﻧﺎﻣﺞ ‪ ،Access‬ﺃﻥ ﺗ‪‬ﺸﻐ‪‬ﻞ ﻋﻠﻰ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ Oracle‬ﻣﻮﺟﻮﺩﺓ ﰲ‬
‫ﺍﻟﻄﺮﻑ ﺍﳋﻠﻔﻲ‪ ،‬ﻭﻋﻦ ﻃﺮﻳﻖ ﻫﺬﻩ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻳ‪‬ﻤﻜﻦ ﺃﻥ ﲢﻘﻖ ﺍﳌﺆﺳﺴﺎﺕ ﺳﺮﻋﺔ ﰲ ﺯﻣﻦ‬
‫‪547‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﻄﻮﻳﺮ‪ ،‬ﺑﻴﻨﻤﺎ ﺗﻘﻮﻡ ﺑﺎﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﻣﻦ ﺃﺟﻞ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳊﺴﺎﺳﺔ )ﺫﺍﺕ ﺍﳌﻬﺎﻡ ﺍﳊﺮﺟﺔ( ﺍﳋﺎﺻﺔ ‪‬ﺎ‪.‬‬

‫› ‪QBEM=¶›W‬‬
‫‪ :QBE‬ﻫﻲ ﻟﻐﺔ ﺑﻴﺎﻧﻴﺔ ﺗﺴﺘﺨﺪﻡ ﰲ ﻧﻄﺎﻕ ﻭﺍﺳﻊ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﻌﺎﻣﻞ ﺍﳌﺒﺎﺷﺮ ﻣﻊ ﺍﺳﺘﻌﻼﻣﺎﺕ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺣﻴﺚ ﺗﻘﻮﻡ ﺑﺈﻧﺸﺎﺀ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻃﺮﻕ ﺑﻴﺎﻧﻴﺔ‪ .‬ﻭﻣﺼﻄﻠﺢ ‪ QBE‬ﻫﻮ ﺍﺧﺘﺼﺎﺭ‬
‫ﻟﻠﺠﻤﻠﺔ ‪ Query-By-Example‬ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﻟﻐﺔ ‪ QBE‬ﻟﻴﺴﺖ ﻣﻌﻴﺎﺭﹰﺍ ﻋﺎﻟﻴﹰﺎ ﻣﺜﻞ ﻟﻐﺔ ‪،SQL‬‬
‫ﺇﻻ ﺃ‪‬ﺎ ﻛﺎﻧﺖ ﻭﺍﺳﻌﺔ ﺍﻻﻧﺘﺸﺎﺭ ﻟﺴﻨﻮﺍﺕ ﻋﺪﺓ ﻭﻣﺎ ﺯﺍﻟﺖ ﻛﺬﻟﻚ ﺣﱴ ﺍﻵﻥ‪ ،‬ﻭﺧﺼﻮﺻﹰﺎ ﰲ ﺳﻮﻕ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺨﺼﺼﺔ ﻟﻠﺤﻮﺍﺳﻴﺐ ﺍﻟﺸﺨﺼﻴﺔ )ﺳﻮﻕ ‪ .(PC-RDBMS‬ﳚﺪ ﻏﺎﻟﺐ ﺍﻟﻨﺎﺱ‬
‫ﺍﻟﺮﺍﻏﺒﲔ ﰲ ﺍﻻﺳﺘﻔﺴﺎﺭ ﻭﺍﻟﺒﺤﺚ ﰲ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻫﺬﻩ ﺍﻟﻠﻐﺔ ﺳﻬﻠﺔ ﺍﻟﺘﻌﻠﻢ‪ ،‬ﻭﺳﻬﻮﻟﺘﻬﺎ ﻫﺬﻩ‬
‫ﺟﻌﻠﺘﻬﺎ ﻟﻐﺔ ﺷﺎﺋﻌﺔ ﺍﻻﺳﺘﺨﺪﺍﻡ ﰲ ﺗﻄﻮﻳﺮ ﺍﻟﻨﻤﺎﺫﺝ ﺍﻷﻭﻟﻴﺔ ﻭﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ ﺑﻌﺾ ﻧﻈﻢ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﻣﺜﻞ ‪ Microsoft Access‬ﺗﻘﻮﻡ ﺑﺘﺮﲨﺔ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﳌﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ ‪ QBE‬ﺇﱃ ﺍﺳﺘﻌﻼﻣﺎﺕ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ‬
‫‪ ،SQL‬ﻓﺈﻥ ﻟﻐﺔ ‪ QBE‬ﳝﻜﻦ ﺃﻥ ﺗ‪‬ﺴﺘﺨﺪﻡ ﻋﻠﻰ ﺍﻷﻗﻞ ﻛﻤﺮﺣﻠﺔ ﺃﻭﱃ ﰲ ﺇﻧﺸﺎﺀ ﺷﻴﻔﺮﺓ ‪.SQL‬ﻛﻤﺎ ﳝﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻨﻈﻢ ﺍﳌﻌﺘﻤﺪﺓ ﻋﻠﻰ ‪ QBE‬ﻹﻧﺸﺎﺀ ﺷﻴﻔﺮﺓ ‪ SQL‬ﰲ ﺑﻨﺎﺀ ﻭﺣﺪﺍﺕ ﻃﺒﻘﺔ ﺍﻟﻌﺮﺽ ﺃﻭ‬
‫ﻭﺣﺪﺍﺕ ﺍﻟﺰﺑﻮﻥ ﺍﻟﱵ ﺗﻘﻮﻡ ﺑﺎﻟﻮﺻﻮﻝ ﺇﱃ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺍﳌﺨﺪﻡ‪.‬‬

‫‪ϡΪΨΘδΗ ΚϴΣ ˬΕΎϴτόϤϟ΍ Ϊϋ΍Ϯϗ ΕΎϣϼόΘγ΍ ϊϣ ήηΎΒϤϟ΍ ϞϣΎόΘϟ΍ ϞΟ΃ Ϧϣ Δϐϟ ϲϫ :QBE Δϐϟ‬‬

‫‪.ΕΎϣϼόΘγϻ΍ ϩάϫ ˯Ύθϧ· ϞΟ΃ Ϧϣ ΔϴϧΎϴΑ ΔϘϳήσ‬‬

‫ﻭﺳﻨﻘﻮﻡ ﰲ ﻫﺬﻩ ﺍﻟﻔﻘﺮﺓ ﺑﺪﺭﺍﺳﺔ ﶈﺔ ﻋﻦ ﻟﻐﺔ ‪ QBE‬ﻭﻋﻦ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﻗﺪﺭﺍ‪‬ﺎ ﰲ ﺑﻨﺎﺀ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‪.‬‬

‫›‪QBEM=AMEæ¥K›MEBT‬‬

‫ﰎ ﺗﻄﻮﻳﺮ ﻟﻐﺔ ‪ QBE‬ﻣﻦ ﻗﺒﻞ ‪ Zloof‬ﻋﺎﻡ ‪ 1977‬ﻣﻦ ﺃﺟﻞ ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳌﺨﺼﺼﺔ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﳏﻄﺎﺕ ﻋﻤﻞ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ ﰲ ﺍﻟﺒﺪﺍﻳﺔ‪ ،‬ﻭﻟﻜﻦ ﻣﺎ ﻟﺒﺜﺖ ﺃﻥ ﴰﻠﺖ‬
‫ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺨﺼﺼﺔ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﺍﳊﻮﺍﺳﻴﺐ ﺍﻟﺸﺨﺼﻴﺔ‪ ،‬ﺃﻭ ﰲ ﻧﻈﻢ‬
‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺣﻴﺚ ﻛﺎﻧﺖ ﰲ ﺍﻟﺒﺪﺍﻳﺔ ﻣﺘﺎﺣﺔ ﻟﻠﻌﻤﻞ ﰲ ﻧﻈﺎﻣﻲ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ‪ SQL/DS‬ﻭ‪DB2‬‬
‫ﺍﳌﻮﺟﻮﺩﺓ ﻋﻠﻰ ﺣﻮﺍﺳﻴﺐ ﻣﻦ ﺻﻨﻊ ‪ ،IBM‬ﻭﻗﺪ ﻛﺎﻥ ‪ paradox‬ﺃﻭﻝ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ‬
‫ﻋﻼﺋﻘﻲ ﻋﻠﻰ ﺣﺎﺳﺐ ﺷﺨﺼﻲ ﻳﻌﺘﻤﺪ ﻛﻠﻴﹰﺎ ﻋﻞ ﻟﻐﺔ ‪ ،QBE‬ﻭﻗﺪ ﺃﺩﻯ ﳒﺎﺣﻪ ﺇﱃ ﺗﺸﺠﻴﻊ ﺍﳌﻨﺘﺠﺎﺕ‬
‫›>‪a K›f8‬‬ ‫‪548‬‬

‫ﺍﻷﺧﺮﻯ ﻋﻠﻰ ﺗﺒﲏ ﻭﺍﺟﻬﺔ ﻟﻐﺔ ‪ QBE‬ﻛﺄﺣﺪ ﺧﻴﺎﺭﺍ‪‬ﺎ‪ .‬ﻭﺃﺻﺒﺤﺖ ﺍﻵﻥ ﻣﻌﻈﻢ ﻧﻈﻢ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ‬
‫ﻼ ﻟﻠﻐﺔ ‪.QBE‬‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﺍﳊﺎﻟﻴﺔ ﺗﺘﻀﻤﻦ ﺑﺪﺍﺋ ﹰ‬
‫ﺗﻌﺘﱪ ﺩﺭﺍﺳﺔ ﻟﻐﺔ ‪ QBE‬ﺃﺳﺎﺳﻴﺔ ﻣﻦ ﺃﺟﻞ ﻓﻬﻢ ﻧﻈﻢ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳊﺪﻳﺜﺔ‪ .‬ﺣﻴﺚ ﺃﻥ ﻟﻐﺎﺕ‬
‫ﺍﻟﱪﳎﺔ ﺍﳌﺮﺋﻴﺔ )ﻣﺜﻞ ‪ Visual Basic‬ﻭ‪ Visual C‬ﻭ‪ (Visual Java‬ﻗﺪ ﻏﲑﺕ ﺍﻟﻄﺮﻕ ﺍﻟﱵ ﺗﻜﺘﺐ ﻓﻴﻬﺎ‬
‫ﺍﻟﱪﺍﻣﺞ‪ ،‬ﻭﻗﺪ ﺑﻴﻨﺖ ﺩﺭﺍﺳﺎﺕ ﳐﱪﻳﺔ )ﻣﺜﻞ ﺩﺭﺍﺳﺎﺕ ‪ (Greenblatt and Waxman, 1978‬ﻭﺩﺭﺍﺳﺎﺕ‬
‫‪ (Thomas and Gould, 1975‬ﺃﻧﻪ ﺣﱴ ﻣﻊ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﻟﺘﺪﺭﻳﺐ‪ ،‬ﻓﺈﻥ ﺍﻟﻄﻼﺏ ﻭﺟﺪﻭﺍ ﺃﻥ ﻟﻐﺔ ‪SQL‬‬
‫ﺃﺳﻬﻞ ﻣﻦ ﻟﻐﺔ ﺍﳉﱪ ﺍﻟﻌﻼﺋﻘﻲ‪ ،‬ﻭﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﻣﻀﻰ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﺪﺭﺍﺳﺎﺕ ﻋﻘﺪﻳﻦ ﻣﻦ ﺍﻟﺰﻣﻦ‪ ،‬ﺇﻻ‬
‫ﺃﻧﻪ ﻻ ﺗﻮﺟﺪ ﻟﻐﺔ ﺍﺳﺘﻌﻼﻣﺎﺕ ﻗﺪ ﰎ ﺗﻄﻮﻳﺮﻫﺎ ﻭﺗﻐﻠﺒﺖ ﻋﻠﻰ ﺍﻟﻠﻐﺔ ‪.QBE‬‬
‫ﺇﻥ ﻟﻐﺔ ‪ QBE‬ﻣﻔﻴﺪﺓ ﺑﺸﻜﻞ ﺧﺎﺹ ﻟﻠﻤﺴﺘﺨﺪﻣﲔ ﺍﻟﻨﻬﺎﺋﻴﲔ ﺍﳌﺨﺘﺼﲔ ﺑﱪﳎﺔ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪،‬‬
‫ﻭﺫﻟﻚ ﻷﻥ ﺑﻴﺌﺎﺕ ﺍﻟﱪﳎﺔ ﺍﳌﺮﺋﻴﺔ ﺩﺍﺋﻤﹰﺎ ﺗﻌﻄﻲ ﺍﳌﺴﺘﺨﺪﻣﲔ ﻏﲑ ﺍﳌﱪﳎﲔ )ﻏﲑ ﺍﳌﺨﺘﺼﲔ ﺑﺎﻟﱪﳎﺔ(‬
‫ﻧﻈﺮﺓ ﻭﺣﻴﺪﺓ ﻟﻠﻤﻌﻄﻴﺎﺕ ﻣﻬﻤﺎ ﻛﺎﻧﺖ ﺍﳌﻬﻤﺔ ﺍﻟﱵ ﺗ‪‬ﻨﻔﺬ ﰲ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻭﻛﻤﺎ ﺳﺘﺮﻯ ﻻﺣﻘﹰﺎ‬
‫ﻓﺈﻧﻪ ﳝﻜﻦ ﺗﻄﻮﻳﺮ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺑﺸﻜﻞ ﺗﻔﺎﻋﻠﻲ ﻋﻠﻰ ﺷﺎﺷﺎﺕ ﺍﻷﺷﻌﺔ ﺍﳌﻬﺒﻄﻴﺔ ‪ CRT‬ﺑﺼﻴﻐﺔ ﺗﻘﻮﻡ‬
‫ﺑﺘﺠﻤﻴﻊ ﺍﳋﺮﺝ ﺍﳌﻄﻠﻮﺏ )ﻭﻫﺬﺍ ﻣﺎ ﺭﺃﻳﻨﺎﻩ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﱐ(‪ .‬ﺣﻴﺚ ﺗ‪‬ﻌﺮﺽ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻭﺍﻟﻨﺘﺎﺋﺞ‬
‫ﰲ ﻣﻌﻈﻢ ﺍﻟﱪﺍﻣﺞ ﺑﺎﻟﺼﻴﻐﺔ ﻧﻔﺴﻬﺎ‪ ،‬ﻭﻏﺎﻟﺒﹰﺎ ﻣﺎ ﺗﻜﻮﻥ ﻫﺬﻩ ﺍﻟﺼﻴﻐﺔ ﻣﻦ ﳕﻂ ﺍﳉﺪﺍﻭﻝ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ‪.‬‬
‫ﻋﻠﻰ ﺍﻟﺮﻏﻢ ﻣﻦ ﺃﻧﻪ ﳝﻜﻦ ﻛﺘﺎﺑﺔ ﺗﻄﺒﻴﻘﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺑﻮﺳﺎﻃﺔ ﻟﻐﺔ ‪ QBE‬ﺑﺸﻜﻞ ﻛﺎﻣﻞ‪ ،‬ﻭﻟﻜﻦ‬
‫ﻣﻦ ﺍﻟﺸﺎﺋﻊ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ ‪ QBE‬ﻣﻦ ﺃﺟﻞ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﺘﻔﺎﻋﻠﻴﺔ‪ ،‬ﻭﻋﻤﻠﻴﺎﺕ ﺗﻌﺪﻳﻞ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻭﻫﺬﺍ ﻳﻌﲏ ﺃﻥ ﻟﻐﺔ ‪ QBE‬ﻣﻔﻴﺪﺓ ﺑﺸﻜﻞ ﺧﺎﺹ ﻣﻦ ﺃﺟﻞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻌﺸﻮﺍﺋﻴﺔ ﳌﻌﺎﳉﺔ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﺑﺪ ﹰﻻ ﻣﻦ ﺗﻄﻮﻳﺮ ﺗﻄﺒﻴﻖ ﻛﺎﻣﻞ ﺑﻠﻐﺔ ‪ ،QBE‬ﻓﺈﻧﻪ ﻣﻦ ﺍﻟﺸﺎﺋﻊ ﺍﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ‬
‫‪ QBE‬ﻣﻦ ﺃﺟﻞ ﺑﻨﺎﺀ ﳕﻮﺫﺝ ﺃﻭﱄ ﻟﻠﺘﻄﺒﻴﻖ‪ ،‬ﻭﺣﻔﻆ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﱵ ﰎ ﺗﻄﻮﻳﺮﻫﺎ ﻭﺑﻌﺪﺋ ٍﺬ ﻳﺘﻢ‬
‫ﲢﺴﲔ ﻫﺬﻩ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﶈﻔﻮﻇﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﺩﻭﺍﺕ ﺗﻮﻟﻴﺪ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ ،‬ﻣﺜﻞ ﻣﻮﻟﺪﺍﺕ ﺍﻟﺘﻘﺎﺭﻳﺮ‬
‫ﻭﻣﻮﻟﺪﺍﺕ ﺍﻟﻨﻤﺎﺫﺝ ﻭﻣﻮﻟﺪﺍﺕ ﺍﻟﺸﺎﺷﺎﺕ‪ ،‬ﻭﻋﻦ ﻃﺮﻳﻖ ﺇﺿﺎﻓﺔ ﺃﺟﺰﺍﺀ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻟﻐﺔ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺮﺗﺒﻄﺔ ﺑﻨﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﺃﺟﻞ ﺃﻏﺮﺍﺽ ﲣﺼﻴﺺ ﺍﻟﺴﻠﻮﻙ‪.‬‬

‫— ‪QBEM=žKE K‬‬

‫ﻻ ﻳﻮﺟﺪ ﻣﻌﻴﺎﺭ ﺭﲰﻲ ﻟﻠﻐﺔ ‪ QBE‬ﻛﺎﻟﺬﻱ ﰎ ﺗﻌﺮﻳﻔﻪ ﻟﻠﻐﺔ ‪ ،SQL‬ﻭﳍﺬﺍ ﺍﻟﺴﺒﺐ ﻓﺈﻧﻪ ﻻ ﺗﻮﺟﺪ‬
‫ﳎﻤﻮﻋﺔ ﺃﺻﻐﺮﻳﺔ ﻣﻦ ﺍﳌﻤﻴﺰﺍﺕ ﻭﺍﻟﻘﺪﺭﺍﺕ ﺍﻟﱵ ﳚﺐ ﺃﻥ ﺗﺘﻤﺘﻊ ‪‬ﺎ ﻭﺍﺟﻬﺔ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻟﻜﻲ ﺗﻌﺘﱪ‬
‫ﲢﻘﻴﻘﹰﺎ ﻟﻠﻐﺔ ‪ .QBE‬ﻭﻟﻜﻦ ﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ ﻟﻐﺔ ‪ QBE‬ﰎ ﺇﻃﻼﻗﻬﺎ ﺑﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﺃﲝﺎﺙ ﲤﺖ ﻋﻠﻰ ﻟﻐﺎﺕ‬
‫ﺍﺳﺘﻌﻼﻡ‪ ،‬ﻭﺑﺎﻋﺘﺒﺎﺭ ﺃﻧﻪ ﰎ ﺟﻌﻞ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺍﻟﺒﻴﺎﻧﻴﺔ ﻟﻮﻳﻨﺪﻭﺯ ‪ Windows‬ﻗﻴﺎﺳﻴﺔ‪ ،‬ﻭﻛﺬﻟﻚ ﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ‬
‫ﻟﻐﺔ ‪ QBE‬ﻧﻔﺴﻬﺎ ﻟﻐﺔ ﻣﺮﺋﻴﺔ‪ ،‬ﻓﺈﻥ ﻛﻞ ﺫﻟﻚ ﺩﻓﻊ ﺍﻟﺒﺎﻋﺔ ﺇﱃ ﺍﻋﺘﻤﺎﺩ ﻃﺮﻗﹰﺎ ﻣﺸﺎ‪‬ﺔ ﻟﻠﻐﺔ ‪.QBE‬‬
‫‪549‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﳝﻜﻦ ﺇﺟﺮﺍﺀ ﻋﻤﻠﻴﺎﺕ ﺍﺳﺘﺮﺟﺎﻉ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺗﻌﺪﻳﻠﻬﺎ ﻋﻦ ﻃﺮﻳﻖ ﺇﺩﺧﺎﻝ ﻛﻠﻤﺎﺕ ﻣﻔﺘﺎﺣﻴﺔ ﺃﻭ ﺛﻮﺍﺑﺖ‬
‫ﺃﻭ ﺃﻣﺜﻠﺔ ﻋﻠﻰ ﻣﻌﻄﻴﺎﺕ ﺇﱃ ﺧﻼﻳﺎ ﻭﺍﺟﻬﺔ ﺇﻇﻬﺎﺭ ﺍﳉﺪﻭﻝ‪ .‬ﻭﺑﺎﻋﺘﺒﺎﺭ ﺃﻥ ﺗﻌﺎﺭﻳﻒ ﺍﳌﻌﻄﻴﺎﺕ ﺗ‪‬ﺨﺰﻥ ﰲ‬
‫ﺟﺪﺍﻭﻝ ﺩﺍﺧﻠﻴﺔ‪ ،‬ﻓﺈﻥ ﻋﻤﻠﻴﺎﺕ ﺗﻌﺮﻳﻒ ﺍﳌﻌﻄﻴﺎﺕ ﺗﺘﻢ ﻋﻦ ﻃﺮﻳﻖ ﻭﺍﺟﻬﺎﺕ ﺇﻇﻬﺎﺭ ﻟﻠﺠﺪﺍﻭﻝ‪ .‬ﻋﻨﺪ‬
‫ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭٍ‪ SQL‬ﰲ ‪) MS Access‬ﻭﺍﻟﺬﻱ ﻧﺴﺘﺨﺪﻣﻪ ﻣﻊ ﺃﻭﺭﺍﻛﻞ ﻣﻦ ﺃﺟﻞ ﺍﻷﻣﺜﻠﺔ ﺍﻟﺘﻮﺿﻴﺤﻴﺔ‬
‫ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ( ﻓﺈﻥ ﺫﻟﻚ ﺳﻮﻑ ﻳﻌﺮﺽ ﺷﻴﻔﺮﺓ ‪ SQL‬ﺑﱪﻧﺎﻣﺞ ‪ Access‬ﻭﺍﻟﺬﻱ ﰎ ﺗﻮﻟﻴﺪﻩ ﻛﺸﻴﻔﺮﺓ‬
‫‪ SQL‬ﻣﻮﺍﻓﻘﺔ ﻟﻼﺳﺘﻌﻼﻡ ﻣﺒﲏ ﺑﻠﻐﺔ ‪ QBE‬ﻳﺒﲔ ﺍﻟﺸﻜﻞ )‪ (9-9‬ﻫﺮﻣﻴﺔ ﺍﻻﺳﺘﺨﺪﺍﻡ ﰲ ‪Microsoft Access‬‬
‫ﺣﻴﺚ ﺗﻮﺟﺪ ﰲ ﻗﺎﻋﺪﺓ ﺍﳍﺮﻡ )ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ( ﺍﻷﻏﺮﺍﺽ ﺍﻟﱵ ﺗﺴﻤﺢ ﺑﺈﻧﺸﺎﺀ ﺍﳉﺪﺍﻭﻝ‬
‫ﻭﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻭﺍﻟﻨﻤﺎﺫﺝ ﻭﺍﻟﺘﻘﺎﺭﻳﺮ‪ ،‬ﺩﻭﻥ ﺃﻥ ﻳﺘﻄﻠﺐ ﺫﻟﻚ ﻣﻌﺮﻓﺔ ﻣﺴﺒﻘﺔ ﰲ ﺍﻟﱪﳎﺔ‪ .‬ﺃﻣﺎ ﰲ‬
‫ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﱐ ﻣﻦ ﺍﳍﺮﻡ ﻓﺘﻮﺟﺪ ﺍﻟﺘﻌﺎﺑﲑ ﻭﺍﻟﺘﻮﺍﺑﻊ ﺍﻟﱵ ﺗ‪‬ﺴﺘﺨﺪﻡ ﻹﺟﺮﺍﺀ ﺑﻌﺾ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺒﺴﻴﻄﺔ‬
‫ﻣﺜﻞ ﻋﻤﻠﻴﺎﺕ ﺟﺪﺍﺀ ﺍﳊﻘﻮﻝ‪ ،‬ﺃﻭ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﻼﺣﻴﺔ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﺣﱴ ﳝﻜﻦ ﺗﻄﺒﻴﻖ ﻗﻮﺍﻋﺪ‬
‫ﻋﻤﻞ ﻣﻌﻴﻨﺔ‪ .‬ﻭﺗﻮﺟﺪ ﰲ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﻟﺚ ﻣﻦ ﺍﳍﺮﻡ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ )‪ (macro‬ﺍﳌﺨﺰﻧﺔ ﺑﺸﻜﻞ ﻣﺴﺒﻖ‪ ،‬ﻭﻫﻲ‬
‫ﻭﺣﺪﺍﺕ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﻣﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ ﻓﻴﺠﻮﺍﻝ ﺑﻴﺴﻚ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ )‪Visual Basic for Application (VBA‬‬
‫ﻭﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﻳﺴﺘﻔﻴﺪ ﻣﻨﻬﺎ ﺍﳌﺴﺘﺨﺪﻣﻮﻥ ﰲ ﺃﲤﺘﺔ ﺗﻄﺒﻴﻘﺎ‪‬ﻢ‪ ،‬ﻭﻻ ﻳﺘﻄﻠﺐ ﺫﻟﻚ ﻣﻌﺮﻓﺔ ﺻﺮﳛﺔ ﺑﻠﻐﺔ‬
‫‪ .VBA‬ﳝﻜﻦ ﺃﻥ ﻳﻘﻮﻡ ﺍﳌﱪﳎﻮﻥ ﰲ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺮﺍﺑﻊ ﺑﻜﺘﺎﺑﺔ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ ﺍﳋﺎﺻﺔ ‪‬ﻢ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫‪ ،VBA‬ﻣﻦ ﺃﺟﻞ ﺿﺒﻂ ﻭﲣﺼﻴﺺ ﺗﻄﺒﻴﻘﺎ‪‬ﻢ‪ .‬ﺃﻣﺎ ﰲ ﻗﻤﺔ ﺍﳊﺰﻡ ﻓﺘﻮﺟﺪ ﺍﺳﺘﺪﻋﺎﺀﺍﺕ ﺗﻮﺍﺑﻊ ﻭﻣﻠﻔﺎﺕ‬
‫ﺭﺑﻂ ‪ DLL‬ﻣﻦ ﺍﻟﻮﺍﺟﻬﺔ ﺍﻟﱪﳎﻴﺔ ﻟﻨﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﻭﻳﻨﺪﻭﺯ ‪ ،Windows API‬ﻭﺍﻟﱵ ﺗﻜﻮﻥ ﻣﻜﺘﻮﺑﺔ‬
‫ﺑﻠﻐﺎﺕ ﺑﺮﳎﺔ ﺃﺧﺮﻯ ﻣﺜﻞ ‪ C‬ﺃﻭ ‪ Java‬ﺃﻭ ‪ ،Visual Basic‬ﻭﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻣﻬﺎ ﻟﻜﺘﺎﺑﺔ ﻭﺍﺟﻬﺎﺕ‬
‫ﻟﱪﺍﻣﺞ ﻭﻣﺼﺎﺩﺭ ﻣﻌﻄﻴﺎﺕ ﺃﺧﺮﻯ‪.‬‬

‫‪Access ϡ΍ΪΨΘγ΍ Δϴϣήϫ‬‬ ‫‪(9-9) ϞϜθϟ΍‬‬


‫›>‪a K›f8‬‬ ‫‪550‬‬

‫ﺗﺰﻭﺩﻧﺎ ﻟﻐﺔ ‪ QBE‬ﺑﻄﺮﻳﻘﺔ ﻣﺮﺋﻴﺔ ﺑﺴﻴﻄﺔ ﻹﻧﺸﺎﺀ ﺍﺳﺘﻌﻼﻣﺎﺕ ﺟﻴﺪﺓ‪ .‬ﻗﺪ ﻳﺘﻢ ﺍﻗﺘﺼﺎﺩ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳌﻄﻠﻮﺏ ﻋﺮﺿﻬﺎ ﲟﺠﻤﻮﻋﺔ ﳏﺪﺩﺓ ﻣﻦ ﺍﻷﻋﻤﺪﺓ ﻭﺍﻟﺴﺠﻼﺕ ﺍﻟﱵ ﲤﺘﻠﻚ ﺍﻟﻘﻴﻢ ﺍﳌﻄﻠﻮﺑﺔ‪ ،‬ﲤﺎﻣﹰﺎ ﻛﻤﺎ‬
‫ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ ﻋﻨﺪﻣﺎ ﺍﺳﺘﺨﺪﻣﻨﺎ ﻟﻐﺔ ‪ .SQL‬ﻭﳝﻜﻦ ﺑﻮﺳﺎﻃﺔ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺯﺭ ‪ SQL‬ﰲ ﻟﻮﺣﺔ‬
‫‪ QBE‬ﰲ ‪ Access‬ﺇﻇﻬﺎﺭ ﺷﻴﻔﺮﺓ ‪ SQL‬ﺍﳋﺎﺻﺔ ﺑـ ‪ Access‬ﻭﺍﳌﻮﺍﻓﻘﺔ ﻟﻼﺳﺘﻌﻼﻡ ﺑﻠﻐﺔ ‪ QBE‬ﰲ‬
‫‪.Access‬‬
‫ﻳﺒﲔ ﺍﻟﺸﻜﻞ )‪ (9-10‬ﻟﻮﺣﺔ ‪ QBE‬ﰲ ‪ ،Access‬ﺣﻴﺚ ﲤﺘﻠﻚ ﻫﺬﻩ ﺍﻟﻠﻮﺣﺔ ﰲ ﺟﺰﺋﻬﺎ ﺍﻷﻋﻠﻰ ﻣﺴﺎﺣﺔ‬
‫ﻋﻤﻞ ﲢﺘﻮﻱ ﻋﻠﻰ ﳕﻮﺫﺝ ﻣﻌﻄﻴﺎﺕ ﺍﳉﺪﺍﻭﻝ ﺍﻟﺪﺍﺧﻠﺔ ﰲ ﺍﻻﺳﺘﻌﻼﻡ ﻗﻴﺪ ﺍﻟﺒﻨﺎﺀ‪ .‬ﻭﺗﻈﻬﺮ ﺍﻟﻌﻼﻗﺎﺕ‬
‫ﺍﳌﻨﺸﺄﺓ ﻣﺴﺒﻘﹰﺎ ﰲ ﻫﺬﺍ ﺍﻟﻨﻤﻮﺫﺝ ﺑﺸﻜﻞ ﺁﱄ‪ ،‬ﻛﻤﺎ ﺃﻧﻪ ﰲ ﺑﻌﺾ ﺍﻷﺣﻴﺎﻥ ﻗﺪ ﺗﻠﺰﻡ ﻋﻼﻗﺎﺕ ﺃﺧﺮﻯ‬
‫ﻻﺳﺘﻌﻼﻡ ﻭﺍﺣﺪ ﳝﻜﻦ ﺇﻧﺸﺎﺅﻫﺎ ﰲ ﻟﻮﺣﺔ ‪ QBE‬ﻧﻔﺴﻬﺎ‪ .‬ﺃﻣﺎ ﺍﳉﺰﺀ ﺍﻟﺴﻔﻠﻲ ﻣﻦ ﻟﻮﺣﺔ ‪QBE‬‬
‫ﻓﻴﺴﻤﻰ ﻟﻮﺣﺔ ﺗﺼﻤﻴﻢ ﺍﻻﺳﺘﻌﻼﻡ ﺃﻭ ﺷﺒﻜﺔ ‪ ،QBE‬ﺗﻈﻬﺮ ﻫﺬﻩ ﺍﻟﺸﺒﻜﺔ ﳕﻮﺫﺝ ﻣﻦ ﳕﻂ ﺍﳉﺪﺍﻭﻝ‬
‫ﺍﻻﻟﻜﺘﺮﻭﻧﻴﺔ‪ ،‬ﺗﻮﺿﻊ ﻓﻴﻪ ﺍﳊﻘﻮﻝ ﺍﻟﻼﺯﻣﺔ ﻟﻼﺳﺘﻌﻼﻡ ﺃﻭ ﺷﺒﻜﺔ ‪ ،QBE‬ﺗ‪‬ﻈﻬﺮ ﻫﺬﻩ ﺍﻟﺸﺒﻜﺔ ﳕﻮﺫﺝ ﻣﻦ‬
‫ﳕﻂ ﺍﳉﺪﺍﻭﻝ ﺍﻹﻟﻜﺘﺮﻭﻧﻴﺔ‪ ،‬ﺗﻮﺿﻊ ﻓﻴﻪ ﺍﳊﻘﻮﻝ ﺍﻟﻼﺯﻣﺔ ﻟﻼﺳﺘﻌﻼﻡ‪ ،‬ﺇﺿﺎﻓﺔ ﺇﱃ ﻣﻌﺎﻳﲑ ﻓﻠﺘﺮﺓ ﻭﺗﺼﻨﻴﻒ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﰲ ﺍﻻﺳﺘﻌﻼﻡ‪ .‬ﳛﺘﻮﻱ ﻛﻞ ﻋﻤﻮﺩ ﰲ ﺷﺒﻜﺔ ‪ QBE‬ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺣﻘﻞ ﻣﻌﲔ ﻣﻦ‬
‫ﺃﺣﺪ ﺍﳉﺪﺍﻭﻝ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻠﻮﺣﺔ ﺍﻟﻌﻠﻴﺎ‪ ،‬ﺃﻭ ﻣﻦ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻠﻮﺣﺔ ﻧﻔﺴﻬﺎ‪ .‬ﻳﻈﻬﺮ‬
‫ﺍﻟﺸﻜﻞ )‪ (9-10‬ﻟﻮﺣﺔ ‪ QBE‬ﺍﳋﺎﺻﺔ ﺑﺎﺳﺘﻌﻼﻡ ﺍﻻﺧﺘﻴﺎﺭ ﺃﻭ ﺍﻻﺳﺘﺮﺟﺎﻉ ﺍﳌﻄﺒﻖ ﻋﻠﻰ ﺍﳉﺪﻭﻟﲔ‬
‫‪ Product‬ﻭ‪ ،Order_Line‬ﻭﺍﻟﺬﻱ ﻳﻘﻮﻡ ﺑﺎﺳﺘﺮﺟﺎﻉ ﻣﻌﻠﻮﻣﺎﺕ ﺣﻮﻝ ﺍﻟﻄﻠﺒﻴﺎﺕ ﺍﻟﱵ ﲢﺘﻮﻱ ﻛﻞ ﻣﻨﻬﺎ‬
‫ﻋﻠﻰ ﺍﳌﻨﺘﺠﺎﺕ ﺍﻟﱵ ﰎ ﻃﻠﺒﻬﺎ‪ .‬ﺗﺴﻤﻰ ﺍﻟﻨﺘﺎﺋﺞ ﺍﳌﻌﺮﻭﺿﺔ ﰲ ﺍﻟﺸﻜﻞ )‪ (9-11‬ﺑﺎ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ‪،‬‬
‫ﻷﻥ ﻫﺬﻩ ﺍﻟﻨﺘﺎﺋﺞ ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺃ‪‬ﺎ ﺗﺸﺒﻪ ﺍﳉﺪﻭﻝ‪ ،‬ﺇﻻ ﺃ‪‬ﺎ ﻟﻴﺴﺖ ﺟﺪﻭﻝ ﺣﻘﻴﻘﻲ‪ ،‬ﻭﺇﳕﺎ ﻋﺒﺎﺭﺓ ﻋﻦ‬
‫ﳎﻤﻮﻋﺔ ﺍﻓﺘﺮﺍﺿﻴﺔ ﻣﻦ ﺍﻟﺴﺠﻼﺕ ﻻ ﻳﺘﻢ ﲣﺰﻳﻨﻬﺎ ﰲ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻳ‪‬ﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-12‬ﺷﻴﻔﺮﺓ‬
‫‪ SQL‬ﰲ ‪ Access‬ﺍﳌﻮﺍﻓﻖ ﳍﺬﺍ ﺍﻻﺳﺘﻌﻼﻡ‪.‬‬
‫ﺗﺘﻤﺜﻞ ﳏﺎﺳﻦ ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﺑﺄﻥ ﻭﺳﻴﻂ ﺍﻟﺘﺨﺰﻳﻦ ﺳﻴﺘﻄﻠﺐ ﺣﺠﻤﹰﺎ ﺃﺻﻐﺮ‪ ،‬ﻭﺑﺄﻧﻪ ﻋﻨﺪ ﺗﺸﻐﻴﻞ‬
‫ﺍﻻﺳﺘﻌﻼﻡ ﰲ ﺃﻱ ﻭﻗﺖ ﺁﺧﺮ‪ ،‬ﻓﺈﻧﻪ ﺳﻴﺘﻢ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻨﺴﺨﺔ ﺍﳊﺎﻟﻴﺔ ﻣﻦ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﱵ‬
‫ﺳﺘﺤﺘﻮﻱ ﺍﻟﺴﺠﻼﺕ ﲟﺎ ﻓﻴﻬﺎ ﺍﳌﻀﺎﻓﺔ ﺃﻭ ﺍﳌﻌﺪﻟﺔ ﻣﻨﺬ ﺁﺧﺮ ﺗﺸﻐﻴﻞ ﻟﻼﺳﺘﻌﻼﻡ ﻧﻔﺴﻪ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ‬
‫ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺳﺘﺘﺼﺮﻑ ﻛﺎﳌﻨﺎﻇﺮ ﺍﻟﻌﻼﺋﻘﻴﺔ ﺍﻟﱵ ﲤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ‪ .‬ﻭﺇﺫﺍ ﺭﻏﺒﺖ‬
‫ﺑﺘﺨﺰﻳﻦ ﻧﺘﺎﺋﺞ ﺍﻻﺳﺘﻌﻼﻡ ﰲ ﺟﺪﻭﻝ ﺟﺪﻳﺪ‪ ،‬ﻓﺎﺳﺘﺨﺪﻡ ﺍﻻﺳﺘﻌﻼﻡ ‪.make-table‬‬
‫ﺇﻥ ﻣﺮﺍﺟﻌﺔ ﺳﺮﻳﻌﺔ ﻟﻼﺳﺘﻌﻼﻣﺎﺕ ﻣﺘﻌﺪﺩﺓ ﺍﳉﺪﺍﻭﻝ ﰲ ‪) SQL‬ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ( ﻛﻔﻴﻠﺔ ﺑﺘﺬﻛﲑﻙ‬
‫ﺑﺎﳌﺘﻄﻠﺒﺎﺕ ﺍﻟﻼﺯﻣﺔ ﻟﺘﺤﺪﻳﺪ ﺍﳉﺪﺍﻭﻝ ﺍﳌﻄﻠﻮﺑﺔ ﰲ ﺍﻻﺳﺘﻌﻼﻡ‪ ،‬ﻭﻛﺬﻟﻚ ﳎﻤﻮﻋﺔ ﻋﻼﻗﺎﺕ ﺍﳌﺴﺎﻭﺍﺓ ﺑﲔ‬
‫ﻫﺬﻩ ﺍﳉﺪﺍﻭﻝ‪ .‬ﺇﻥ ﻫﺬﻩ ﺍﻟﻮﺻﻼﺕ )ﺍﻻﺭﺗﺒﺎﻃﺎﺕ( ﻗﺪ ﺗﻜﻮﻥ ﻣﺴﺘﻬﻠﻜﺔ ﻟﻠﻮﻗﺖ ﻋﻨﺪ ﻛﺘﺎﺑﺔ ﺷﻴﻔﺮﺓ‬
‫‪ .SQL‬ﻳﺘﻢ ﲢﻘﻴﻖ ﻫﺬﻩ ﺍﻻﺭﺗﺒﺎﻃﺎﺕ ﰲ ‪ QBE‬ﰲ ‪ Access 2000‬ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺍﻟﺘﺼﺮﻳﺢ ﻋﻦ ﺍﻟﻌﻼﻗﺎﺕ‬
‫‪551‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﰲ ﺷﺎﺷﺔ ﺍﻟﻌﻼﻗﺎﺕ‪ .‬ﻭﻋﻨﺪ ﻭﺿﻊ ﺍﳉﺪﺍﻭﻝ ﺍﳌﻄﻠﻮﺑﺔ ﰲ ﻟﻮﺣﺔ ‪ QBE‬ﻓﺈﻥ ﻫﺬﻩ ﺍﻟﻌﻼﻗﺎﺕ ﻳﺘﻢ‬
‫ﺇﺣﻀﺎﺭﻫﺎ ﺇﱃ ﺍﻻﺳﺘﻌﻼﻡ ﺁﻟﻴﺎﹰ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﺍﻟﺘﺨﻠﺺ ﻣﻦ ﻋﻤﻠﻴﺔ ﻛﺘﺎﺑﺔ ﻛﻞ ﺍﺭﺗﺒﺎﻁ‪ .‬ﻭﻫﺬﺍ ﻗﺪ ﻳﻮﻓﺮ ﻭﻗﺘﹰﺎ‬
‫ﻛﺜﲑﹰﺍ ﻳﻠﺰﻡ ﻟﻜﺘﺎﺑﺔ ﺍﻻﺳﺘﻌﻼﻡ‪ ،‬ﻛﻤﺎ ﻳﻌﻄﻲ ﺩﻗﺔ ﰲ ﺫﻟﻚ‪ .‬ﺍﻧﻈﺮ ﺇﱃ ﺍﻟﺸﻜﻞ )‪ (9-10‬ﻭﻻﺣﻆ ﺃﻧﻪ ﰎ‬
‫ﺇﺿﺎﻓﺔ ﺍﳊﻘﻮﻝ ﺍﳌﻄﻠﻮﺑﺔ ﰲ ﻧﺘﺎﺋﺞ ﺍﻻﺳﺘﻌﻼﻡ ﻭﰎ ﻭﺿﻌﻬﺎ ﰲ ﺷﺒﻜﺔ ‪ .QBE‬ﻳ‪‬ﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪(9-12‬‬
‫ﻛﻤﻴﺔ ﺷﻴﻔﺮﺓ ‪ SQL‬ﺍﻟﻜﺒﲑﺓ ﺍﻟﻨﺎﲡﺔ ﻋﻦ ﳎﺮﺩ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﳉﺪﺍﻭﻝ ﻭﺳﺤﺒﻬﺎ ﺇﱃ ﻟﻮﺣﺔ ‪.QBE‬‬
‫ﻻﺣﻆ ﺃﻳﻀﹰﺎ ﺃﻧﻪ ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺃﻥ ﺷﺒﻜﺔ ‪ QBE‬ﻻ ﲢﺘﻮﻱ ﻋﻠﻰ ﻋﻤﻮﺩ ﺍﳌﻔﺘﺎﺡ ﺍﻷﻭﱄ ﻟﻠﺠﺪﺍﻭﻝ‬
‫‪) PRODUCT‬ﻭﻫﻮ ‪ (Product_ID‬ﺍﻟﺬﻱ ﺍﹸﺳﺘﺨﺪﻡ ﻟﺘﺤﻘﻴﻖ ﺍﻻﺭﺗﺒﺎﻁ ﺑﲔ ﺍﳉﺪﻭﻟﲔ‪ ،‬ﺃﳒﺰ ﺍﻻﺭﺗﺒﺎﻁ‬
‫ﺍﻟﺼﺤﻴﺢ ﺑﺸﻜﻞ ﺻﺮﻳﺢ ﰲ ﺷﻴﻔﺮﺓ ‪ ،SQL‬ﻭﻻﺣﻆ ﺃﻳﻀﹰﺎ ﺍﻻﺧﺘﻼﻑ ﺍﻟﻜﺒﲑ ﺑﲔ ﻟﻐﺔ ‪ SQL‬ﺍﳋﺎﺻﺔ‬
‫ﺑـ ‪ Access‬ﻭﻟﻐﺔ ‪ Oracle SQ*PLUS‬ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ‪ .‬ﺇﻥ ﻫﺬﺍ ﺍﻻﺧﺘﻼﻑ ﻳﺒﲔ ﺃﻥ‬
‫ﻛﻞ ﺑﺎﺋﻊ ﻟﻪ ﻟﻐﺔ ‪ SQL‬ﺍﳋﺎﺻﺔ ﻭﺍﳌﻔﻀﻠﺔ ﻟﺪﻳﻪ‪.‬‬

‫‪ϢϴϤμΘϟ΍ ςϤϧ ϲϓ MS Access 2000 ϡ΍ΪΨΘγΎΑ ϝϭ΍ΪΠϟ΍ ΩΪόΘϣ ϡϼόΘγ΍‬‬ ‫‪(9-10) ϞϜθϟ΍‬‬
‫›>‪a K›f8‬‬ ‫‪552‬‬

‫‪ϖΑΎδϟ΍ ϞϜθϟ΍ ϲϓ Ωέ΍Ϯϟ΍ ϡϼόΘγϻ΍ Ξ΋ΎΘϧ‬‬ ‫‪(9-11) ϞϜθϟ΍‬‬

‫‪MS Access 2000 ϦϤο SQL ΔϬΟ΍ϭ ϡ΍ΪΨΘγΎΑ (9-10) ϞϜθϟ΍ ϲϓ Ωέ΍Ϯϟ΍ ϡϼόΘγϻ΍‬‬ ‫‪(9-12) ϞϜθϟ΍‬‬

‫›‪£Wàžu ¥KE‬‬
‫ﻣﺎ ﳛﺪﺙ ﺇﺫﺍ ﻛﻨﺖ ﻣﻬﺘﻤﹰﺎ ﻓﻘﻂ ﻟﺴﺠﻼﺕ ﳏﺪﺩﺓ؟ ﳚﻴﺐ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺴﺆﺍﻝ ﺍﻟﺸﻜﻞ)‪ (9-13‬ﺍﻟﺬﻱ‬
‫ﻳﺒﲔ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻷﺳﺎﺳﻴﺔ ﻹﺩﺧﺎﻝ ﺍﳌﻌﺎﻳﲑ ﻭﺍﻟﺸﺮﻭﻁ ﺍﻟﱵ ﳚﺐ ﺃﻥ ﲢﻘﻘﻬﺎ ﺍﻟﺴﺠﻼﺕ ﺍﳌﺴﺘﺮﺟﻌﺔ ﻣﻦ‬
‫ﺍﳉﺪﻭﻝ‪ .‬ﻭﻳﺘﻢ ﲢﺪﻳﺪ ﻫﺬﻩ ﺍﳌﻌﺎﻳﲑ ﻋﻦ ﻃﺮﻳﻖ ﺇﺩﺧﺎﳍﺎ ﲢﺖ ﺍﻷﻋﻤﺪﺓ ﺍﻟﱵ ﺳﺘ‪‬ﻄﺒﻖ ﻋﻠﻴﻬﺎ ﰲ ﺷﺒﻜﺔ‬
‫‪ .QBE‬ﻳ‪‬ﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-14‬ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ ﺍﳌﺴﺘﺮﺟﻌﺔ ﻟﻼﺳﺘﻌﻼﻡ ﺍﻟﺴﺎﺑﻖ‪ .‬ﻛﻤﺎ ﺗﻼﺣﻆ ﰲ‬
‫‪553‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺍﻟﺸﻜﻞ )‪ (9-13‬ﻓﺈﻧﻪ ﻟﻴﺲ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺃﻥ ﻳﻜﻮﻥ ﺍﻟﺸﺮﻁ ﻫﻮ ﺷﺮﻁ ﻣﺴﺎﻭﺍﺓ‪ ،‬ﻓﻘﺪ ﻳﻜﻮﻥ ﻣﺴﺎﻭﺍﺓ‪،‬‬
‫ﻼ ﳝﻜﻨﻚ ﺇﺩﺧﺎﻝ ﺍﻟﺸﺮﻁ "‪ "Between 350 and 700‬ﲢﺖ‬ ‫ﺃﻭ ﺍﺧﺘﺒﺎﺭ ﻗﻴﻤﺔ ﺿﻤﻦ ﳎﺎﻝ ﻣﻌﲔ‪ .‬ﻓﻤﺜ ﹰ‬
‫ﺍﻟﻌﻤﻮﺩ ‪ standard_price‬ﰲ ﺍﻟﺸﻜﻞ )‪ (9-13‬ﳌﻌﺮﻓﺔ ﺃﻱ ﺍﳌﻨﺘﺠﺎﺕ ﺗﻘﻊ ﺿﻤﻦ ﺍ‪‬ﺎﻝ ﺍﻟﻮﺳﻄﻲ‬
‫ﻟﻸﺳﻌﺎﺭ‪.‬‬

‫‪ΩΪΤϣ ΞΘϨϣ Ϧϣ ήΜϛ΃ ϭ΃ ΕΎΠΘϨϣ ΔΛϼΜϟ ΔΑϮϠτϤϟ΍ ΕΎΒϠτϟ΍ έΎϴΘΧϻ ϡϼόΘγ΍‬‬ ‫‪(9-13) ϞϜθϟ΍‬‬

‫ﻛﻤﺎ ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺍﻣﻞ‪ ،‬ﻭﺍﻟﺘﻮﺍﺑﻊ ﻭﺍﻟﺘﻌﺎﺑﲑ ﰲ ﺇﻧﺸﺎﺀ ﺍﻟﺸﺮﻭﻁ ﰲ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‪ .‬ﻓﻴﻤﻜﻦ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺍﻣﻞ ﺍﳊﺴﺎﺑﻴﺔ ﻣﺜﻞ ﺍﻟﻀﺮﺏ ﻭﺍﻟﻘﺴﻤﺔ ﻣﻊ ﺍﳊﻘﻮﻝ ﺍﻟﺮﻗﻤﻴﺔ‪ ،‬ﻛﻤﺎ ﻳ‪‬ﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ‬
‫ﺍﻟﻌﻮﺍﻣﻞ ﺍﻟﻌﻼﺋﻘﻴﺔ ﻣﺜﻞ ﺍﳌﺴﺎﻭﺍﺓ‪ ،‬ﺍﻟﻼ ﻣﺴﺎﻭﺍﺓ‪ ،‬ﺃﺻﻐﺮ ﻣﻦ‪ ،‬ﺃﻛﱪ ﻣﻦ‪ ،‬ﻣﻊ ﺍﳊﻘﻮﻝ ﺍﻟﺮﻗﻤﻴﺔ ﻭﺣﻘﻮﻝ‬
‫ﺍﻟﺘﺎﺭﻳﺦ‪ ،‬ﻭﺍﳊﻘﻮﻝ ﺍﻟﻨﺼﻴﺔ‪ ،‬ﻭﺃﺧﲑﹰﺍ ﻳ‪‬ﻤﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺍﻣﻞ ﺍﳌﻨﻄﻘﻴﺔ ﻣﻦ ﺃﺟﻞ ﺇﻋﺪﺍﺩ ﺍﻟﺸﺮﻭﻁ ﺿﻤﻦ‬
‫ﺍﻟﺘﻌﺎﺑﲑ‪ .‬ﺃﻣﺎ ﺍﻟﺘﻮﺍﺑﻊ ﻓﻬﻲ ﻭﺣﺪﺍﺕ ﻣﻦ ﺍﻟﺸﻴﻔﺮﺓ ﺗﻌﻴﺪ ﺩﺍﺋﻤﹰﺎ ﻗﻴﻤﺔ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﺣﺴﺎﺑﺎﺕ ﺃﻭ ﻣﻘﺎﺭﻧﺎﺕ‬
‫ﻳﺘﻢ ﺇﺟﺮﺍﺅﻫﺎ ﺿﻤﻨﻬﺎ‪ .‬ﻭﻳﺘﻢ ﲢﺪﻳﺪ ﳕﻂ ﺍﻟﻘﻴﻤﺔ ﺍﳌﻌﺎﺩﺓ ﺣﺴﺐ ﻃﺒﻴﻌﺔ ﺍﻟﺘﺎﺑﻊ‪ ،‬ﻛﺄﻥ ﺗﻜﻮﻥ ﻣﻦ ﳕﻂ‬
‫ﺍﻟﺴﻼﺳﻞ ﺍﶈﺮﻓﻴﺔ‪ ،‬ﺃﻭ ﻣﻨﻄﻘﻴﺔ‪ ،‬ﺃﻭ ﺭﻗﻤﻴﺔ‪ .‬ﻭﳝﺘﻠﻚ ‪ Microsoft Access‬ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﻟﺘﻮﺍﺑﻊ ﺍﻟﺸﺎﺋﻌﺔ‬
‫ﻣﺴﺒﻘﺔ ﺍﻟﺘﻌﺮﻳﻒ ﺍﻟﱵ ﺗﻜﻮﻥ ﳐﺰﻧﺔ ﺿﻤﻨﻪ ﻣﻦ ﺃﺟﻞ ﺍﻻﺳﺘﺨﺪﺍﻡ‪ ،‬ﻣﺜﻞ ﺗﺎﺑﻊ ﺍﳉﻤﻊ ﻭﺗﺎﺑﻊ ﺍﻟﻮﺳﻄﻲ‪،‬‬
‫›>‪a K›f8‬‬ ‫‪554‬‬

‫ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺑﻌﺾ ﺍﻟﺘﻮﺍﺑﻊ ﺍﳋﺎﺻﺔ ﺍﻟﱵ ﻗﺪ ﺗﻜﻮﻥ ﻣﻜﺘﻮﺑﺔ ﺑﻮﺳﺎﻃﺔ ‪ .VBA‬ﻭﺃﺧﲑﺍﹰ‪ ،‬ﺍﻟﺘﻌﺎﺑﲑ ﻫﻲ‬
‫ﻋﺒﺎﺭﺓ ﻋﻦ ﺣﺪ ﺃﻭ ﺳﻠﺴﻠﺔ ﻣﻦ ﺍﳊﺪﻭﺩ ﺍﻟﱵ ﻳﺘﻢ ﺭﺑﻄﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻌﻮﺍﻣﻞ‪ .‬ﳛﺎﻭﻝ ‪ Access‬ﺍﳌﺴﺎﻋﺪﺓ‬
‫ﻗﺪﺭ ﺍﻹﻣﻜﺎﻥ ﻋﻞ ﻛﺘﺎﺑﺔ ﺍﻟﺸﻴﻔﺮﺓ ﺍﳌﻌﱪﺓ ﻋﻦ ﺍﻟﺘﻌﺎﺑﲑ ﻋﻦ ﻃﺮﻳﻖ ﺇﲤﺎﻡ ﺍﶈﺎﺭﻑ ﺍﳌﻄﻠﻮﺑﺔ ‪-‬ﻣﺜﻞ‬
‫ﺇﺷﺎﺭﺍﺕ ﺍﻻﻗﺘﺒﺎﺱ ‪ -quotes‬ﺇﺫﺍ ﰎ ﺇﻏﻔﺎﳍﺎ‪.‬‬

‫‪(9-13) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ Ξ΋ΎΘϧ‬‬ ‫‪(9-14) ϞϜθϟ΍‬‬

‫›‪l›X›PW‬‬
‫ﻫﻨﺎﻙ ﺑﻌﺾ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﻟﱵ ﺗﻜﻮﻥ ﻋﻤﻠﻴﺔ ﺑﻨﺎﺅﻫﺎ ﺳﻬﻠﺔ ﺟﺪﹰﺍ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻭﺍﺟﻬﺎﺕ ‪ ،QBE‬ﻷﻥ‬
‫ﲤﺜﻴﻠﻬﺎ ﺍﳌﺮﺋﻲ ﺃﻛﺜﺮ ﻭﺿﻮﺣﹰﺎ ﻭﺳﻬﻮﻟﺔ ﻣﻦ ﺍﻻﻟﺘﺰﺍﻡ ﺑﺎﻟﻘﻮﺍﻋﺪ ﺍﻟﻨﺤﻮﻳﺔ ﺍﳌﻌﻘﺪﺓ ﻟﻠﻐﺔ‪ .‬ﻭﻛﻤﺜﺎﻝ ﻋﻠﻰ ﻫﺬﻩ‬
‫ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﺳﺘﻌﻼﻡ ﻳﺘﻄﻠﺐ ﺃﻥ ﻳ‪‬ﺪﻣﺞ )ﻳ‪‬ﺮﺑﻂ( ﺍﳉﺪﻭﻝ ﻣﻊ ﻧﻔﺴﻪ‪ .‬ﻳ‪‬ﺪﻋﻰ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ‬
‫ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺑﺎﻟﺪﻣﺞ ﺍﻟﺬﺍﰐ ﺃﻭ ﺍﻟﺪﻣﺞ ﺍﻟﻌﻮﺩﻱ‪ .‬ﻟﻨﻔﺘﺮﺽ ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ ﺃﻧﻚ ﺗﺮﻏﺐ ﲟﻌﺮﻓﺔ‬
‫ﺍﻟﻄﻠﺒﻴﺎﺕ ﺍﻟﱵ ﲢﺘﻮﻱ ﻋﻠﻰ ﺍﳌﻨﺘﺠﺎﺕ ﻧﻔﺴﻬﺎ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺍﻟﻄﻠﺒﻴﺔ ﺫﺍﺕ ﺍﻟﺮﻗﻢ ‪ ،1004‬ﻗﺪ ﻳﻠﺰﻡ ﻣﺜﻞ‬
‫ﻼ ﺍﻟﺘﻐﻠﻴﻒ( ﰲ ﻃﻠﺒﻴﺔ ﻣﻌﻴﻨﺔ‪ ،‬ﻭﺭﻏﺒﻨﺎ‬‫ﻫﺬﺍ ﺍﻻﺳﺘﻌﻼﻡ ﰲ ﺣﺎﻟﺔ ﻣﺜﻞ ﺇﺫﺍ ﺍﻛﺘﺸﻔﻨﺎ ﻣﺸﻜﻠﺔ ﻋﻤﻠﻴﺔ )ﻣﺜ ﹰ‬
‫ﲟﻌﺮﻓﺔ ﺇﻥ ﻛﺎﻥ ﻫﻨﺎﻙ ﻃﻠﺒﻴﺎﺕ ﺃﺧﺮﻯ ﺗ‪‬ﻌﺎﱐ ﻣﻦ ﺍﳌﺸﻜﻠﺔ ﻧﻔﺴﻬﺎ‪ .‬ﻳ‪‬ﺒﲔ ﺍﻟﺸﻜﻞ )‪ (9-15-a‬ﺍﻻﺳﺘﻌﻼﻡ‬
‫ﺍﳌﻨﺸﺄ ﺑﻮﺍﺳﻄﺔ ‪ QBE‬ﰲ ‪ Access 2000‬ﻭﺍﻟﺬﻱ ﻳ‪‬ﺠﻴﺐ ﻋﻦ ﻫﺬﺍ ﺍﻟﺘﺴﺎﺅﻝ‪ .‬ﳝﻜﻦ ﺇﺟﺮﺍﺀ ﺍﻟﺪﻣﺞ ﺍﻟﺬﺍﰐ‬
‫ﻋﻦ ﻃﺮﻳﻖ ﻭﺿﻊ ﻧﺴﺨﺘﲔ ﻣﻦ ﺍﳉﺪﻭﻝ ‪ Order_Line_t‬ﰲ ﻟﻮﺣﺔ ‪ ،QBE‬ﻭﻣﻦ ﰒ ﻭﺿﻊ ﺍﻟﻌﻼﻗﺎﺕ‬
‫ﺑﲔ ﻣﻌﺮﻓﺎﺕ ﺍﳌﻨﺘﺠﺎﺕ ‪) IDs‬ﺍﻧﻈﺮ ﺇﱃ ﺧﻂ ﺍﻟﻌﻼﻗﺔ ﺍﻟﱵ ﺗﺮﺑﻂ ﺣﻘﻞ ‪ Product_ID‬ﰲ ﻛﻼ‬
‫ﺍﳉﺪﻭﻟﲔ(‪ ،‬ﻭﺑﻌﺪ ﺫﻟﻚ ﻭﺿﻊ ﺍﻟﺸﺮﻁ ‪ 1004‬ﰲ ﺃﺣﺪ ﺍﳉﺪﻭﻟﲔ ﻭ‪ NOT 1004‬ﰲ ﺍﳉﺪﻭﻝ ﺍﻵﺧﺮ‬
‫ﺍﻟﺬﻱ ﺳﻴﻌﻴﺪ ﻗﻴﻢ ﻣﻌﺮﻓﺎﺕ ‪ ID‬ﻭﻛﻤﻴﺎﺕ ﺍﳌﻨﺘﺠﺎﺕ‪ .‬ﺑﲔ ﺍﻟﺸﻜﻞ )‪ (9-15-b‬ﺃﻥ ﺍﳌﻨﺘﺞ ﺫﻭ ﺍﻟﺮﻗﻢ ‪ 8‬ﻗﺪ‬
‫ﰎ ﻃﻠﺒﻪ ﰲ ﺍﻟﻄﻠﺒﻴﺎﺕ ﺍﻷﺧﺮﻯ‪.‬‬
555 ·j¦…¶WážKE:<W ›jME9

ϲϓ ΔΑϮϠτϤϟ΍ ΕΎΠΘϨϤϟ΍ βϔϧ ΐϠτΗ ϲΘϟ΍ ΕΎΒϠτϟ΍ ϲϫ Ύϣ :ϲΗ΍άϟ΍ ςΑήϟ΍ Ϧϋ ϝΎΜϣ (9-15-a) ϞϜθϟ΍
ˮ1004 Ϣϗέ ΐϠτϟ΍

(9-15-a) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ Ξ΋ΎΘϧ (9-15-b) ϞϜθϟ΍

Access ˰ϟ SQL ΔϬΟ΍ϭ ϲϓ (9-15-a) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ Δϐϴλ (9-15-c) ϞϜθϟ΍
‫›>‪a K›f8‬‬ ‫‪556‬‬

‫ﻫﻨﺎﻙ ﺛﻼﺛﺔ ﻣﻦ ﻫﺬﺍ ﺍﳌﻨﺘﺞ ﻗﺪ ﰎ ﻃﻠﺒﻬﺎ ﰲ ﺍﻟﻄﻠﺒﻴﺔ ﺫﺍﺕ ﺍﻟﺮﻗﻢ ‪ ،1008‬ﻭﻋﺸﺮﺓ ﻣﻨﻪ ﰎ ﻃﻠﺒﻬﺎ ﰲ‬
‫ﺍﻟﻄﻠﺒﻴﺔ ﺭﻗﻢ ‪ .1010‬ﻳﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-15c‬ﺷﻴﻔﺮﺓ ‪ SQL‬ﺍﳌﻮﺍﻓﻘﺔ )ﻭﺍﻟﱵ ﳝﻜﻦ ﺗﺸﻐﻴﻠﻬﺎ ﻋﻠﻰ ﻗﺎﻋﺪﺓ‬
‫ﻣﻌﻄﻴﺎﺕ ﳏﻠﻴﺔ ﺃﻭ ﻣﻮﺟﻮﺩﺓ ﻋﻠﻰ ﺍﳌﺨﺪﻡ(‪.‬‬

‫‪Y–¶u< ›kA ¶u< ›[E G‬‬


‫ﻗﺪ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﺼﻌﺐ ﺍﻹﺟﺎﺑﺔ ﻋﻠﻰ ﺑﻌﺾ ﺍﻷﺳﺌﻠﺔ ﺑﻮﺍﺳﻄﺔ ﺍﺳﺘﻌﻼﻡ ﻭﺍﺣﺪ‪ .‬ﺣﱴ ﻟﻮ ﰎ ﺍﺳﺘﺨﺪﺍﻡ‬
‫‪ .QBE‬ﺇﺣﺪﻯ ﻃﺮﻕ ﻣﻌﺎﳉﺔ ﺍﺳﺘﻌﻼﻣﺎﺕ ﺻﻌﺒﺔ ﻣﺜﻞ ﻫﺬﻩ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻫﻲ ﲡﺰﻱﺀ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‬
‫ﺇﱃ ﻋﺪﺓ ﺧﻄﻮﺍﺕ‪ ،‬ﺣﻔﻆ ﺍﻻﺳﺘﻌﻼﻡ ﺍﳌﻮﻟﺪ ﻟﻺﺟﺎﺑﺔ ﻋﻠﻰ ﺧﻄﻮﺓ ﻣﻌﻴﻨﺔ‪ ،‬ﻭﻣﻦ ﰒ ﺗﺄﺳﻴﺲ ﺍﻻﺳﺘﻌﻼﻡ‬
‫ﺍﻟﺘﺎﱄ ﻋﻠﻰ ﺍﻻﺳﺘﻌﻼﻡ ﺍﶈﻔﻮﻅ )ﺍﳌﺨ‪‬ﺰﻥ( ﺑﺪ ﹰﻻ ﻣﻦ ﺗﻄﺒﻴﻘﻪ ﻋﻠﻰ ﺍﳉﺪﺍﻭﻝ ﺍﻷﺳﺎﺳﻴﺔ‪ .‬ﺗﺸﺒﻪ ﺃﻣﺜﺎﻝ ﻫﺬﻩ‬
‫ﺍﻟﻄﺮﻳﻘﺔ ﺃﺣﻴﺎﻧﹰﺎ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﳉﺰﺋﻴﺔ ﰲ ‪ .SQL‬ﻭﻫﻜﺬﺍ ﻓﺈﻥ ﺗﺄﺳﻴﺲ ﺍﺳﺘﻌﻼﻡ ﻋﻠﻰ ﺍﺳﺘﻌﻼﻡ ﺁﺧﺮ‬
‫ﳝﻜﻨﻚ ﻣﻦ ﺣﺴﺎﺏ ﻗﻴﻢ ﺍﻟﺘﻮﺍﺑﻊ )ﻣﺜﻞ ‪ (... ،COUNT ،SUM‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ‬
‫ﺍﳌﻮﻟﺪﺓ ﺑﻮﺍﺳﻄﺔ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﺍﶈﻔﻮﻇﺔ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﺣﻞ ﺑﻌﺾ ﺍﻟﺼﻌﻮﺑﺎﺕ ﺍﳌﺮﺗﺒﻄﺔ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﺘﻮﺍﺑﻊ‬
‫ﻣﻊ ﳎﻤﻮﻋﺎﺕ ﺍﻟﺴﺠﻼﺕ‪ ،‬ﺍﻟﱵ ﲤﺖ ﻣﻨﺎﻗﺸﺘﻬﺎ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ‪.‬‬
‫ﻟﻸﺛﺎﺙ‬ ‫‪Pine Valley‬‬ ‫ﻟﻨﻔﺘﺮﺽ ﺃﻧﻚ ﺗﺮﻏﺐ ﺑﺈﳚﺎﺩ ﺍﻟﺰﺑﺎﺋﻦ ﺍﻟﺬﻳﻦ ﱂ ﻳﺸﺘﺮﻭﺍ ﺃﻱ ﺷﻲﺀ ﻣﻦ ﺷﺮﻛﺔ‬
‫ﺧﻼﻝ ﺷﻬﺮ ﺗﺸﺮﻳﻦ ﺍﻷﻭﻝ ﻋﺎﻡ ‪.2000‬‬
‫ﻭﻫﺬﺍ ﻳﻌﲏ ﺃﻧﻚ ﺗﺮﻏﺐ ﲟﻌﺮﻓﺔ ﺃﺭﻗﺎﻡ ﺍﻟﺰﺑﺎﺋﻦ ﰲ ﺳﺠﻼﺕ ﺍﳉﺪﻭﻝ ‪ Customer_t‬ﺍﻟﱵ ﱂ ﺗ‪‬ﺪﺭ‪‬ﺝ ﰲ‬
‫ﺳﺠﻼﺕ ﺍﳉﺪﻭﻝ ‪ Order_t‬ﻟﺸﻬﺮ ﺗﺸﺮﻳﻦ ﺍﻷﻭﻝ ﻟﻌﺎﻡ ‪.2000‬‬
‫ﺗﻈﻬﺮ ﺍﻷﺷﻜﺎﻝ )‪ (9-16-d, 9-16-c, 9-16-b, 9-16-a‬ﻛﻴﻒ ﳝﻜﻨﻚ ﺍﻹﺟﺎﺑﺔ ﻋﻠﻰ ﻫﺬﺍ ﺍﻟﺴﺆﺍﻝ ﻋﻦ‬
‫ﻃﺮﻳﻖ ﺑﻨﺎﺀ ﺍﺳﺘﻌﻼﻡ ﺃﻭﻝ‪ ،‬ﰒ ﺑﻨﺎﺀ ﺍﺳﺘﻌﻼﻡ ﺁﺧﺮ ﻳﺴﺘﺨﺪﻡ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻷﻭﻝ‪ .‬ﻳﻌﻴﺪ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻷﻭﻝ‬
‫ﺍﻟﺰﺑﺎﺋﻦ ﺍﻟﺬﻳﻦ ﻃﻠﺒﻮﺍ ﻃﻠﺒﻴﺎﺕ ﰲ ﺷﻬﺮ ﺗﺸﺮﻳﻦ ﺍﻷﻭﻝ‪ ،‬ﳝﺜﻞ ﺍﻟﺸﻜﻞ )‪ ،QBE (9-16-a‬ﺑﻴﻨﻤﺎ ﻳﻈﻬﺮ‬
‫ﺍﻟﺸﻜﻞ )‪ (9-16-b‬ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ ﻟﻠﻨﺘﺎﺋﺞ‪ .‬ﻭﻗﺪ ﰎ ﺣﻔﻆ ‪ QBE‬ﳍﺬﺍ ﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﺳﺘﻌﻼﻡ‬
‫ﻣﺴﻤﻰ ﺑﺎﺳﻢ ‪ .First Query‬ﺃﻣﺎ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻟﺜﺎﱐ ﺳﻴﺴﺘﺨﺪﻡ ﺑﻌﺪ ﺫﻟﻚ ﺍﻟﺪﻣﺞ ﺍﳋﺎﺭﺟﻲ ﳌﻘﺎﺭﻧﺔ‬
‫ﻗﺎﺋﻤﺔ ﲨﻴﻊ ﺍﻟﺰﺑﺎﺋﻦ )ﺍﳉﺪﻭﻝ ‪ (Customer_t‬ﻣﻊ ﻫﺆﻻﺀ ﺍﻟﺬﻱ ﻃﻠﺒﻮﺍ ﻃﻠﺒﻴﺎﺕ )ﺍﳉﺪﻭﻝ ﺍﻻﻓﺘﺮﺍﺿﻲ‬
‫ﺍﻟﻮﳘﻲ ﺍﳌﻌﺮﻑ ﺑﻮﺍﺳﻄﺔ ﺍﻻﺳﺘﻌﻼﻡ ‪ (First Query‬ﻭﻣﻦ ﰒ ﻳﻌﻴﺪ ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻴﻜﻴﺔ ﺍﻟﱵ ﲢﺘﻮﻱ‬
‫ﻓﻘﻂ ﺍﻟﺰﺑﺎﺋﻦ ﺍﻟﺬﻳﻦ ﱂ ﻳﺘﻢ ﺇﳚﺎﺩﻫﻢ ﰲ ﺍ‪‬ﻤﻮﻋﺔ ﺍﻟﺪﻳﻨﺎﻣﻜﻴﺔ ﺍﻟﻨﺎﲡﺔ ﻋﻦ ﺍﻻﺳﺘﻌﻼﻡ ﺍﻷﻭﻝ )ﺍﻧﻈﺮ ﺇﱃ‬
‫ﺍﻟﺸﺮﻁ ‪ Is Null‬ﰲ ﺍﻟﺸﻜﻞ )‪.((9-16-c‬‬
557 ·j¦…¶WážKE:<W ›jME9

ϲϓ ΢οϮϣ ήΧ΁ ϡϼόΘγ΍ ϲϓ Ϫϣ΍ΪΨΘγ΍ ϢΘϴϟ MS Access ϲϓ ϡϼόΘγ΍ βϴγ΄Η (9-16-a) ϞϜθϟ΍
(9-16-c) ϞϜθϟ΍

(9-16-a) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ Ξ΋ΎΘϧ (9-16-b) ϞϜθϟ΍


‫›>‪a K›f8‬‬ ‫‪558‬‬

‫‪(9-16-a) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ ϰϠϋ ΪϤΘόϳ ϡϼόΘγ΍ (9-16-c) ϞϜθϟ΍‬‬

‫‪(9-16-c) ϞϜθϟ΍ ϲϓ ΢οϮϤϟ΍ ϡϼόΘγϻ΍ Ξ΋ΎΘϧ (9-16-d) ϞϜθϟ΍‬‬

‫› ‪pass-Through_BC›hžKu< t›¶›W‬‬

‫ﺇﻥ ﺃﺣﺪ ﺍﻷﺳﺒﺎﺏ ﺍﻟﱵ ﺟﻌﻠﺖ ‪ MS Access‬ﺷﺎﺋﻌﺎﹰ ﻛﻮﺍﺟﻬﺔ ﻟﻠﺰﺑﻮﻥ ﰲ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻫﻮ‬
‫ﺳﻬﻮﻟﺔ ﺇﺭﺳﺎﻝ ﺍﻷﻭﺍﻣﺮ ﺇﱃ ﺃﻱ ﳐﺪﻡ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻳﺪﻋﻢ ﻣﻌﻴﺎﺭ ‪ ODBC‬ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫‪559‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺍﺳﺘﻌﻼﻣﺎﺕ ‪ pass_through‬ﺍﻟﱵ ﺗﻜﻮﻥ ﺑﻠﻐﺔ ‪ SQL‬ﺍﳋﺎﺻﺔ ﲟﺨﺪﻡ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺪﺍﻋﻢ ﳌﻌﻴﺎﺭ‬
‫‪ ODBC‬ﺑﺪ ﹰﻻ ﻣﻦ ‪ SQL‬ﺍﳋﺎﺻﺔ ﺑـ ‪ ،Access‬ﻭﳝﻜﻨﻚ ﺍﻟﻌﻤﻞ ﻣﺒﺎﺷﺮﺓ ﻣﻊ ﺍﳉﺪﺍﻭﻝ ﺍﳌﻮﺟﻮﺩﺓ ﻋﻠﻰ‬
‫ﺍﳌﺨﺪﻡ ﺑﺪ ﹰﻻ ﻣﻦ ﺍﻻﺭﺗﺒﺎﻁ ﻣﻌﻬﺎ‪.‬‬
‫ﺇﻥ ﲨﻴﻊ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻘﻖ ﺍﻟﻘﻮﺍﻋﺪﻱ ﻻﺳﺘﻌﻼﻣﺎﺕ ‪ SQL‬ﻭﺗﻔﺴﲑﻫﺎ ﻭﺗﺮﲨﺘﻬﺎ ﺗﺘﻢ ﻋﻠﻰ ﻗﺎﻋﺪﺓ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﻋﻠﻰ ﺍﳌﺨﺪﻡ‪ .‬ﺳﺘﻨﺨﻔﺾ ﻋﻤﻠﻴﺎﺕ ﺍﻻﺯﺩﺣﺎﻡ ﻋﻠﻰ ﺍﻟﺸﺒﻜﺔ ﻷﻧﻪ ﻓﻘﻂ ﺍﺳﺘﻌﻼﻡ ‪SQL‬‬
‫ﺍﻟﺒﺪﺍﺋﻲ ﺳﻴﺘﻢ ﺗﺒﺎﺩﻟﻪ ﺑﲔ ﺍﳌﺨﺪﻡ ﻭﺍﻟﺰﺑﻮﻥ ﻣﻊ ﳎﻤﻮﻋﺔ ﺍﻟﺴﺠﻼﺕ ﺍﳌﻌﺎﺩﺓ ﻛﻨﺘﻴﺠﺔ ﻟﻪ‪.‬‬
‫ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﺍﺳﺘﻌﻼﻣﺎﺕ ‪ pass_through‬ﰲ ‪ Access 5‬ﻻﺳﺘﻌﺎﺩﺓ ﺍﻟﺴﺠﻼﺕ ﺃﻭ ﺗﻐﻴﲑ ﺍﳌﻌﻄﻴﺎﺕ‪،‬‬
‫ﺃﻭ ﺗﻨﻔﻴﺬ ﺍﻹﺟﺮﺍﺀﺍﺕ ﺍﳌﺨﺰﻧﺔ ﺃﻭ ﺍﻟﻘﻮﺍﺩﺡ ﺍﳌﻮﺟﻮﺩﺓ ﻋﻠﻰ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺃﻭ ﺣﱴ ﺇﻧﺸﺎﺀ‬
‫ﺟﺪﺍﻭﻝ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺍﳌﺨﺪﻡ‪ .‬ﻭﻟﻜﻦ ﳚﺐ ﺃﻥ ﺗﻜﻮﻥ ﺣﺬﺭﹰﺍ ﻛﻲ ﻻ ﺗﻘﻮﻡ ﺑﺈﺟﺮﺍﺀ ﻋﻤﻠﻴﺎﺕ ﻗﺪ‬
‫ﺗﺆﺛﺮ ﻋﻠﻰ ﺣﺎﻟﺔ ﺍﻻﺗﺼﺎﻝ ﳑﺎ ﻳ‪‬ﻌﻄﻲ ﻧﺘﺎﺋﺞ ﻏﲑ ﻣﺘﻮﻗﻌﺔ‪.‬‬
‫ﲤﻜﻨﻚ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﻣﻦ ﺭﺑﻂ ﺟﺪﺍﻭﻝ ﻣﻦ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﻋﻠﻰ ‪ ODBC‬ﻣﻊ ‪ .MS ACCESS‬ﻫﺬﺍ‬
‫ﻳﻌﲏ ﺃﻧﻚ ﻻ ﺗﺴﺘﻄﻴﻊ ﺇﻧﺸﺎﺀ ﳎﻤﻮﻋﺔ ﺳﺠﻼﺕ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻌﺪﻳﻞ ﺑﺎﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﻫﺬﻩ ﺍﳉﺪﺍﻭﻝ‪ ،‬ﻭﻋﻠﻰ‬
‫ﺍﳌﺴﺘﺨﺪﻡ ﺃﻥ ﻳﻜﻮﻥ ﻣﺘﺂﻟﻔﹰﺎ ﻣﻊ ﻟﻐﺔ ‪ SQL‬ﺍﳌﺴﺘﺨﺪﻣﺔ ﻣﻊ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ‪ .ODBC‬ﻭﺑﺎﻟﺘﺎﱄ ﺑﻴﻨﻤﺎ‬
‫ﺳﻴﻜﻮﻥ ﺍﻷﺩﺍﺀ ﺍﻟﺬﻱ ﺳﺘﺤﺼﻞ ﻋﻠﻴﻪ ﺟﻴﺪﹰﺍ ﻭﺳﺘﺴﺘﻔﻴﺪ ﻣﻦ ﳏﺎﺳﻦ ﻗﻮﺓ ﳐﺪﻡ ﺿﺨﻢ ﻟﻘﺎﻋﺪﺓ‬
‫ﻣﻌﻄﻴﺎﺕ‪ ،‬ﻓﺈﻥ ﺍﳌﺴﺘﺨﺪﻡ ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻟﺪﻳﻪ ﻣﻌﺮﻓﺔ ﺑﻠﻐﺔ ‪ SQL‬ﺍﶈﻠﻴﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺍﳌﺨﺪﻡ‪،‬‬
‫ﻭﳚﺐ ﺃﻥ ﳛﻀﺮ ﻭﻳﺄﺧﺬ ﻋﻠﻰ ﻋﺎﺗﻘﻪ ﺍﻟﻜﺜﲑ ﻣﻦ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻴﺪﻭﻳﺔ ﻟﻠﺤﺼﻮﻝ ﻋﻠﻰ ﻛﺎﻣﻞ ﺍﳌﻬﺎﻡ‪.‬‬
‫ﻳﺘﻄﻠﺐ ﺇﻧﺸﺎﺀ ﺍﺳﺘﻌﻼﻡ ‪ pass_through‬ﰲ ‪ MS Access‬ﺇﻋﺪﺍﺩ ﺳﻠﺴﻠﺔ )ﺍﺗﺼﺎﻝ( ﺍﺭﺗﺒﺎﻁ‬
‫)‪ ،(connection string‬ﺇﻣﺎ ﻛﺈﺣﺪﻯ ﺧﺼﺎﺋﺺ ﻫﺬﺍ ﺍﻻﺳﺘﻌﻼﻡ‪ ،‬ﺃﻭ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﺸﻐﻴﻞ ﻫﺬﺍ‬
‫ﺍﻻﺳﺘﻌﻼﻡ‪ .‬ﻳﺒﲔ ﺍﻟﺸﻜﻞ )‪ (9-17‬ﺷﻜﻞ ﺗﻌﻠﻴﻤﺎﺕ ‪ SQL‬ﰲ ‪ oracle‬ﻭﻧﺎﻓﺬﺓ ﺧﺼﺎﺋﺺ ﺍﺳﺘﻌﻼﻡ‬
‫‪ pass_through‬ﰲ ‪ MS Access 2000‬ﺍﻟﱵ ﲢﺘﻮﻱ ﺗﻌﻠﻴﻤﺔ ‪ SQL‬ﺍﳋﺎﺻﺔ ﺑﺄﻭﺭﺍﻛﻞ‪ ،‬ﻣﻦ ﺍﳌﻬﻢ ﺃﻥ‬
‫ﺗ‪‬ﻼﺣﻆ ﺃﻥ ﻛﻞ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻋﻼﺋﻘﻲ‪ ،‬ﻣﺜﻞ ‪ Oracle‬ﺃﻭ ‪ ،Informix‬ﺃﻭ ‪SQL Server‬‬
‫ﺳﻴﻤﺘﻠﻚ ﻗﺎﻋﺪﺓ ﺧﺎﺻﺔ ﻟﺴﻠﺴﻠﺔ ﺍﻻﺗﺼﺎﻝ ‪ ،ODBC‬ﻭﺍﻟﱵ ﳚﺐ ﺇﺿﺎﻓﺘﻬﺎ ﺇﱃ ﻧﺎﻓﺬﺓ ﺍﳋﺼﺎﺋﺺ‪ ،‬ﺃﻭ‬
‫ﲤﺮﻳﺮﻫﺎ ﻋﻨﺪﻣﺎ ﻳﺘﻢ ﺗﺸﻐﻴﻞ ﺍﻻﺳﺘﻌﻼﻡ‪ .‬ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ‪.‬‬
‫ﺇﻥ ﺷﻜﻞ ﺳﻠﺴﻠﺔ ﺍﻻﺗﺼﺎﻝ ﺑﺄﻭﺭﺍﻛﻞ ‪ Oracle‬ﻫﻮ ﺍﻟﺘﺎﱄ‪:‬‬
‫‪ODBC;DSN=ODBC Connection Name;UID=User;PWD=Password;SERVER‬‬
‫;‪=Connection Alias from TnsNames.ora‬‬
‫›>‪a K›f8‬‬ ‫‪560‬‬

‫‪ΓάϓΎϧ ϊϣ MS Access 2000 SQL Pass-through ΔϘϳήτΑ ϡϼόΘγ΍‬‬ ‫‪(9-17) ϞϜθϟ΍‬‬


‫‪ϡϼόΘγϻ΍ κ΋ΎμΧ‬‬

‫› ‪ME¥K%›µ¹›W#›_YODBCMEC?¶›W‬‬

‫›&‪žKE:<&›W K¶WákA MZ‬‬


‫ﻟﻘﺪ ﰎ ﺗﻄﻮﻳﺮ ﻣﻌﻴﺎﺭ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻔﺘﻮﺡ )‪ (ODBC‬ﰲ ﺑﺪﺍﻳﺔ ﺍﻟﺘﺴﻌﻴﻨﺎﺕ ﻣﻦ ﻗﺒﻞ‬
‫ﺍﳉﻤﻌﻴﺘﲔ ‪ X/open‬ﻭ‪ .SQL Access Group‬ﻭﻗﺪ ﻃﺮﺡ ﻫﺬﺍ ﺍﳌﻌﻴﺎﺭ ﻋﺪﺓ ﻣﺴﺘﻮﻳﺎﺕ ﻣﻦ ﺍﻟﻘﻮﺍﻋﺪ‬
‫ﻭﺍﳌﻘﺎﻳﻴﺲ ﺍﻟﱵ ﳚﺐ ﺃﻥ ﳛﻘﻘﻬﺎ ﺃﻱ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻋﻼﺋﻘﻲ‪ ،‬ﻭﻫﺬﺍ ﻣﺎ ﳝﻜﱢﻦ ﺃﻱ ﺑﺮﻧﺎﻣﺞ‬
‫ﺗﻄﺒﻴﻘﻲ ﻣﻦ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻫﺬﻩ ﺍﻟﻨﻈﻢ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻭﺍﺟﻬﺔ ﺑﺮﳎﻴﺔ ﻣﺸﺘﺮﻛﺔ )‪ (API‬ﺧﺎﺻﺔ ﺑﻌﻤﻠﻴﺎﺕ‬
‫ﺍﻟﻮﻟﻮﺝ ﻭﻋﻤﻠﻴﺎﺕ ﺍﳌﻌﺎﳉﺔ‪ ،‬ﻭﻳﻘﺎﻝ ﻋﻦ ﻣﺜﻞ ﻫﺬﻩ ﺍﻟﻨﻈﻢ ﺃ‪‬ﺎ ﺧﺎﺿﻌﺔ ﻟﻠﻤﻌﻴﺎﺭ ‪.ODBC‬‬
‫ﻭﻗﺪ ﺣﺼﻞ ﻫﺬﺍ ﺍﳌﻌﻴﺎﺭ ﻋﻠﻰ ﻗﺒﻮﻝ ﻭﺍﺳﺘﺤﺴﺎﻥ ﻛﺒﲑﻳﻦ‪ ،‬ﻭﻛﺎﻧﺖ ﺷﺮﻛﺔ ‪ Microsoft‬ﺳﺒﺎﻗﺔ ﰲ‬
‫ﺫﻟﻚ‪ ،‬ﻓﻘﺪ ﻗﺎﻣﺖ ﺑﺘﺤﻘﻴﻖ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﰲ ﻣﻨﺘﺠﺎ‪‬ﺎ‪ .‬ﺇﻥ ﻫﺬﺍ ﺍﳌﻌﻴﺎﺭ ﻣ‪‬ﻬﻢ ﺃﻳﻀﹰﺎ ﰲ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﻷﻧﻪ ﻳﺴﻤﺢ ﺑﺘﻄﻮﻳﺮ ﺗﻄﺒﻴﻘﺎﺕ ﳝﻜﻨﻬﺎ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻣﻨﺘﺠﺎﺕ ﳐﺘﻠﻔﺔ ﻟﻘﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﻭﻟﺘﺤﻘﻴﻖ ﻫﺬﻩ ﺍﳌﻘﺪﺭﺍﺕ ﻓﺈﻥ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﺗﺴﺘﺨﺪﻡ ﺗﻌﻠﻴﻤﺎﺕ ﻋﻤﻮﻣﻴﺔ ﻣﻦ ﺗﻌﻠﻴﻤﺎﺕ ﻟﻐﺔ ‪SQL‬‬
‫ﺍﳌﻘﻴﺴﺔ ﲟﻘﻴﺎﺱ ‪) ANSI‬ﺍﳌﻮﺻﻮﻓﺔ ﰲ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﻣﻦ(‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﻻ ﳝﻜﻨﻬﺎ ﺍﻻﺳﺘﻔﺎﺩﺓ ﻣﻦ ﺍﻟﺘﻮﺳﻌﺎﺕ‬
‫ﻭﺍﳌﻤﻴﺰﺍﺕ ﺍﻟﱵ ﻳﻀﻴﻔﻬﺎ ﻛﻞ ﻣﻨﺘﺞ ﶈﺮﻙ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳋﺎﺹ ﺑﻪ‪.‬‬
‫‪561‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻣﻌﻴﺎﺭ ‪ :ODBC‬ﻫﻮ ﻭﺍﺟﻬﺔ ﺑﺮﳎﻴﺔ ﺗﻘﺪﻡ ﻟﻐﺔ ﻣﺸﺘﺮﻛﺔ ﻟﻠﱪﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻴﺔ‪ ،‬ﻣﻦ ﺃﺟﻞ ﻣﻌﺎﳉﺔ ﻗﻮﺍﻋﺪ‬
‫ﻣﻌﻄﻴﺎﺕ ‪ SQL‬ﻭﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻬﺎ ﺑﺸﻜﻞ ﻣﺴﺘﻘﻞ ﻋﻦ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺬﻱ ﰎ ﺍﻟﻮﺻﻮﻝ ﺇﻟﻴﻪ‪.‬‬
‫ﻳﺴﻤﺢ ﺗﻮﺻﻴﻒ ‪ ODBC‬ﻟﻠﻤﺸﻐﻼﺕ )‪ (drivers‬ﺑﺎﻟﻌﻤﻞ ﲟﻮﺟﺐ ﻣﺴﺘﻮﻳﺎﺕ ﻣﺘﻨﻮﻋﺔ ﻣﻦ ﺍﻟﺘﻮﺻﻴﻒ‪،‬‬
‫ﻭﻫﺬﺍ ﻣﺎ ﻳﺆﺛﺮ ﻋﻠﻰ ﺍﳌﺴﺘﻮﻯ ﺍﻟﻮﻇﻴﻔﻲ ﻟﻜﻞ ﻣﺸﻐﻞ‪ .‬ﻛﻤﺎ ﻳﺆﺛﺮ ﺍﻻﺧﺘﻼﻑ ﰲ ﺍﻟﻄﺮﻕ ﺍﻟﱵ ﲤﺖ ﻛﺘﺎﺑﺔ‬
‫ﺍﳌﺸﻐﻼﺕ ‪‬ﺎ ﻋﻠﻰ ﺍﻷﺩﺍﺀ ﺍﳌﻄﻠﻮﺏ ﲢﻘﻴﻘﻪ‪.‬‬
‫ﳚﺐ ﺃﻥ ﻳﻘﻮﻡ ﻛﻞ ﺑﺎﺋﻊ )ﻣﻨﺘﺞ( ﻳﺮﻏﺐ ﺑﺄﻥ ﳝﻠﻚ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﻣﺘﻮﺍﻓﻘﺔ ﻣﻊ ﻣﻌﻴﺎﺭ ‪،ODBC‬‬
‫ﺑﺘﻘﺪﱘ ﻣﺸﻐﻞ ﻣﺘﻮﺍﻓﻖ ﻣﻊ ‪ ODBC‬ﻳ‪‬ﻤﻜﻦ ﺗﺮﻛﻴﺒﻪ ﻋﻠﻰ ﺣﻮﺍﺳﺐ ‪ ،Windows‬ﳑﺎ ﻳﺴﻤﺢ ﻷﻱ ﺗﻄﺒﻴﻖ‬
‫ﻳﻌﻤﻞ ﻋﻠﻰ ﺑﻴﺌﺔ ‪ Windows‬ﺃﻥ ﻳﺘﺼﻞ ﻋﱪ ﺍﳌﺸﻐﻞ ﳌﻨﺎﺳﺐ ﻣﻊ ﺍﻟﻨﺴﺨﺔ ﺍﳌﻄﻠﻮﺑﺔ ﳌﺨﺪﻡ ﻗﺎﻋﺪﺓ‬
‫ﻼ ﻳ‪‬ﻤﻜﻦ ﻟﺘﻄﺒﻴﻖ ‪ MS Access‬ﺃﻥ ﻳﻘﻮﻡ ﺑﺎﻻﺗﺼﺎﻝ ﻟﻴﻌﻤﻞ ﻣﻊ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬ ‫ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻓﻤﺜ ﹰ‬
‫‪ ،Oracle‬ﻓﺠﺪﺍﻭﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺗﺮﺗﺒﻂ ﻣﻊ ﺗﻄﺒﻴﻖ ‪ MS Access‬ﻋﱪ ﻭﺻﻠﺔ ‪ ODBC‬ﻭﺗﺒﻘﻰ ﰲ‬
‫ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ ،Oracle‬ﻭﻻ ﻳﺘﻢ ﺗﻘﻠﻬﺎ ﺇﱃ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ .MS Access‬ﻗﺪ ﺗﺘﻢ ﺍﻹﺷﺎﺭﺓ ﳌﺨﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ Oracle‬ﲟﺨﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻛﻤﺎ ﻳ‪‬ﻤﻜﻦ ﺃﻥ ﻳ‪‬ﺪﻋﻰ ﺃﻳﻀﹰﺎ ﺑﺎﳌﺨﺪﻡ ﺍﻟﺒﻌﻴﺪ ﺃﻭ‬
‫ﳝﻜﻦ ﺃﻥ ﻳ‪‬ﺪﻋﻰ ﳐﺪﻡ ﺧﻠﻔﻲ‪ ،‬ﺃﻭ ﳐﺪﻡ ‪ ،SQL‬ﻛﻤﺎ ﻳﺪﻋﻰ ﺍﳌﺨﺪﻡ ‪ Microsoft‬ﺍﳋﻠﻔﻲ ﲟﺨﺪﻡ ‪،SQL‬‬
‫ﻗﺪ ﺗﻌﲏ ﺍﻹﺷﺎﺭﺓ ﺇﱃ ﳐﺪﻡ ‪ SQL‬ﺇﺷﺎﺭﺓ ﺇﱃ ﳐﺪﻡ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺧﺎﺹ ﺑﺒﺎﺋﻊ ﻣﻌﲔ ﻭﻫﺬﺍ ﻣﺎ ﻗﺪ‬
‫ﻳﺸﻜﻞ ﻣﺼﺪﺭﹰﺍ ﻟﻼﻟﺘﺒﺎﺱ‪.‬‬
‫ﻫﻨﺎﻙ ﲬﺴﺔ ﳏﺪﺩﺍﺕ‪ ،‬ﳚﺐ ﲢﺪﻳﺪ ﻗﻴﻤﻬﺎ )ﺗﻌﺮﻳﻔﻬﺎ( ﻟﺘﺤﻘﻴﻖ ﺍﻻﺗﺼﺎﻝ ﻣﻦ ﳕﻂ ‪:ODBC‬‬
‫ﲢﺪﻳﺪ ﻣﺸﻐﻞ ‪ ODBC‬ﺍﳌﻄﻠﻮﺏ‪.‬‬ ‫‪x‬‬

‫ﲢﺪﻳﺪ ﺍﺳﻢ ﺍﳌﺨﺪﻡ ﺍﳋﻠﻔﻲ ﺍﳌﺮﺍﺩ ﺍﻻﺗﺼﺎﻝ ﻣﻌﻪ‪.‬‬ ‫‪x‬‬

‫ﺍﺳﻢ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺮﺍﺩ ﺍﻻﺗﺼﺎﻝ ﻣﻌﻬﺎ‪.‬‬ ‫‪x‬‬

‫ﻣﻌﺮﻓﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺍﳌﻤﻨﻮﺡ ﺻﻼﺣﻴﺔ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬ ‫‪x‬‬

‫ﻛﻠﻤﺔ ﺍﻟﺴﺮ ﺍﳌﻮﺍﻓﻘﺔ ﳌﻌﺮﻓﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺍﻟﺴﺎﺑﻖ‪.‬‬ ‫‪x‬‬

‫ﻭﻗﺪ ﻳﻜﻮﻥ ﻫﻨﺎﻙ ﻣﻌﻠﻮﻣﺎﺕ ﺇﺿﺎﻓﻴﺔ ﺃﺧﺮﻯ ﳚﺐ ﲢﺪﻳﺪﻫﺎ‪ ،‬ﻣﺜﻞ‪:‬‬


‫ﺍﺳﻢ ﻣﺼﺪﺭ ﺍﳌﻌﻄﻴﺎﺕ )‪.(DSN‬‬ ‫‪x‬‬

‫ﺍﺳﻢ ﺣﺎﺳﺐ ﺍﻟﺰﺑﻮﻥ‪.‬‬ ‫‪x‬‬

‫ﺍﺳﻢ ﺍﻟﱪﻧﺎﻣﺞ ﺍﻟﺘﻄﺒﻴﻘﻲ ﻟﺪﻯ ﺍﻟﺰﺑﻮﻥ‪.‬‬ ‫‪x‬‬


‫›>‪a K›f8‬‬ ‫‪562‬‬

‫ﳝﻜﻦ ﲢﺪﻳﺪ ﻫﺬﻩ ﺍﶈﺪﺩﺍﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺃﻛﺜﺮ ﻣﻦ ﻃﺮﻳﻘﺔ‪ ،‬ﻛﺄﻥ ﻳﺘﻢ ﺗﻀﻤﻴﻨﻬﺎ ﰲ ﺍﻟﱪﻧﺎﻣﺞ ﻧﻔﺴﻪ‪ ،‬ﺃﻭ‬
‫ﲤﺮﻳﺮﻫﺎ ﻋﱪ ﻣﺼﺪﺭ ﺍﳌﻌﻄﻴﺎﺕ )‪ ،(DSN‬ﻭﻗﺪ ﳝﺮﺭﻫﺎ ﺍﳌﺴﺘﺨﺪﻡ ﻋﻨﺪﻣﺎ ‪‬ﻳﻄﻠﺐ ﻣﻨﻪ ﺫﻟﻚ‪ ،‬ﺗﺴﻤﺢ‬
‫ﻋﻤﻠﻴﺔ ﺗﻀﻤﲔ ﻛﻞ ﺍﶈﺪﺩﺍﺕ ﰲ ﺍﻟﱪﻧﺎﻣﺞ ﺑﺄﻥ ﻳﻜﻮﻥ ﻣﻦ ﺍﳌﻤﻜﻦ ﻟﻠﱪﻧﺎﻣﺞ ﺃﻥ ﻳﺘﺼﻞ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ‬
‫ﻣﻊ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺩﻭﻥ ﺍﳊﺎﺟﺔ ﺇﱃ ﺃﻳﺔ ﻋﻤﻠﻴﺎﺕ ﺍﺗﺼﺎﻝ ﺇﺿﺎﻓﻴﺔ‪ .‬ﻭﺑﺎﻟﻄﺒﻊ ﻓﺈﻥ ﺫﻟﻚ ﺳﻴﺘﻄﻠﺐ‬
‫ﺗﻌﺪﻳﻞ ﺍﻟﱪﻧﺎﻣﺞ ﰲ ﺣﺎﻝ ﺭﻏﺒﻨﺎ ﺑﺘﻐﻴﲑ ﻗﻴﻢ ﺍﶈﺪﺩﺍﺕ ﳉﻌﻞ ﺍﻟﱪﻧﺎﻣﺞ ﻳﺘﺼﻞ ﻣﻊ ﳐﺪﻡ ﺃﻭ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ‬
‫ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﺁﺧﺮ‪.‬‬
‫ﻳﺘﻴﺢ ﺗﻀﻤﲔ ﻣﺼﺪﺭ ﺍﳌﻌﻄﻴﺎﺕ )ﺍﻟﺬﻱ ﳛﺘﻮﻱ ﻋﻠﻰ ﺑﻌﺾ ﻗﻴﻢ ﺍﶈﺪﺩﺍﺕ( ﰲ ﺍﻟﱪﻧﺎﻣﺞ‪ ،‬ﳌﺪﻳﺮ ﺍﻟﻨﻈﺎﻡ‬
‫ﺃﻥ ﻳ‪‬ﺤﺪﺩ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻭﻧﻈﺎﻡ ﺇﺩﺍﺭ‪‬ﺎ ﺍﻟﻌﻼﺋﻘﻴﺔ‪ .‬ﺃﻣﺎ ﺍﺳﻢ ﺍﳌﺴﺘﺨﺪﻡ ﻭﻛﻠﻤﺔ ﺍﻟﺴﺮ ﻓﻴﻤﻜﻦ‬
‫ﻟﻠﻤﺴﺘﺨﺪﻡ ﺇﺩﺧﺎﳍﻤﺎ ﻋﻨﺪﻣﺎ ﳛﺎﻭﻝ ﺍﻟﻮﻟﻮﺝ ﺇﱃ ﺍﻟﺘﻄﺒﻴﻖ ﻭﺍﺳﺘﺨﺪﺍﻣﻪ‪ .‬ﻳﺒﲔ ﺍﻟﺸﻜﻞ )‪ (9-18‬ﳐﻄﻄﹰﺎ‬
‫ﻟﺒﻨﻴﺔ ‪ ODBC‬ﺍﻟﻨﻤﻮﺫﺟﻴﺔ‪ .‬ﻳﻘﻮﻡ ﺗﻄﺒﻴﻖ ﺍﻟﺰﺑﻮﻥ ﺑﺈﺭﺳﺎﻝ ﻃﻠﺐ ﺍﺗﺼﺎﻝ ﻣﻊ ﻣﺼﺪﺭ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﰒ ﻳﻘﻮﻡ‬
‫ﻣﺪﻳﺮ ﻣﺸﻐﻞ ‪ Microsoft‬ﲟﻌﺎﳉﺔ ﻫﺬﺍ ﺍﻟﻄﻠﺐ‪ ،‬ﻭﻣﻦ ﰒ ﻳﻘﻮﻡ ﺑﺘﺤﺪﻳﺪ ﻣﺸﻐﻞ ‪ ODBC‬ﺍﳌﻨﺎﺳﺐ‬
‫ﻟﻼﺳﺘﺨﺪﺍﻡ‪ .‬ﻭﳚﺐ ﺃﻻ ﺗﻨﺴﻰ ﺃﻥ ﺍﻟﺒﺎﺋﻌﲔ )ﺍﳌﻨﺘﺠﲔ( ﻣﻦ ﻳﻘﻮﻡ ﺑﺘﻘﺪﱘ ﻫﺬﻩ ﺍﳌﺸﻐﻼﺕ‪ ،‬ﻓﻴﻤﻜﻦ ﺃﻥ‬
‫ﻳﻜﻮﻥ ﺍﳌﺸﻐﻞ ﻫﻮ ﻣﺸﻐﻞ ﳐﺪﻡ ‪ ،SQL‬ﺃﻭ ﻣﺸﻐﻞ ‪ ،Oracle‬ﺃﻭ ﻣﺸﻐﻞ ‪ Informix‬ﺃﻭ‪...‬ﻭﻣﻦ ﻣﻬﺎﻡ‬
‫ﻣﺪﻳﺮ ﺍﳌﺸﻐﻼﺕ ﺃﻳﻀﹰﺎ ‪‬ﻴﺌﺔ ﺍﻟﻄﻠﺒﺎﺕ ﻭﺍﻟﺘﺤﻘﻖ ﻣﻦ ﺻﻼﺣﻴﺔ ﺍﻟﺘﻨﺴﻴﻖ‪ ،‬ﻭﺇﺩﺍﺭﺓ ﻃﻠﺒﺎﺕ ‪ .ODBC‬ﻳﻘﻮﻡ‬
‫ﺍﳌﺸﻐﻞ ﺍﻟﺬﻱ ﰎ ﺍﺧﺘﻴﺎﺭﻩ ﲟﻌﺎﳉﺔ ﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﱵ ﻳﺴﺘﻘﺒﻠﻬﺎ ﻣﻦ ﺍﻟﺰﺑﻮﻥ‪ ،‬ﻭﻣﻦ ﰒ ﻳ‪‬ﺮﺳﻞ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‬
‫ﺇﱃ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﹸﺤﺪﺩ‪ ،‬ﻭﺍﻟﺬﻱ ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﺷﻜﻞ ﻣ‪‬ﻌﲔ ﻟﻠﻐﺔ ‪ ،SQL‬ﺧﺎﺹ ﺑﻪ‪.‬‬
‫ﺗﻌﺘﻤﺪ ﻛﻤﻴﺔ ﺍﳌﻌﺎﳉﺔ ﺍﳌﻄﻠﻮﺑﺔ ﻹﻧﺸﺎﺀ ﺍﻻﺳﺘﻌﻼﻡ ﻋﻠﻰ ﻣﻘﺪﺭﺍﺕ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﻟﻌﻼﺋﻘﻴﺔ ﺍﻟﺬﻱ ﻳﺘﻢ ﺍﻻﺗﺼﺎﻝ ﻣﻌﻪ‪.‬‬

‫‪(ODBC) ΡϮΘϔϤϟ΍ ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϝΎμΗ΍ ΔϴϨΑ‬‬ ‫‪(9-18) ϞϜθϟ΍‬‬


‫‪563‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻳﺘﻢ ﲢﺪﻳﺪ ﻣﺴﺘﻮﻯ ﺍﻟﺘﻮﺍﻓﻖ ﻣﻊ ‪ ODBC‬ﺣﺴﺐ ﺍﳌﻘﺪﺭﺍﺕ ﺍﻟﱵ ﻳﻀﻌﻬﺎ ﺍﻟﺒﺎﺋﻊ )ﺍﳌﻨﺘﺞ( ﰲ ﺍﳌﺸﻐﻞ‬
‫ﺍﳋﺎﺹ ﺑﻪ‪ ،‬ﺣﻴﺚ ﺃﻥ ﻫﻨﺎﻙ ﺛﻼﺛﺔ ﻣﺴﺘﻮﻳﺎﺕ ﻣﻦ ﺍﻟﺘﻮﺍﻓﻖ ﻣﻌﺮﻓﺔ ﻭﻫﻲ‪ :‬ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﺍﻟﺮﺋﻴﺴﻴﺔ )‪ ،(Core API‬ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ )‪ ،(Level-1 API‬ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﱐ )‪ .(Level-2 API‬ﻭﻗﺪ ﰎ ﺗﻌﺮﻳﻒ ﻫﺬﻩ ﺍﳌﺴﺘﻮﻳﺎﺕ ﺍﻟﺜﻼﺛﺔ ﻣﻦ ﻗﺒﻞ‬
‫ﲨﻌﻴﱵ ﺍﳌﻌﺎﻳﲑ ﺍﻟﻠﺘﲔ ﰎ ﺫﻛﺮﳘﺎ ﻗﺒﻞ ﻗﻠﻴﻞ ﰲ ﻫﺬﻩ ﺍﻟﻔﻘﺮﺓ‪ .‬ﺗﻘﺪﻡ ﻣﻌﻈﻢ ﺍﳌﺸﻐﻼﺕ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ‬
‫ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﻟﺮﺋﻴﺴﻴﺔ ﻭﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ‪ ،‬ﻭﺍﻟﱵ ﺗﺘﻀﻤﻦ‪:‬‬
‫ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﻻﺗﺼﺎﻝ ﻣﻊ ﻣﺼﺎﺩﺭ ﺍﳌﻌﻄﻴﺎﺕ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻣﻌﻠﻮﻣﺎﺕ ﺧﺎﺻﺔ ﺑﺎﳌﺸﻐﻞ‪.‬‬ ‫‪x‬‬

‫ﲢﻀﲑ ﻭﺗﻨﻔﻴﺬ ‪.SQL‬‬ ‫‪x‬‬

‫ﺍﺳﺘﺮﺟﺎﻉ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻦ ﳎﻤﻮﻋﺔ ﺍﻟﻨﺘﺎﺋﺞ‪.‬‬ ‫‪x‬‬

‫ﺗﺜﺒﻴﺖ ﺍﳌﻨﺎﻗﻠﺔ )‪ ،(Commit‬ﺃﻭ ﺍﻟﺘﺮﺍﺟﻊ ﻋﻨﻬﺎ )‪.(roll back‬‬ ‫‪x‬‬

‫ﺍﺳﺘﺮﺟﺎﻉ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻷﺧﻄﺎﺀ‪.‬‬ ‫‪x‬‬

‫ﺇﺭﺳﺎﻝ ﻭﺍﺳﺘﻘﺒﺎﻝ ﺍﻟﻨﺘﺎﺋﺞ ﺍﳉﺰﺋﻴﺔ‪.‬‬ ‫‪x‬‬

‫ﺍﺳﺘﺮﺟﺎﻉ ﻣﻌﻠﻮﻣﺎﺕ ﺣﻮﻝ ﺍﳌﺸﻐﻼﺕ‪.‬‬ ‫‪x‬‬

‫ﻫﻨﺎﻙ ﳑﻴﺰﺍﺕ ﲤﻴﺰ ﻣﻘﺪﺭﺍﺕ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﱐ ﺗﺘﻀﻤﻦ‪:‬‬
‫ﺍﻟﻘﺪﺭﺓ ﻋﻠﻰ ﺍﺳﺘﻌﺮﺍﺽ ﻣﺼﺎﺩﺭ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﻻﺗﺼﺎﻻﺕ ﺍﶈﺘﻤﻠﺔ‪.‬‬ ‫‪x‬‬

‫ﺍﺳﺘﻌﺎﺩﺓ ﺷﻴﻔﺮﺓ ‪ SQL‬ﺍﳋﺎﺻﺔ ﺑﺎﳌﺨﺪﻡ ﺍﳋﻠﻔﻲ‪.‬‬ ‫‪x‬‬

‫ﺍﺳﺘﺪﻋﺎﺀ ﻣﻜﺘﺒﺔ ﺍﻟﺘﺮﲨﺔ‪.‬‬ ‫‪x‬‬

‫ﻣﻌﺎﳉﺔ ﻭﻋﺮﺽ ﻣﺆﺷﺮ ﻗﺎﺑﻞ ﻟﻠﺘﻤﺮﻳﺮ )ﻟﻠﺘﺪﺭﺝ( ‪.scrollable‬‬ ‫‪x‬‬

‫ﺗ‪‬ﺤﺪﺩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺬﻱ ﺗﺪﻋﻤﻪ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﺘﺎﺣﺔ‪ ،‬ﻋﻨﺪﻣﺎ ﺗﻘﻮﻡ ﺑﺎﺳﺘﺪﻋﺎﺀ‬
‫ﺍﳌﺸﻐﻞ ﺇﺫﺍ ﻛﺎﻥ ﺍﳌﺴﺘﻮﻯ ﺍﳌﻄﻠﻮﺏ ﻫﻮ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ‪ API‬ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﱐ‪ ،‬ﻭﻛﺎﻥ‬
‫ﺍﻟﺘﻄﺒﻴﻖ ﻳﺪﻋﻢ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ‪ API‬ﻣﻦ ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ ﻓﻘﻂ‪ ،‬ﻋﻨﺪﺋ ِﺬ ﻓﺈﻥ ﺍﻟﺘﻨﻔﻴﺬ ﺳﻴﺘﻮﻗﻒ‬
‫ﺑﺄﺳﻠﻮﺏ ﻣﻀﺒﻮﻁ ﻭﻟﺬﻟﻚ ﻓﺈﻧﻪ ﻟﻦ ﳛﺪﺙ ﲣﺮﻳﺐ ﻟﻠﻤﻌﻄﻴﺎﺕ‪ .‬ﺗ‪‬ﻜﺘﺐ ﺑﻌﺾ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﻟﺘﻌﻤﻞ ﺇﻣﺎ‬
‫ﰲ ﺍﳌﺴﺘﻮﻯ ﺍﻷﻭﻝ ﺃﻭ ﺍﳌﺴﺘﻮﻯ ﺍﻟﺜﺎﱐ‪ ،‬ﻭﺫﻟﻚ ﺣﺴﺐ ﻣﻘﺪﺭﺍﺕ ﺍﳌﺸﻐﻞ ﺍﻟﺘﺎﺑﻊ ﻟﻨﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺴﺘﺨﺪﻡ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪564‬‬

‫› ‪MZ&›ME¥K%›µ¹›W#›_YJDBC¶›W‬‬

‫ ‪žKE:<&›W K¶WákA‬‬
‫‪SQL‬‬ ‫ﺑﺘﻨﻔﻴﺬ ﺗﻌﻠﻴﻤﺎﺕ‬ ‫‪Java‬‬ ‫ﻟﱪﺍﻣﺞ‬ ‫‪Java‬‬ ‫ﺗﺴﻤﺢ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺗﻄﺒﻴﻘﺎﺕ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬
‫ﻭﺍﻻﺗﺼﺎﻝ ﻣﻊ ﳐﺪﻣﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺇﻥ ﺗﻘﻨﻴﺔ ‪ JDBC‬ﺗﺸﺒﻪ ﻛﺜﲑﹰﺍ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﺇﻻ ﺃ‪‬ﺎ ﺻ‪‬ﻤﻤﺖ ﻟﺘﻌﻤﻞ ﺑﺸﻜﻞ ﺧﺎﺹ ﻣﻊ ﺗﻄﺒﻴﻘﺎﺕ‬
‫‪ Java‬ﻓﻘﻂ‪ .‬ﺇﻥ ﺗﻘﻨﻴﺔ ‪ ODBC‬ﻣﺴﺘﻘﻠﺔ ﻋﻦ ﻟﻐﺔ ﺍﻟﱪﳎﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ‪.‬‬
‫ﺗﻌﺘﱪ ‪ Java‬ﺟﻴﺪ ﹰﺓ ﻣﻦ ﺃﺟﻞ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻷ‪‬ﺎ ﺷﺒﻜﻴﺔ ﺍﻟﺘﻮﺟﻪ‪ ،‬ﻭﻗﻮﻳﺔ ﻣﻦ ﺣﻴﺚ ﺁﻟﻴﺎﺕ‬
‫ﺍﻷﻣﻦ‪ .‬ﻟﻘﺪ ﺍﺭﺗﺒﻂ ﺃﻭﺭﺍﻛﻞ ﺑﻠﻐﺔ ‪ Java‬ﺣﱴ ﰎ ﺍﻻﻋﺘﻘﺎﺩ ﺃﻥ ﻟﻐﺔ ‪ Java‬ﺳﺘﺄﺧﺬ ﻣﻜﺎﻥ ‪PL/SQL‬‬
‫ﺍﳋﺎﺻﺔ ﺑﺄﻭﺭﺍﻛﻞ ﻣﻦ ﺃﺟﻞ ﺇﺿﺎﻓﺔ ﺑﻌﺾ ﺍﳋﺪﻣﺎﺕ ﺍﻟﱪﳎﻴﺔ ﺍﻹﺿﺎﻓﻴﺔ ﺇﱃ ‪ SQL‬ﺪﻑ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺇﻥ ﻣﻌﻴﺎﺭ ‪) JDBC‬ﻣﺸﺎﺑﻪ ﺑﺎﳌﻔﻬﻮﻡ( ﳌﻌﻴﺎﺭ ‪ ODBC‬ﺍﳋﺎﺹ ﺑﺸﺮﻛﺔ ‪ ،Microsoft‬ﺍﻋﺘﻤﺎﺩﹰﺍ ﻋﻠﻰ‬
‫ﻭﺍﺟﻬﺔ ﻣﺴﺘﻮﻯ ﺍﻻﺳﺘﺪﻋﺎﺀﺍﺕ ﺍﳋﺎﺻﺔ ﺑـ ‪ ،X/Open SQL‬ﻓﺈﻥ ﺗﻘﻨﻴﺔ ‪ JDBC‬ﺗﺘﺄﻟﻒ ﻣﻦ ﻃﺒﻘﺘﲔ‬
‫ﺭﺋﻴﺴﻴﺘﲔ ﺍﻟﻄﺒﻘﺔ ﺍﻷﻭﱃ ﻫﻲ ‪ JDBC API‬ﺗﺪﻋﻢ ﻋﻤﻠﻴﺎﺕ ﺍﻻﺗﺼﺎﻝ ﺗﻄﺒﻴﻘﺎﺕ ‪ Java‬ﻭﻣﺪﻳﺮ ‪JDBC‬‬
‫ﻟﻠﻤﺸﻐﻼﺕ‪ .‬ﺃﻣﺎ ﺍﻟﻄﺒﻘﺔ ﺍﻟﺜﺎﻧﻴﺔ ﻓﻬﻲ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﺸﻐﻼﺕ ‪ JDBC‬ﻭﺗﺪﻋﻢ ﺍﻻﺗﺼﺎﻝ ﻣﻊ‬
‫ﻣﺸﻐﻼﺕ ‪ JDBC‬ﻭﻣﺸﻐﻼﺕ ﺍﻟﺸﺒﻜﺔ ﻭﻣﺸﻐﻼﺕ ‪.ODBC‬‬
‫ﻳﺘﻀﻤﻦ ﺍﻟﺸﻜﻞ )‪ (9-19‬ﻣﺜﺎ ﹰﻻ ﺑﺴﻴﻄﹰﺎ ﻟﻠﺸﻴﻔﺮﺓ ﺍﻟﻼﺯﻣﺔ ﻻﺳﺘﺨﺪﺍﻡ ‪ JDBC‬ﻣﻦ ﺃﺟﻞ ﲢﻘﻴﻖ ﺍﻻﺗﺼﺎﻝ‬
‫ﻭﻋﻤﻠﻴﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺘﻮﺍﻓﻘﺔ ﻣﻊ ‪ ،JDBC‬ﻻﺣﻆ ﺃﻥ ﺍﻟﺸﻴﻔﺮﺓ ﻗﺪ ﻭﺯﻋﺖ ﻋﻠﻰ‬
‫ﺃﺭﺑﻌﺔ ﺻﻨﺎﺩﻳﻖ ﻟﻠﺘﺄﻛﻴﺪ ﻋﻠﻰ ﺍﳌﻬﺎﻡ ﺍﳌﺨﺘﻠﻔﺔ ﺍﻟﱵ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ‪.‬‬
‫ﺃﻭ ﹰﻻ ﻳﺘﻢ ﺍﺳﺘﺮﺩﺍﺩ ﺗﺴﻌﺔ ﺣﺰﻡ ﻣﺴﺒﻘﺔ ﺍﻟﺘﻌﺮﻳﻒ ﰲ ‪ .Java‬ﳚﺐ ﺃﻥ ﻳﻘﺪﻡ ﻛﻞ ﻣﺸﻐﻞ ﺻﻨﻔﹰﺎ ﳛﻘﻖ ﺍﻟﺼﻔﻮﻑ‬
‫ﺍﻻﻓﺘﺮﺍﺿﻴﺔ )ﺍﻟﻮﳘﻴﺔ( ﻣﺜﻞ ‪java.sql.PreparedStatement ،java.sql.Statement ،java.sql.Connection‬‬
‫ﻭ‪ .java.sql.CallableStatement‬ﺗﻮﺻﻒ ﻫﺬﻩ ﺍﻟﺼﻔﻮﻑ ﺍﻟﻮﳘﻴﺔ ﻭﺍﺟﻬﺔ ﺑﺮﳎﺔ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ ،‬ﻟﻜﻦ ﳚﺐ‬
‫ﺃﻥ ﺗﻜﻮﻥ ﳏﺪﺩﺓ ﻟﻜﻞ ﳏﺮﻙ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﰎ ﺍﺗﺼﺎﻟﻪ‪.‬‬
‫ﻳﻘﻮﻡ ﺍﳌﺜﺎﻝ ﺍﳌﻮﺿﺢ ﰲ ﺍﻟﺸﻜﻞ )‪ (9-19‬ﺍﻻﺗﺼﺎﻝ ﺑﻘﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ‪ ،Oracle‬ﺣﻴﺚ ﳛﺘﻮﻱ ﺻﻨﺪﻭﻕ‬
‫ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﺘﺎﱄ ﻣﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺑﻨﻴﺔ ﺑﺴﻴﻄﺔ ﺟﺪﹰﺍ ﻟﻠﺠﺪﻭﻝ ﺍﳌﺴﺘﺨﺪﻡ ﰲ ﺍﳌﺜﺎﻝ‪ ،‬ﻭﻋﻦ ﺗﺴﻠﺴﻞ‬
‫)‪ (Sequence‬ﺍﳌﻔﺘﺎﺡ ﺍﻷﺳﺎﺳﻲ‪ ،‬ﻭﺍﻟﻘﻮﺍﺩﺡ ﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﺗ‪‬ﺴﺘﺨﺪﻡ ﻹﺩﺧﺎﻝ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻟﻠﻤﻔﺘﺎﺡ‬
‫ﺍﻷﺳﺎﺳﻲ‪ .‬ﻟﻴﺲ ﻣﻦ ﺍﻟﻀﺮﻭﺭﻱ ﺃﻥ ﺗﻔﻬﻢ ﺍﻟﺸﻴﻔﺮﺓ ﺍﳋﺎﺻﺔ ﺑﺎﳌﺸﻐﻞ ﻭﳕﻂ ﻫﺬﺍ ﺍﳌﺸﻐﻞ ﻭﺳﻠﺴﺔ‬
565 ·j¦…¶WážKE:<W ›jME9

‫ ﺃﻣﺎ ﺃﻛﱪ ﺻﻨﺪﻭﻕ ﻓﻴﺤﺘﻮﻱ ﻋﻠﻰ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﱵ ﺗﻌﺮﺽ ﻛﻴﻔﻴﺔ ﲢﻘﻴﻖ ﺍﻻﺗﺼﺎﻝ‬.(‫ﺍﻻﺗﺼﺎﻝ )ﺍﻻﺭﺗﺒﺎﻁ‬
‫ )ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻄﺮﻳﻘﺔ‬.(temp_demo) ‫ ﻭﺇﺩﺧﺎﻝ ﺍﻟﻘﻴﻢ ﺍﳌﻤﺮﺭﺓ ﺇﱃ ﺍﳉﺪﻭﻝ‬، ‫ﻣﻊ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‬
.((buildConnection) ‫ﺍﳌﹸﺴﻤﺎﺓ‬
//package.corn.iteamsolutions.eis.tools.sql.sample; Predefined Java packages
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.Driver;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjava.sql.SQLException;
importjava.sql.Types;
/**
*This class is intended as a simple demonstration of how to use JDBC
*to access a JDBC compliant Database.
Oracle table structure and primary key sequence and trigger

*The database structure listed below will be used for all examples: <br>
*<pre>
*
TABLE temp_demo
*Name Null? Type
*
*ID NOT NULL NUMBER
*NAME VARCHAR2(20)
*
*Sequence used to populate the primary key
*SEQUENCE temp_demo_seq
*
*—Trigger used to populate the primary key
*
*CREATE OR REPLACE TRIGGER temp_demo_trig_
*BEFORE INSERT ON temp_demo
*FOR EACHROW
*BEGIN
*-This will allow the key to be autopopulated
*-could be retrieved using the RETURNING
*-clause of the INSERT statement
*-IF(:NEW.id IS NULL)
*THEN
* SELECT temp_demo_seq.nextval
* INTO :NEW.id
* FROM dual;
*END IF;
*END;
*</pre>
*<br>
a K›f8>› 566

Initialization
public class OracleSqlTest
{
/**constant used for retrieving the id column of the temp_demo table*/
public static final String ID="id";
/**constant used for retrieving the name column of the temp_demo table*/
public static final String NAME="name";
/**name of the database account*/
private String NAME = "use/name";
/**the password for the user*/
private String m_password="userpassword",
/**the Driver class to use for connecting to the database*/
private String m_driver="oracle.jdbc.driver.OracleDriver";
/**the type of driver to use*/
private String m_drivertype="jdbc:oracle:thin:@";
/**the database to connect to*/
private String m_database="se/vema/7?e:1521:databasename";
/**insert a new record into the temp_demo*/
private String m_insert="INSERT INTO temp_demo (id, name) values (?,?)"
/**insert a new record into the temp_demo*/
private String m_insertReturning="BEGIN\n"+
"INSERT INTO temp_demo(name) values (?)\n"+
"RETURNING id INTO ?;\n"+
"END;";
/**the connection being used by this class to do all work*/
private Connection m_conn=null;
/**
Default constructor-could be modified to supply the above values
*or to pull them from a properties file.
*
*@throws Exception-any failure is a terminal condition
*/
public OracleSqlTest()
throws Exception
{
m_conn=buildConnection();

}
/**
*inserts the passed values into the temp_demo table
*
*@param id-number to be used as the primary key in the record
*@param name-Name to be stored in the name column
*/
public void insert(int id, String name)
throws SCSI-Exception
{
PreparedStatement stmt=null;
Try
{
//build a preparedStatement-this will allow values to
//be substituted for the "?" in the String passed
stmt=m_conn.prepareStatement(m_insert);
//bind the value to the argument (?)
//the first argument is the position of the? to replace.
//The position count begins from 1
567 ·j¦…¶WážKE:<W ›jME9

stmt.setlnt(1,id);
stmt.setString(2,name);
//exec the statement
stmt.execute();
}
catch (SQLException e)
{
throw e;
}
finally
{
//make sure that all resources are released
//if this is not done then eventually an exception
//will be thrown by the database because too many
//cursors are open
if(stmt!=null)
stmt,close();
}
}

Build connection object for Oracle db access


/**
*takes care of building the connection object for access to the Oracle database;
*/
private Connection buildConnection()
throws SQLException
{
//need to make sure the driver for the database is loaded
//any exception thrown is caught and a SQLException is thrown to
//caught by the client.
try
{
DriverManager.registerDriver
((Driver) Class.forName(m_driver).newlnstance());
}
catch (InstantiationException e)
{
throw new SQLException("Unable to instantiate the Oracle Driver");
}
catch (lllegalAccessException e)
{
throw new SQLException("lllegalAccessException thrown when attempting to
load the Oracle Driver class");
}
catch (ClassNotFoundException e)
{
throw new SQLException("Oracle Driver class not found");
}
//if all went well the driver has been registered, so now return a Connection
return (DriverManager.getConnection (m_drivertype+m_database,
m_username,
m_password));
}

JDBC ΕΎϴτόϣ ΓΪϋΎϗ ϰϟ· ϝϮλϮϠϟ JDBC ϡ΍ΪΨΘγ΍ (9-19) ϞϜθϟ΍


‫›>‪a K›f8‬‬ ‫‪568‬‬

‫ﳛﺘﻮﻱ ﺍﻟﺼﻨﺪﻭﻕ ﺍﻷﺧﲑ ﻋﻠﻰ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻼﺯﻣﺔ ﻟﺒﻨﺎﺀ ﻏﺮﺽ ﺍﻻﺗﺼﺎﻝ‪ ،‬ﺪﻑ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﺎﻋﺪﺓ‬
‫ﻣﻌﻄﻴﺎﺕ ‪ ،Oracle‬ﲟﺎ ﰲ ﺫﻟﻚ ﺭﺳﺎﺋﻞ ﺍﳋﻄﺄ ﺍﻟﱵ ﺗ‪‬ﻌﺮﺽ ﺇﺫﺍ ﻓﺸﻞ ﺍﻻﺗﺼﺎﻝ ﻟﺴﺒﺐ ﺃﻭ ﻵﺧﺮ‪ .‬ﻫﺬﺍ‬
‫ﺍﳌﺜﺎﻝ ﻣﻮﺟﻮﺩ ﺑﺸﻜﻞ ﻛﺎﻣﻞ ﻋﻠﻰ ﺍﳌﻮﻗﻊ ﺍﻹﻟﻜﺘﺮﻭﱐ ﳍﺬﺍ ﺍﻟﻜﺘﺎﺏ‪ .‬ﻭﳛﺘﻮﻱ ﺍﳌﻮﻗﻊ ﺃﻳﻀﹰﺎ ﻋﻠﻰ ﻃﺮﻳﻘﺔ‬
‫ﺃﺧﺮﻯ ﻣﻦ ﺃﺟﻞ ﺇﺿﺎﻓﺔ ﻗﻴﻤﺔ ﺍﳌﻔﺘﺎﺡ ﺍﻷﺳﺎﺳﻲ‪ ،‬ﻭﻻ ﻳﺘﻀﻤﻦ ﺷﻴﻔﺮﺓ ﺇﻧﺸﺎﺀ ﺍﻟﺴﺠﻞ ﺍﳉﺪﻳﺪ ﻓﺤﺴﺐ‪،‬‬
‫ﻭﺇﳕﺎ ﻳﺘﻀﻤﻦ ﺷﻴﻔﺮﺓ ﻣﻦ ﺃﺟﻞ ﺗﻌﺪﻳﻞ ﻭﺣﺬﻑ ﺍﻟﺴﺠﻼﺕ‪.‬‬

‫› ‪(VBA)ME?E:›eEµ›jEM=¶›W‬‬

‫‪·jZ›žK?E:ë‬‬
‫ﻳﺴﻤﺢ ‪ Access 2000‬ﻟﻠﻤﺴﺘﺨﺪﻡ ﺍﳌﺒﺘﺪﺉ ﺑﺈﻧﺸﺎﺀ ﳕﺎﺫﺝ ﺃﻭﻟﻴﺔ ﻟﻠﺘﻄﺒﻴﻘﺎﺕ‪ ،‬ﲟﺎ ﻓﻴﻬﺎ ﺗﺼﻤﻴﻢ ﻗﻮﺍﻋﺪ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﺗﺼﻤﻴﻢ ﺍﻟﻘﻮﺍﺋﻢ‪ ،‬ﺗﺼﻤﻴﻢ ﺍﻟﻨﻤﺎﺫﺝ‪ ،‬ﺗﺼﻤﻴﻢ ﺍﻟﺘﻘﺎﺭﻳﺮ‪ ،‬ﻭﺫﻟﻚ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻭﺣﺪﺍﺕ ﻣﺎﻛﺮﻭ‬
‫ﻣﺴﺒﻘﺔ ﺍﻟﺘﻌﺮﻳﻒ ﰲ ‪ ،Access 2000‬ﻭﻟﻜﻦ ﻳﻮﺟﺪ ﺣﺪ ﳌﺎ ﳝﻜﻦ ﲢﻘﻴﻘﻪ ﺑﺎﺳﺘﺨﺪﺍﻡ ﻫﺬﻩ ﺍﻟﻮﺣﺪﺍﺕ‬
‫ﺍﳌﺎﻛﺮﻭﻳﺔ‪ ،‬ﻭﳚﺪ ﺍﳌﻄﻮﺭﻭﻥ ﺻﻌﻮﺑﺔ ﻋﻨﺪﻣﺎ ﳛﺎﻭﻟﻮﻥ ﲢﻘﻴﻖ ﲨﻴﻊ ﺍﳌﻬﺎﻡ ﻭﺍﻟﻘﺪﺭﺍﺕ ﺍﳌﻄﻠﻮﺑﺔ‪ .‬ﲢﺘﺎﺝ‬
‫ﺑﻴﻨﻤﺎ ﺑﻌﺾ ﺍﻟﻘﺪﺭﺍﺕ ﺇﱃ ﺍﻟﻮﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭﻳﺔ ﻭﻻ ﳝﻜﻦ ﲢﻘﻴﻘﻬﺎ ﻣﻦ ﺧﻼﻝ ﻓﻴﺠﻮﺍﻝ ﺑﻴﺴﻚ‬
‫ﺍﻟﺘﻄﺒﻴﻘﻴﺔ )‪ ،(VBA‬ﻓﺈﻧﻪ ﻣﺎﺯﺍﻝ ﻫﻨﺎﻙ ﺍﻟﻜﺜﲑ ﻣﻦ ﺍﻟﻘﺪﺭﺍﺕ ﺍﻟﱵ ﳝﻜﻦ ﲢﻘﻴﻘﻬﺎ ﺃﻭ ﲢﺴﻴﻨﻬﺎ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫‪ VBA‬ﺑﺎﻟﺘﻌﺎﻭﻥ ﻣﻊ ‪ .Access 2000‬ﻭﻓﻴﻤﺎ ﻳﻠﻲ ﺑﻌﺾ ﺍﻷﺳﺒﺎﺏ ﺍﻟﱵ ﺗﺪﻓﻊ ﻣﺴﺘﺨﺪﻡ ‪ Access 2000‬ﻟﺘﻌﻠﻢ‬
‫‪ VBA‬ﺑﻌﺪ ﺃﻥ ﻳﻜﻮﻥ ﻗﺪ ﺃﺻﺒﺢ ﻣﺘﺂﻟﻔﹰﺎ ﻣﻊ ‪ Access 2000‬ﺣﺴﺐ ‪:Smith and Sussman 1997‬‬
‫ﻻ ﳝﻜﻦ ﲢﻘﻴﻖ ﺑﻌﺾ ﺍﳌﻬﺎﻡ ﺍﳌﻌﻘﺪﺓ ﺇﻻ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪ ،VBA‬ﻣﺜﻞ ﺇﻇﻬﺎﺭ ﺭﺳﺎﺋﻞ ﺍﳋﻄﺄ ﺍﳋﺎﺻﺔ‬ ‫‪x‬‬
‫ﺑﻚ‪ ،‬ﺟﻌﻞ ﺍﻷﺯﺭﺍﺭ ﻏﲑ ﻣﻔﻌﻠﺔ ﻋﻨﺪﻣﺎ ﻻ ﻳﺘﻮﺟﺐ ﺍﻟﻀﻐﻂ ﻋﻠﻴﻬﺎ‪ ،....‬ﻣﺜﻞ ﻫﺬﻩ ﺍﳌﻬﺎﻡ ﲢﺘﺎﺝ‬
‫ﺇﱃ ﺷﻴﻔﺮﺓ ‪.VBA‬‬
‫ﻻ ﳝﻜﻦ ﲢﻘﻴﻖ ﻋﻤﻠﻴﺎﺕ ﻣﻌﺎﳉﺔ ﺍﻷﺧﻄﺎﺀ ﺇﻻ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪ ،VBA‬ﺇﻥ ﺍﻻﻋﺘﻤﺎﺩ ﻋﻠﻰ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ‬ ‫‪x‬‬
‫ﰲ ﺍﻟﺘﻄﺒﻴﻖ ﺍﻟﻨﻬﺎﺋﻲ ﺧﻄﺮ ﻷﻧﻪ ﻻ ﺗﻮﺟﺪ ﻃﺮﻳﻘﺔ ﻟﻺﺻﻼﺡ ﺇﺫﺍ ﺗﻌﻄﻠﺖ ﻫﺬﻩ ﺍﻟﻮﺣﺪﺍﺕ ﻟﺴﺒﺐ ﻣﺎ‪.‬‬
‫ﳝﻜﻦ ﲢﻘﻴﻖ ﺳﺮﻋﺔ ﺍﻟﺘﻨﻔﻴﺬ ﻋﻨﺪ ﺍﺳﺘﺨﺪﺍﻡ ﻭﺣﺪﺍﺕ ‪ VBA‬ﺑﺪ ﹰﻻ ﻣﻦ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ‪ .‬ﺇﻥ ﺗﻨﻔﻴﺬ‬ ‫‪x‬‬
‫ﺍﻟﺸﻴﻔﺮﺓ ﺃﺳﺮﻉ ﻣﻦ ﺗﻨﻔﻴﺬ ﺍﳌﺎﻛﺮﻭ‪ ،‬ﻭﻫﺬﻩ ﺍﻟﻔﺎﺋﺪﺓ ﺳﺘﻜﻮﻥ ﺃﻛﺜﺮ ﻇﻬﻮﺭﹰﺍ ﻛﻠﻤﺎ ﻛﱪ ﻭﺗﻌﻘﺪ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬
‫ﺗﺼﺒﺢ ﻋﻤﻠﻴﺔ ﺍﻟﺼﻴﺎﻧﺔ ﺃﻛﺜﺮ ﺳﻬﻮﻟﺔ‪ ،‬ﻷﻥ ﻭﺣﺪﺍﺕ ‪ VBA‬ﺗ‪‬ﺨﺰﻥ ﻣﻊ ﺍﻟﻨﻤﺎﺫﺝ ﻭﺍﻟﺘﻘﺎﺭﻳﺮ‪ ،‬ﺃﻣﺎ‬ ‫‪x‬‬
‫ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ ﻓﻴﺘﻢ ﲣﺰﻳﻨﻬﺎ ﺑﺸﻜﻞ ﻣﻨﻔﺼﻞ ﻋﻦ ﺍﻟﻨﻤﺎﺫﺝ ﻭﺍﻟﺘﻘﺎﺭﻳﺮ ﺍﳌﺮﺗﺒﻄﺔ ‪‬ﺎ‪ .‬ﻛﻤﺎ ﺃﻥ‬
‫ﻧﻘﻞ ﺍﻟﺘﻄﺒﻴﻖ ﺇﱃ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺃﹸﺧﺮﻯ ﺳﻴﻜﻮﻥ ﺃﺳﻬﻞ ﻷﻥ ﻭﺣﺪﺍﺕ ‪ VBA‬ﺳﺘﻨﻘﻞ ﻣﻊ‬
‫ﺍﻟﻨﻤﺎﺫﺝ ﻭﺍﻟﺘﻘﺎﺭﻳﺮ ﺍﳌﺮﺗﺒﻄﺔ ‪‬ﺎ ﻭﺫﻟﻚ ﻷ‪‬ﺎ ﳐﺰﻧﺔ ﻣﻊ ﻭﺣﺪﺍ‪‬ﺎ‪.‬‬
‫‪569‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﳝﻜﻦ ﺍﺳﺘﺨﺪﺍﻡ ﻋﻤﻠﻴﺎﺕ ﺇﺩﺍﺭﺓ ﺭﺑﻂ ﻭﺗﻀﻤﲔ ﺍﻟﻜﺎﺋﻨﺎﺕ )‪ (OLE‬ﺑﺸﻜﻞ ﺃﻛﺜﺮ ﺍﻛﺘﻤﺎ ﹰﻻ‪.‬‬ ‫‪x‬‬

‫ﻗﺪﺭﺓ ﺃﻛﱪ ﻋﻠﻰ ﺍﻟﺘﺤﻜﻢ ﺍﻟﱪﳎﻲ ﺑﺎﺳﺘﺨﺪﺍﻡ ‪ .VBA‬ﻷﻧﻪ ﻻ ﳝﻜﻦ ﻟﻠﻤﺎﻛﺮﻭ ﺃﻥ ﻳﻌﺘﱪ ﺍﳌﺘﻐﲑﺍﺕ‬ ‫‪x‬‬
‫ﻛﺒﺎﺭﻣﺘﺮﺍﺕ ﳌﺘﺤﻮﻝ ﺁﺧﺮ‪ ،‬ﻭﻻ ﳝﻜﻦ ﺍﻟﺘﺤﻜﻢ ﺑﺴﻬﻮﻟﺔ ﺑﺘﺴﻠﺴﻞ ﺍﻷﺣﺪﺍﺙ‪.‬‬
‫ﻗﺮﺍﺀﺓ ﺷﻴﻔﺮﺓ ‪ VBA‬ﺃﺳﻬﻞ ﻣﻦ ﻗﺮﺍﺀﺓ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ‪ ،‬ﻷﻧﻪ ﳝﻜﻨﻚ ﺭﺅﻳﺔ ﺍﻟﻮﺣﺪﺓ ﻛﺎﻣﻠﺔ‬ ‫‪x‬‬
‫ﻭﺗﻜﻮﻥ ﺍﻟﺸﻴﻔﺮﺓ ﺍﻟﻨﺼﻴﺔ ﻣﻠﻮﻧﺔ‪.‬‬
‫ﳚﺐ ﺇﻧﺸﺎﺀ ﻭﺣﺪﺓ ﻣﺎﻛﺮﻭ ﺗﻠﻘﺎﺋﻴﺔ ﺍﻟﺘﻨﻔﻴﺬ ﻣﻦ ﺃﺟﻞ ﻓﺘﺢ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﳚﺐ ﺍﺳﺘﺨﺪﺍﻡ ﳎﻤﻮﻋﺔ‬
‫ﻭﺣﺪﺍﺕ ﻣﺎﻛﺮﻭ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﻘﺎﻁ ﻋﻤﻠﻴﺎﺕ ﺍﻟﻨﻘﺮ ﻋﻠﻰ ﺍﳌﻔﺎﺗﻴﺢ ﰲ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ‪ .‬ﻭﺍﻷﻫﻢ ﻣﻦ ﺫﻟﻚ‪،‬‬
‫ﳚﺐ ﲢﻮﻳﻞ ﺍﻟﻨﻤﻮﺫﺝ ﺍﻷﻭﱄ ﻟﻠﺘﻄﺒﻴﻖ ﺍﳌﻨﺸﺄ ﺑﻮﺍﺳﻄﺔ ﻭﺣﺪﺍﺕ ﺍﳌﺎﻛﺮﻭ ﺇﱃ ﻭﺣﺪﺍﺕ ‪ VBA‬ﻟﺘﺼﺒﺢ‬
‫ﺍﻟﻨﺴﺨﺔ ﺍﳌﻮﺯﻋﺔ ﻟﻠﺘﻄﺒﻴﻖ ﲝﺎﻟﺔ ﻳﻜﻮﻥ ﻓﻴﻬﺎ ﺍﻟﺘﻄﺒﻴﻖ ﻗﻮﻱ ﻭﻣﺴﺘﻘﺮ ﻣﻊ ﺍﳌﺰﻳﺪ ﻣﻦ ﺍﳌﻘﺪﺭﺍﺕ‪.‬‬
‫ﺇﻥ ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ‪ Windows‬ﻭﻛﺎﻣﻞ ﺗﻄﺒﻴﻘﺎﺗﻪ ﻣﻘﻮﺩﺓ ﺑﺎﻷﺣﺪﺍﺙ‪ .‬ﻓﻜﻞ ﺷﻲﺀ ﳛﺪﺙ ﰲ ﺗﻄﺒﻴﻖ‬
‫‪ Access 2000‬ﻫﻮ ﻋﺒﺎﺭﺓ ﻋﻦ ﺍﺳﺘﺠﺎﺑﺔ ﳊﺪﺙ ﻣﺎ ﻣﺜﻞ ﺣﺪﺙ ﺍﻟﻀﻐﻂ ﻋﻠﻰ ﺍﻟﻔﺄﺭﺓ ﺍﻟﺬﻱ ﳝﻜﻦ ﺃﻥ‬
‫ﻳﻠﺘﻘﻄﻪ ‪ .Access 2000‬ﺃﻭ ﹰﻻ ﳛﺪﺙ ﺣﺪﺙ ﻣﺎ‪ ،‬ﰒ ﻳﺘﻢ ﺍﻟﺘﻘﺎﻃﻪ ﰒ ﺗﻮﻟﻴﺪ ﺍﻻﺳﺘﺠﺎﺑﺔ ﺍﳌﻨﺎﺳﺒﺔ ﳍﺬﺍ‬
‫ﺍﳊﺪﺙ‪ .‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺈﻥ ‪ Access 2000‬ﻟﻴﺲ ﺇﺟﺮﺍﺋﻲ‪ .‬ﳝﻜﻦ ﺃﻥ ﻳﺄﰐ ﺍﳊﺪﺙ ﺍﻟﺘﺎﱄ ﻣﻦ ﺃﻱ ﻣﻜﺎﻥ ﻋﻠﻰ‬
‫ﻭﺍﺟﻬﺔ ﺍﻟﱪﻧﺎﻣﺞ ﺃﻭ ﻣﻦ ﺃﻱ ﻣﻔﺘﺎﺡ ﰲ ﻟﻮﺣﺔ ﺍﳌﻔﺎﺗﻴﺢ‪ .‬ﺗﺘﺄﻟﻒ ﻋﻤﻠﻴﺔ ﺍﻟﱪﳎﺔ ﰲ ﺍﻟﺒﻴﺌﺔ ﺍﳌﻘﻮﺩﺓ‬
‫ﺑﺎﻷﺣﺪﺍﺙ ﻣﻦ ﺇﻧﺸﺎﺀ ﺃﻏﺮﺍﺽ ﻭﻣﻦ ﰒ ﺗﻐﻴﲑ ﺧﺼﺎﺋﺼﻬﺎ ﻟﻜﻲ ﺗﺘﺼﺮﻑ ﺑﺎﻟﻄﺮﻳﻘﺔ ﺍﻟﱵ ﻳﺮﻏﺐ ‪‬ﺎ‬
‫ﺍﳌﱪﻣﺞ ﲡﺎﻩ ﺃﻱ ﺣﺪﺙ ﻳﺆﺛﺮ ﻋﻠﻰ ﺍﻟﻐﺮﺽ‪.‬‬
‫ﻳﻈﻬﺮ ﺍﻟﺸﻜﻞ )‪ (9-20‬ﺷﻴﻔﺮﺓ ‪ VBA‬ﺍﻟﱵ ﺗﻌﻄﻞ ﺍﻟﺰﺭ ﺍﻟﺘﺎﱄ ﰲ ﳕﻮﺫﺝ ‪ productEntry‬ﻋﻨﺪﻣﺎ ﻳ‪‬ﻌﺮﺽ‬
‫ﺳﺠﻞ ﺟﺪﻳﺪ‪ .‬ﺇﻥ ﺳﺠﻼﺕ ﻫﺬﺍ ﺍﻟﻨﻤﻮﺫﺝ ﺗﺄﰐ ﻣﻦ ﺍﳉﺪﻭﻝ ‪ Product_t‬ﻳ‪‬ﻤﺜﻞ ﺍﳊﻘﻞ ‪Product_ID‬‬
‫ﺍﳌﻔﺘﺎﺡ ﺍﻷﺳﺎﺳﻲ ﻟﻠﺠﺪﻭﻝ‪ ،‬ﻭﲢﺪﺩ ﻗﻴﻤﺔ ﺍﳊﻘﻞ ‪ Product_ID‬ﻟﻠﺴﺠﻞ ﺍﳊﺎﱄ ﺑﺎﺳﺘﺨﺪﺍﻡ‬
‫‪ .Me.Product_ID‬ﺇﺫﺍ ﻛﺎﻥ ﻻ ﻳﻮﺟﺪ ﻗﻴﻤﺔ ﻟﻠﻤﻔﺘﺎﺡ ﺍﻷﺳﺎﺳﻲ ﻟﻠﺴﺠﻞ ﺍﳊﺎﱄ‪ ،‬ﻓﺈﻧﻪ ﻻ ﺑ‪‬ﺪ ﺃﻥ‬
‫ﻳﻜﻮﻥ ﺟﺪﻳﺪﺍﹰ‪ ،‬ﻭﺑﺎﻟﺘﺎﱄ ﻓﺎﻟﺰﺭ ﺍﳌﹸﺴﻤﻰ ‪ NEXT‬ﳚﺐ ﺃﻥ ﻳﻜﻮﻥ ﻏﲑ ﻣﻔﻌﻞ‪ .‬ﲟﺎ ﺃﻥ ﻋﻤﻠﻴﺔ ﻋﺪﻡ ﺗﻔﻌﻴﻞ‬
‫ﺍﻟﺰﺭ ﻗﺪ ﺗﺆﺩﻱ ﺇﱃ ﺧﻄﺄ ﰲ ﺯﻣﻦ ﺍﻟﺘﻨﻔﻴﺬ‪ ،‬ﻓﺈﻥ ﻋﻤﻠﻴﺔ ﲢﺪﻳﺪ ﺍﻟﺰﺭ ﳚﺐ ﺃﻥ ﻳ‪‬ﺰﺍﺡ ﺇﱃ ﻣﻜﻮﻥ ﺁﺧﺮ‪،‬‬
‫ﻭﻫﻨﺎ ﻳﺘﻢ ﺗﻐﻴﲑ ﺍﻟﺘﺮﻛﻴﺰ ﺃﻭ ﺍﻟﺘﺤﺪﻳﺪ ﺇﱃ ﺍﻟﺰﺭ ﺍﻟﺴﺎﺑﻖ ﻭﻣﻦ ﰒ ﻳﺘﻢ ﻳﻌﻄﻞ ﺍﻟﺰﺭ )‪ ،(next‬ﺇﺫﺍ ﻛﺎﻥ‬
‫ﻼ‪.‬‬‫ﻼ ﺟﺪﻳﺪﺍﹰ‪ ،‬ﻋﻨﺪﺋﺬ ﻓﺎﻟﺰﺭ ﺍﳌﹸﺴﻤﻰ ‪ NEXT‬ﻳﺒﻘﻰ ﻣﻔﻌ ﹰ‬
‫ﺍﻟﺴﺠﻞ ﺍﳊﺎﱄ ﻟﻴﺲ ﺳﺠ ﹰ‬
‫›>‪a K›f8‬‬ ‫‪570‬‬

‫›‪Mqu%‬‬
‫ﺗﻘﺪﻡ ﺑﲎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻓﺮﺹ ﻋﻤﻞ ﺃﻛﺜﺮ ﻣﻼﺀﻣﺔ ﻟﻸﻧﻈﻤﺔ ﺍﳊﺎﺳﻮﺑﻴﺔ ﺍﻟﱵ ﲢﺘﺎﺟﻬﺎ ﺍﻷﻋﻤﺎﻝ‪.‬‬
‫ﻣﻮﺿـﻮﻉ ﺍﳌﻨﺎﻗـﺸﺔ ﻫﻮ ﺗﺄﺳﻴﺲ ﺣﺴﺎﺏ ﻣﻨﺎﺳﺐ ﺑﲔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺃﻧﻈﻤﺔ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳋﺎﺻﺔ ﺑﺎﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ‪ .‬ﺗﱪﺯ ﺑﲎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﰲ ﺗﺰﻭﻳﺪ ﺗﻄﺒﻴﻘﺎﺕ ﺍﻹﻧﺘﺮﻧﺖ‪ ،‬ﻣﺘﻀﻤﻨﺔ ﺍﻟﻮﺻﻮﻝ‬
‫ﺇﱃ ﺍﳌﻌﻄـﻴﺎﺕ ﺍﻟﺪﻳﻨﺎﻣﻴﻜـﻴﺔ‪ .‬ﰎ ﻣﻨﺎﻗﺸﺔ ﻋﺪﺓ ﺑﲎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﰲ ﻫﺬﺍ ﺍﻟﻔﺼﻞ‪ ،‬ﻭﻛﺬﻟﻚ ﺑﲎ ﳐﺪﻡ‬
‫ﺍﳌﻠـﻒ ﺣﻴﺚ ﻳﺪﻳﺮ ﳐﺪﻡ ﺍﳌﻠﻒ ﻋﻤﻠﻴﺎﺕ ﺍﳌﻠﻒ ﻭﻳﺘﻢ ﻣﺸﺎﺭﻛﺘﻬﺎ ﻟﻜﻞ ﺣﺎﺳﺐ ﺷﺨﺼﻲ ﻋﻤﻴﻞ ﻳﺘﺒﻊ‬
‫ﻟﺸﺒﻜﺘﻪ‪ .‬ﲣﻠﻖ ﳐﺪﻣﺎﺕ ﺍﳌﻠﻒ ﲪﻞ ﺷﺒﻜﺔ ﻛﺒﲑ‪ ،‬ﻳﺘﻄﻠﺐ ﻧﺴﺨﺔ ﻧﻈﺎﻡ ﺇﺩﺍﺭﺓ ﻗﻮﺍﻋﺪ ﻣﻌﻄﻴﺎﺕ ﻛﺎﻣﻠﺔ‬
‫ﻋﻠـﻰ ﻛﻞ ﺣﺎﺳﺐ ﻋﻤﻴﻞ‪ ،‬ﻛﻤﺎ ﻳﺘﻄﻠﺐ ﺑﺮﳎﺔ ﻣﻌﻘﺪﺓ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺇﺩﺍﺭﺓ ﺗﻜﺎﻣﻞ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺍﳌﺸﺘﺮﻛﺔ‪.‬‬
‫ﻛﻤـﺎ ﲡﻌﻞ ﺑﻨﻴﺔ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺰﺑﻮﻥ ﻗﺎﺩﺭﹰﺍ ﻋﻠﻰ ﺇﺩﺍﺭﺓ ﻭﺍﺟﻬﺔ ﺍﳌﺴﺘﺨﺪﻡ ﺑﻴﻨﻤﺎ ﻳﺪﻳﺮ ﳐﺪﻡ‬
‫ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻭﲣﺰﻳﻨﻬﺎ‪.‬‬
‫ﺗﻘﻠـﻞ ﻫﺬﻩ ﺍﻟﺒﲎ ﺍﺯﺩﺣﺎﻡ ﺍﻟﺸﺒﻜﺔ‪ ،‬ﻳﻘﻠﻞ ﺍﻟﻄﺎﻗﺔ ﺍﳌﻄﻠﻮﺑﺔ ﻣﻦ ﻛﻞ ﻋﻤﻴﻞ‪ ،‬ﻳﺮﻛﺰ ﺗﺮﺧﻴﺺ ﺍﳌﺴﺘﺨﺪﻡ‪،‬‬
‫ﻓﺤـﺺ ﺍﻟـﺘﻜﺎﻣﻞ‪ ،‬ﺻـﻴﺎﻧﺔ ﺩﻟـﻴﻞ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﺪﻳﺚ ﻭﺍﻻﺳﺘﻌﻼﻡ ﻋﻠﻰ ﳐﺪﻡ ﻗﺎﻋﺪﺓ‬
‫ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺗـﺴﻤﺢ ﺍﻟـﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﺍﻟﱵ ﺗﺘﻀﻤﻦ ﳐﺪﻣﺎﺕ ﺃﺧﺮﻯ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺍﻟﻌﻤﻴﻞ ﻭﻃﺒﻘﺎﺕ ﳐﺪﻡ‬
‫ﻗﺎﻋـﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻟﺸﻴﻔﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﺃﻥ ﲣﺰﻥ ﻋﻠﻰ ﳐﺪﻡ ﺇﺿﺎﰲ‪ .‬ﺗﺴﻤﺢ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﳌﻌﺎﳉﺔ ﺍﻟﻌﻤﻞ‬
‫ﺃﻥ ﺗﻨﺠﺰ ﻋﻠﻰ ﳐﺪﻡ ﺇﺿﺎﰲ‪ ،‬ﻣ‪‬ﻨﺸﺄﺓ ﰲ ﻋﻤﻴﻞ ﻫﺰﻳﻞ‪.‬‬
‫ﺗﺘـﻀﻤﻦ ﻓـﻮﺍﺋﺪ ﺍﻟﺒﻨـﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ :‬ﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻤﺪﺩ‪ ،‬ﻣﺮﻭﻧﺔ ﺗﻜﻨﻮﻟﻮﺟﻴﺔ‪ ،‬ﺗﻜﻠﻔﺔ ﺯﻣﻨﻴﺔ ﻃﻮﻳﻠﺔ‬
‫ﻣﻨﺨﻔﻀﺔ‪ ،‬ﻣﻼﺀﻣﺔ ﺃﻓﻀﻞ ﻻﺣﺘﻴﺎﺟﺎﺕ ﺍﻟﻌﻤﻞ‪ ،‬ﺧﺪﻣﺔ ﺯﺑﻮﻥ ﳏﺴﻨﺔ‪ ،‬ﺃﺧﻄﺎﺭ ﻗﻠﻴﻠﺔ‪ .‬ﻟﻜﻦ‪ ،‬ﺃﻋﻠﻰ ﻓﺘﺮﺓ‬
‫ﺯﻣﻨﻴﺔ ﻗﺼﲑﺓ‪ ،‬ﺗﺪﺭﻳﺐ ﻭﺃﺩﻭﺍﺕ ﻣﺘﻘﺪﻣﺔ‪ ،‬ﻧﻘﺺ ﰲ ﺍﳌﺴﺘﺨﺪﻣﲔ ﺍ‪‬ﺮﺑﲔ‪ ،‬ﻣﻌﺎﻳﲑ ﻣﺘﻨﺎﻓﺮﺓ‪ ،‬ﻭﻧﻘﺺ ﰲ‬
‫ﺃﺩﻭﺍﺕ ﺍﳌـﺴﺘﺨﺪﻡ ﺍﻟﻄﺮﰲ ﻭﻫﻲ ﲟﺠﻤﻮﻋﻬﺎ ﺗﺸﻜﻞ ﻣﺸﺎﻛﻞ ﰲ ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ ﺃﻭ‬
‫ﺫﺍﺕ ‪ n‬ﻃﺒﻘﺔ‪.‬‬
‫ﳛـﺪﺩ ﺗﻘﺴﻴﻢ ﺍﻟﺘﻄﺒﻴﻖ ﺃﺟﺰﺍﺀ ﻣﻦ ﺷﻴﻔﺮﺓ ﺍﻟﺘﻄﺒﻴﻖ ﻷﺟﺰﺍﺀ ﳐﺪﻡ ﺃﻭ ﻋﻤﻴﻞ ﺑﻌﺪ ﻛﺘﺎﺑﺘﻬﺎ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ‬
‫ﲢﻘـﻴﻖ ﺃﻓﻀﻞ ﺃﺩﺍﺀ‪ .‬ﻳﺘﻮﻗﻊ ﺃﻥ ﺗﺰﺩﺍﺩ ﺇﻧﺘﺎﺟﻴﺔ ﻣﻄﻮﺭﻱ ﺍﻟﺘﻄﺒﻴﻖ ﻛﻨﺘﻴﺠﺔ ﻻﺳﺘﺨﺪﺍﻡ ﲡﺰﻱﺀ ﺍﻟﺘﻄﺒﻴﻖ‪،‬‬
‫ﻟﻜﻦ ﳚﺐ ﺃﻥ ﻳﻔﻬﻢ ﺍﳌﻄﻮﺭ ﻛﻞ ﻋﻤﻠﻴﺔ ﰲ ﺣﻴﻨﻬﺎ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﻭﺿﻌﻬﺎ ﰲ ﻣﻜﺎ‪‬ﺎ ﺍﻟﺼﺤﻴﺢ‪.‬‬
‫ﺃﺩﻯ ﺍﻹﻓـﺮﺍﻁ ﺍﳌـﺮﺗﺒﻂ ﻣﻊ ﺍﻟﺘﺒﲏ ﺍﻟﻮﺍﺳﻊ ﻟﺒﲎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺇﱃ ﺍﻟﺘﻨﺒﺆ ﺑﺰﻭﺍﻝ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ‪،‬‬
‫ﺗﻮﺟﻬﺖ ﺗﻄﺒﻴﻘﺎﺕ ﺧﻄﲑﺓ ﻭﻣﻬﻤﺔ ﻟﻺﺑﻘﺎﺀ ﻋﻠﻰ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ‪.‬‬
‫‪571‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﻟـﻦ ﻳﻜﻮﻥ ﻣﻦ ﺍﻟﺴﻬﻞ ﲢﻮﻳﻞ ﻫﺬﻩ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻌﻘﺪﺓ ﺇﱃ ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻣﻮﺯﻋﺔ‪ .‬ﲡﻌﻞ ﺣﻠﻮﻝ‬
‫ﺇﻣﻜﺎﻧﻴﺔ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻮﺍﺯﻳﺔ ﻣﻦ ﺍﳉﺬﺍﺏ ﻭﺍﳌﺜﲑ ﺍﻹﺑﻘﺎﺀ ﺍﳌﺮﻛﺰ ﻋﻠﻰ ﺗﻄﺒﻴﻖ ﺃﻭ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‪ .‬ﲟﺎ‬
‫ﺃﻥ ‪ SQL‬ﻫﻲ ﻟﻐﺔ ﻣﻌﺎﳉﺔ ﳎﻤﻮﻋﺔ ﻏﲑ ﺇﺟﺮﺍﺋﻴﺔ‪ ،‬ﻓﺈ‪‬ﺎ ﻣﱪﻫﻨﺔ ﺑﺴﻬﻮﻟﺔ ﻟﻼﺳﺘﺨﺪﺍﻡ ﰲ ﺑﻴﺌﺎﺕ ﺍﳌﻌﺎﳉﺔ‬
‫ﺍﳌـﺘﻮﺍﺯﻳﺔ‪ .‬ﰎ ﻣﻨﺎﻗـﺸﺔ ﻧﻮﻋﲔ ﻣﻦ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻮﺍﺯﻳﺔ )‪ .(SMP‬ﺗﻌﺘﱪ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻌﺪﺩﺓ ﺍﳌﺘﺸﺎ‪‬ﺔ ﻧﻈﺎﻡ‬
‫ﻣﻌﺎﳉﺎﺕ ﻣﺘﻌﺪﺩﺓ ﻣﺰﺩﻭﺟﺔ ﺑﺸﻜﻞ ﳏﻜﻢ ﻣﻊ ﺫﺍﻛﺮﺓ ﻣﺸﺘﺮﻛﺔ ﺑﲔ ﲨﻴﻊ ﺍﳌﻌﺎﳉﺎﺕ‪.‬‬
‫ﺇﻥ ﺃﻧﻈﻤـﺔ ‪ SMP‬ﻫـﻲ ﻣﻮﺿﻮﻉ ﻟﺘﻄﻮﻳﺮ ﻣﺸﺎﻛﻞ ﺍﺯﺩﺣﺎﻡ ‪ I/O‬ﻋﻨﺪﻣﺎ ﻳﺘﻮﺍﺟﺪ ﺍﺯﺩﺣﺎﻡ ﰲ ﻃﻠﺒﺎﺕ‬
‫ﺍﻟﺬﺍﻛـﺮﺓ ﺍﳌـﺸﺘﺮﻛﺔ‪ .‬ﺑﻴﻨﻤﺎ ﺗﺼﻨﻊ ﺍﻟﺒﲎ ﺍﳌﺰﺩﻭﺟﺔ ﻛﻞ ﻭﺣﺪﺓ ﻣﻌﺎﳉﺔ ﻣﺮﻛﺰﻳﺔ ﻣﻊ ﺫﺍﻛﺮ‪‬ﺎ ﺍﶈﺪﺩﺓ‬
‫ﺍﳋﺎﺻﺔ‪ .‬ﻳﺸﺎﺭ ﺇﱃ ﻫﺬﺍ ﺍﻟﻨﻮﻉ ﻣﻦ ﺍﻟﺒﲎ ﻋﻠﻰ ﺃﻧﻪ ﺑﻨﻴﺔ ﻟﻴﺲ ﻓﻴﻬﺎ ﺷﻲﺀ ﻣﺸﺎﺭﻙ‪.‬‬
‫ﲟـﺎ ﺃﻧـﻪ ﻳﻮﺟﺪ ﺍﻟﻘﻠﻴﻞ ﻣﻦ ﺍﳌﺼﺎﺩﺭ ﺗﺘﺸﺎﺭﻙ ﺑﲔ ﻣﻌﺎﳉﺎﺕ ‪ ،MPP‬ﻓﺈﻥ ﻣﺸﺎﻛﻞ ﻧﺰﺍﻉ ﺍﻟﺬﺍﻛﺮﺓ ﺍﻟﱵ‬
‫ﲢﺪﺙ ﰲ ﺃﻧﻈﻤﺔ ‪ SMP‬ﺗﻜﻮﻥ ﻣﺴﺘﺒﻌﺪﺓ‪ ،‬ﻭﻣﻦ ﺍﶈﺘﻤﻞ ﺃﻥ ﺗﻀﻴﻒ ﻋﻘﺪ ﰲ ﻭﺣﺪﺍﺕ ﻣﻔﺮﺩﺓ‪ ،‬ﺟﺎﻋﻠﺔ‬
‫ﺑﲎ ‪ MPP‬ﻗﺎﺑﻠﺔ ﻟﻠﺘﻤﺪﺩ ﺑﺸﻜﻞ ﻛﺒﲑ‪.‬‬
‫ﺍﻟـﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻫﻲ ﺻﻨﻒ ﻣﻦ ﺻﻨﻮﻑ ﺍﻟﱪﳎﻴﺎﺕ ﺍﳌﺘﻌﺪﺩﺓ ﺍﻟﱵ ﺗﺴﻤﺢ ﻟﺘﻄﺒﻴﻖ ﻣﺎ ﺃﻥ ﻳﺘﻨﺎﺳﺐ‬
‫ﻣـﻊ ﺑﺮﳎﻴﺎﺕ ﺃﺧﺮﻯ ﻣﻦ ﺩﻭﻥ ﺃﻥ ﻳﻄﻠﺐ ﻣﻦ ﺍﳌﺴﺘﺨﺪﻡ ﻓﻬﻢ ﻭﺗﺸﻔﲑ ﻋﻤﻠﻴﺎﺕ ﺍﳌﺴﺘﻮﻯ ﺍﳌﻨﺨﻔﺾ‬
‫ﺍﳌﻄﻠﻮﺑﺔ ﻟﺘﺤﻘﻴﻖ ﺍﻟﺘﻨﺎﺳﺐ ﻭﺍﻟﺘﻼﺅﻡ‪.‬‬
‫ﰎ ﻣﻨﺎﻗـﺸﺔ ﺳـﺖ ﻓﺌﺎﺕ ﻣﻦ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺍﳌﻌﺘﻤﺪﺓ ﻋﻠﻰ ﺍﻟﺘﻤﺪﺩ ﻭﻗﺎﺑﻠﻴﺔ ﺍﻻﺳﺘﺮﺟﺎﻉ‪ .‬ﻫﺬﻩ‬
‫ﺍﻷﻧﻮﺍﻉ ﻣﻦ ﺍﻟﱪﳎﻴﺎﺕ ﲤﺜﻞ ﺇﺟﺮﺍﺀ ﺑﻌﻴﺪ ﻣﺘﺰﺍﻣﻦ ﻳﺪﻋﻰ )‪ ،(RPC‬ﺍﺷﺘﺮﺍﻙ‪/‬ﺇﻋﻼﻥ‪ ،‬ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‬
‫ﺍﳌـﻮﺟﻬﺔ ﺑﺎﻟﺮﺳـﺎﺋﻞ )‪ ،(MOM‬ﻭﺳﻴﻂ ﻃﻠﺐ ﺍﻟﻐﺮﺽ )‪ ،(ORB‬ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﻟﻠﻮﺻﻮﻝ ﺇﱃ‬
‫ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻮﺟﻬﺔ ﺑﺎﻟﻠﻐﺔ ‪ RPC ،SQL‬ﺍﳌﺘﺰﺍﻣﻦ‪ .‬ﺗﺘﻀﻤﻦ ﺍﻟﺘﻄﻮﻳﺮﺍﺕ ﺍﳊﺎﻟﻴﺔ ﰲ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ‬
‫ﺍﳌـﻮﺟﻬﺔ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﻔﺘﻮﺡ )‪ ،(ODBC‬ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬
‫ﺟﺎﻓﺎ )‪ ،(JDBC‬ﻭ ‪ OLE-OB‬ﺍﻟﺘﺎﺑﻌﺔ ﳌﺎﻳﻜﺮﻭﺳﻮﻓﺖ‪.‬‬
‫ﻳﻠﻘـﻰ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﻣﻊ ﺍﻟﻮﻳﺐ‪ ،‬ﺍﻟﻮﺻﻮﻝ ﺇﱃ ﻣﻌﻠﻮﻣﺎﺕ ﺩﻗﻴﻘﺔ ﻣﻌﺪﻟﺔ ﻭﻏﲑﻫﺎ ﺍﻻﻫﺘﻤﺎﻡ‪.‬‬
‫ﻼ ﻣﻨﻄﻖ ﺍﻟﺘﻄﺒﻴﻖ ﺇﱃ ﳐﺪﻣﺎﺕ ﺃﻛﺜﺮ ﺗﻘﻴﻴﺴﺎﹰ‪ ،‬ﻛﺎﺳﺘﺨﺪﺍﻡ‬
‫ﻳﻐـﲑ ﺍﻟﻮﻳﺐ ﳕﺎﺫﺝ ﺗﻮﺯﻳﻊ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻧﺎﻗ ﹰ‬
‫ﻭﺍﺟﻬﺎﺕ ﺍﳌﺴﺘﻌﺮﺿﺎﺕ‪.‬‬
‫ﲢﻘﻴﻖ ﺍﻷﻣﻦ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﹰﺍ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻣﻦ ﲢﻘﻴﻘﻪ ﰲ ﺑﻴﺌﺔ ﻣﻘﻴﺴﺔ‪ ،‬ﻷﻧﻪ ﳚﺐ ﺗﺄﻣﲔ ﺍﻟﺸﺒﻜﺎﺕ‬
‫ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﳎﻤﻮﻋﺎﺕ ﻋﻤﻞ ﺍﻟﺰﺑﺎﺋﻦ ﻭﺍﳌﺨﺪﻣﺎﺕ‪.‬‬
‫ﺗﺘـﻀﻤﻦ ﻣﻘﺎﻳﻴﺲ ﺍﻷﻣﻦ ﺍﳌﻀﻤﻨﺔ ﰲ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺃﻣﺎﻥ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﺍﻟﻨﻈﺎﻡ‪ ،‬ﺃﻣﺎﻥ‬
‫ﻭﺳﻼﻣﺔ ﻛﻠﻤﺔ ﺍﳌﺮﻭﺭ ﻋﻠﻰ ﻣﺴﺘﻮﻯ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻳﺼﻮﻥ ﺍﺗﺼﺎﻻﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪572‬‬

‫ﺗﺘـﻀﻤﻦ ﻣـﺴﺎﺋﻞ ﻭﻗـﻀﺎﻳﺎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺍﻟﻮﺍﺟﺐ ﻣﺮﺍﻋﺎ‪‬ﺎ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﲢﺴﲔ ﻓﺮﺹ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻖ‬
‫ﳐـﺪﻡ‪/‬ﻣـﻴﻞ ﻧـﺎﺟﺢ‪ :‬ﺿﺒﻂ ﲢﻠﻴﻞ ﻣﺸﻜﻠﺔ ﺍﻟﻌﻤﻞ ﻭﺩﻗﺘﻪ‪ ،‬ﲢﻠﻴﻞ ﺑﻨﻴﺔ ﻣﻔﺼﻠﺔ‪ ،‬ﲡﻨﺐ ﺍﻟﺒﲎ ﺍﳌﻘﺎﺩﺓ‬
‫ﺑﺎﻷﺩﻭﺍﺕ‪ ،‬ﲢﻘﻴﻖ ﺇﻣﻜﺎﻧﻴﺔ ﺗﻮﺳﻊ ﻣﻨﺎﺳﺒﺔ‪ ،‬ﺗﻮﺿﻊ ﻣﻨﺎﺳﺐ ﻟﻠﻤﺨﺪﻣﺎﺕ‪ ،‬ﲢﻠﻴﻞ ﺷﺒﻜﺔ ﻣﻼﺋﻢ ﻭﻛﺎﻑ‪،‬‬
‫ﻭﺇﺩﺭﺍﻙ ﺍﻟﻘﻴﻢ ﺍﳋﻔﻴﺔ ﺍﻟﻜﺎﻓﻴﺔ‪.‬‬
‫ﺗﺘﻀﻤﻦ ﺍﻟﻔﻮﺍﺋﺪ ﺍﻟﱵ ﺗﻜﺘﺴﺐ ﺑﺎﻻﻧﺘﻘﺎﻝ ﺇﱃ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺍﻟﺬﻛﺎﺀ ﺍﻟﻮﻇﻴﻔﻲ ﰲ ﺍﳌﻨﺼﺎﺕ‪ ،‬ﺍﳌﺮﻭﻧﺔ‪،‬‬
‫ﻗﺎﺑﻠﻴﺔ ﺍﻟﺘﻮﺳﻊ‪ ،‬ﺍﺯﺩﺣﺎﻡ ﺣﺮﻛﺔ ﺷﺒﻜﺔ ﻗﻠﻴﻞ‪ ،‬ﺗﻄﻮﻳﺮ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻔﻌﻠﺔ ﻟﻠﻮﻳﺐ‪.‬‬
‫ﺗـﺴﺘﺨﺪﻡ ﳐﺪﻣﺎﺕ ﺍﻟﻌﺮﺽ ﰲ ﻣﻌﻈﻢ ﺑﲎ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻭﺍﺟﻬﺎﺕ ﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﻷﻣﺜﻠﺔ )‪ .(QBE‬ﺗﻘﺪﻡ‬
‫‪ QBE‬ﺑﻴـﺌﺔ ﺑﺮﳎﺔ ﻣﺮﺋﻴﺔ ﻣﺴﺘﺨﺪﻣﺔ ﺑﺸﻜﻞ ﺷﺎﺋﻊ ﰲ ﻋﻤﻠﻴﺔ ﺗﻄﻮﻳﺮ ﺍﻻﺳﺘﻌﻼﻣﺎﺕ‪ .‬ﻻ ﻳﻮﺟﺪ ﻣﻌﻴﺎﺭ‬
‫ﺧـﺎﺹ ﺑــ ‪ ،QBE‬ﻟﺬﻟﻚ ﲣﺘﻠﻒ ﺍﻟﻮﺍﺟﻬﺎﺕ ﺑﲔ ﺍﳌﻨﺘﺠﺎﺕ‪ ،‬ﻟﻜﻦ ﻣﻌﻈﻤﻬﺎ ﻳﺴﺘﺨﺪﻡ ﻃﺮﻳﻘﺔ‬
‫ﳕـﻮﺫﺝ ﻣﻌﻄـﻴﺎﺕ ﻣﺪﻣﺞ ﻣﻊ ﲣﻄﻴﻂ ﺟﺪﻭﻝ ﺷﺎﻣﻞ ﻟﻠﻨﺘﺎﺋﺞ‪ .‬ﺗﺴﺘﺨﺪﻡ ﻭﺍﺟﻬﺔ ‪ QBE‬ﺍﳋﺎﺻﺔ‬
‫ﺑـ ‪ Microsoft Access 2ooo‬ﻫﺬﺍ ﺍﻟﺘﺨﻄﻴﻂ ﺑﺸﻜﻞ ﻣﻮﺳﻊ‪ ،‬ﻣﻀﻤﻨﺔ ﺗﻌﺮﻳﻒ ﺍﳉﺪﻭﻝ ﻭﺍﻻﺳﺘﻌﻼﻡ‬
‫ﻟﺘﺄﺳﻴﺲ ﻋﻼﻗﺎﺕ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﻟﻘـﺪ ﻛـﺴﺒﺖ ﺣﺰﻡ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﻌﻼﺋﻘﻴﺔ ﺍﻟﻘﻮﻳﺔ ﺍﻧﺘﺸﺎﺭﹰﺍ ﻭﺍﺳﻌﹰﺎ ﺑﺴﺒﺐ ﻭﺍﺟﻬﺎ‪‬ﺎ ﺍﻟﺮﺳﻮﻣﻴﺔ‬
‫)‪ ،(GUI‬ﻭﻭﺍﺟﻬﺎﺕ ﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﻷﻣﺜﻠﺔ )‪.(QBE‬‬
‫ﻋﻠﻰ ﺳﺒﻴﻞ ﺍﳌﺜﺎﻝ‪ :‬ﻳﺴﺘﺨﺪﻡ ‪ Ms Access 2000‬ﺍﻻﺳﺘﻌﻼﻣﺎﺕ ﻹﺭﺳﺎﻝ ﺍﻷﻭﺍﻣﺮ ﺇﱃ ﺃﻱ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ‬
‫ﻣﻌﻄـﻴﺎﺕ ﻣﻔـﺘﻮﺡ )‪ (ODBC‬ﺧﺎﺿﻊ ﳌﺨﺪﻡ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ‪ .‬ﺃﻭ ﳝﻜﻦ ﺃﻥ ﻧﺮﺑﻂ‬
‫ﺟﺪﺍﻭﻝ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺇﱃ ﻭﺍﺟﻬﺔ ﺗﻄﺒﻴﻘﺎﺕ ‪ Ms Access 2000‬ﰲ ﺣﺎﻝ ﻛﺎﻧﺖ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‬
‫ﺧﺎﺿـﻌﺔ ﻻﺗﺼﺎﻝ ﻣﻔﺘﻮﺡ ﺃﻭ ﺍﺗﺼﺎﻝ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺟﺎﻓﺎ )‪ .(JDBC‬ﳚﺐ ﲢﺪﻳﺪ ﻋﺪﺓ ﺑﺎﺭﺍﻣﺘﺮﺍﺕ‬
‫ﺑﺎﻹﺿـﺎﻓﺔ ﺇﱃ ﺗﺄﺳﻴﺲ ﺍﺗﺼﺎﻝ )‪ (JDBC‬ﺃﻭ )‪ .(ODBC‬ﻳﺘﻀﻤﻦ ﻫﺬﺍ ﺍﺣﺘﻴﺎﺟﺎﺕ ﻗﻴﺎﺩﺓ ‪ JDBC‬ﺃﻭ‬
‫‪ ،ODBC‬ﺍﺳـﻢ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳋﻠﻔﻲ‪ ،‬ﺍﺳﻢ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻭﻣﻌﺮﻑ )‪ (Id‬ﻭﻛﻠﻤﺔ ﻣﺮﻭﺭ‬
‫ﻣـﺴﺘﺨﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪ .‬ﻫﻨﺎﻙ ﻣﺴﺘﻮﻳﺎﺕ ﳐﺘﻠﻔﺔ ﻟﻠﻤﻄﺎﺑﻘﺔ ﻣﻊ ﻣﻌﻴﺎﺭ )‪ (ODBC‬ﺍﻟﺬﻱ ﻳﺴﻤﺢ‬
‫ﳌﻌﻈﻢ ﺑﺮﺍﻣﺞ ﺍﻟﺘﻄﺒﻴﻖ ﺑﺘﺤﻘﻴﻖ ﺑﻌﺾ ﺍﻻﺗﺼﺎﻻﺕ ﻋﻠﻰ ﺍﻷﻗﻞ ﺇﱃ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﳌﺮﻏﻮﺑﺔ‪.‬‬
‫ﺇﻥ ﻟﻐﺎﺕ ﺍﻟﱪﳎﺔ ﺍﳌﺮﺗﺒﻄﺔ ﻣﻊ ‪ Access 2000‬ﻫﻲ ﻓﻴﺠﻮﺍﻝ ﺑﻴﺴﻚ ﻣﻦ ﺃﺟﻞ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ )‪ .(VBA‬ﻳﻌﻤﻞ‬
‫ﺍﺳـﺘﺨﺪﺍﻡ ﻣﺎﻛﺮﻭ ‪ ،Access 2000‬ﺍﻟﺬﻱ ﳝﺜﻞ ﻭﺣﺪﺍﺕ ﳐﺰﻧﺔ ﻣﻦ ﺷﻴﻔﺮﺓ ‪ ،VBA‬ﺑﺸﻜﻞ ﺟﻴﺪ ﻣﻦ‬
‫ﺃﺟـﻞ ﺍﻟﻨﻤﺬﺟﺔ ﺍﻷﻭﻟﻴﺔ‪ ،‬ﻟﻜﻦ ﻳﺘﻄﻠﺐ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻖ ﻗﻮﻱ ﲢﻮﻳﻞ ﻫﺬﻩ ﺍﻟﻮﺣﺪﺍﺕ ﺍﳌﺨﺰﻧﺔ )ﻣﺎﻛﺮﻭ( ﺇﱃ‬
‫ﻭﺣﺪﺍﺕ )‪ .(VBA‬ﻣﻦ ﺍﳌﻤﻜﻦ ﺩﺍﺋﻤﹰﺎ ﺍﺳﺘﺨﺪﺍﻡ ‪ VBA‬ﻹﳒﺎﺯ ﻭﻇﺎﺋﻒ ﺃﻛﺜﺮ ﺗﻌﻘﻴﺪﺍﹰ‪ ،‬ﻣﻌﺎﳉﺔ ﺍﻷﺧﻄﺎﺀ‪،‬‬
‫ﲢﻘﻴﻖ ﺗﻨﻔﻴﺬ ﺃﺳﺮﻉ‪ ،‬ﻋﻤﻠﻴﺔ ﺻﻴﺎﻧﺔ ﺃﺳﻬﻞ‪ ،‬ﺃﻛﺜﺮ ﺇﺩﺍﺭﺓ ﻟـ ‪ ،OLG‬ﻭﲢﻜﻢ ﺗﺼﻮﻳﺮﻱ ﺃﻛﺜﺮ‪.‬‬
‫‪573‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫›&‪M<›Y‬‬
‫!‬ ‫‬

‫›&‪MEK>&›žKA:8‬‬
‫ﲡـﺰﻱﺀ ﺍﻟﺘﻄﺒـﻴﻖ‪ ،‬ﺑﺮﻧﺎﻣﺞ ﺍﻟﺘﻄﺒﻴﻖ‪ ،‬ﻭﺍﺟﻬﺔ ‪ ،API‬ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ‪ ،‬ﺯﺑﻮﻥ ﻫﺰﻳﻞ‪ ،‬ﳐﺪﻡ ﻣﻠﻔﺎﺕ‪،‬‬
‫ﺍﻟﱪﳎﻴﺔ ﺍﻟﻮﺳﻴﻄﺔ‪ ،‬ﺍﻹﺟﺮﺍﺋﻴﺔ ﺍﳌﺨﺰﻧﺔ‪ ،‬ﺑﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪ ،‬ﻣﻘﺎﺩ ﺑﺎﳊﺪﺙ‪،GDBC ،VBA ،QBE ،‬‬
‫ﺑﻨـﻴﺔ ﻋـﺪﻡ ﺍﻟﺘﺸﺎﺭﻙ‪ ،‬ﺍﻟﱪﳎﻴﺔ ﺍﻟﱵ ﺗﺴﻬﻞ ﺍﻻﺗﺼﺎﻝ ﺑﲔ ﺑﺮﺍﻣﺞ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ ﻭﳐﺪﻣﺎﺕ ﻗﺎﻋﺪﺓ‬
‫ﻣﻌﻄـﻴﺎﺕ ﺍﻟﻄـﺮﻑ ﺍﳋﻠﻔـﻲ‪ ،‬ﺍﺳـﺘﻌﻼﻡ ﻳﺴﺘﺨﺪﻡ ﻗﺎﻋﺪﺓ ‪ RDBMS‬ﻟﻠﻄﺮﻑ ﺍﳋﻠﻔﻲ‪ ،‬ﺇﻋﺪﺍﺩﺍﺕ‬
‫ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﺛﻼﺛﻲ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬

‫— ‪M<›YBAMA‬‬
‫ﻼ ﻣﻦ ﺍﳌﺼﻄﻠﺤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻋﺮﻑ ﻛ ﹰ‬ ‫‪-1‬‬

‫ﲡﺰﻱﺀ ﺍﻟﺘﻄﺒﻴﻖ‪.‬‬ ‫‪.a‬‬

‫ﻭﺍﺟﻬﺔ ﺑﺮﻧﺎﻣﺞ ﺍﻟﺘﻄﺒﻴﻖ )‪.(API‬‬ ‫‪.b‬‬

‫ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ‪.‬‬ ‫‪.c‬‬

‫ﺍﻟﻌﻤﻴﻞ ﺍﳍﺰﻳﻞ‪.‬‬ ‫‪.d‬‬

‫ﳐﺪﻡ ﺍﳌﻠﻒ‪.‬‬ ‫‪.e‬‬

‫ﺍﻟﱪﺍﻣﺞ ﺍﻟﻮﺳﻴﻄﺔ‪.‬‬ ‫‪.f‬‬

‫ﺇﺟﺮﺍﺀ ﳐﺰﻥ‪.‬‬ ‫‪.g‬‬

‫ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬ ‫‪.h‬‬

‫ﻣﻘﺎﺩ ﺑﺎﳊﺪﺙ‪.‬‬ ‫‪.i‬‬

‫‪.QBE‬‬ ‫‪.j‬‬

‫‪.VBA‬‬ ‫‪.k‬‬

‫‪.JDBC‬‬ ‫‪.l‬‬
a K›f8>› 574

:‫ﺻﻞ ﺑﲔ ﺍﳌﺼﻄﻠﺤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ ﻣﻊ ﺍﻟﺘﻌﺮﻳﻒ ﺍﳌﻨﺎﺳﺐ‬ -2

ϖτϨϣϭ ϖϴΒτΘϟ΍ ϖτϨϣ ΔΠϟΎόϣ Ϧϋ ϝϭΆδϣ ϞϴϤϋ .΃


.ϥϮΑί ϡΪΨϣ ΔϴϨΑ -
.νήόϟ΍

νήόϟ΍ ΔϘΒσ ΔΠϟΎόϤϟ ΄ϴϬϣ (PC) ϲμΨη ΐγΎΣ .Ώ


.(API) ϖϴΒτΘϟ΍ ΞϣΎϧήΑ ΔϬΟ΍ϭ -
.Ύϣ ϖϴΒτΘϟ ϞϤόϟ΍ ΔϘτϨϣ ξόΑϭ
ΔϴϠΧ΍Ϊϟ΍ ΔΠϟΎόϤϟ΍ ΔϴϧΎϜϣ· ϞϬδΗ ϲΘϟ΍ ΔϴΠϣήΒϟ΍ .Ν
.ϞϴϘΜϟ΍ ϞϴϤόϟ΍ -
.ήϴϔθΘϠϟ ΞϣήΒϤϟ΍ ΕϻϭΎΤϣ ΔϠϠϘϣ
.Ι΍ΪΣϷ΍ ϰϠϋ ΕΎΑΎΠΘγϻ΍ ΪϴϟϮΗϭ ϑΎθΘϛ΍ .Υ .ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϡΪΨϣ -
Γήϛ΍Ϋ ϰϠϋ ΕΎΠϟΎόϤϟ΍ ΎϬϴϓ ϙέΎθΘΗ ϲΘϟ΍ ΔϴϨΒϟ΍ .Ω
.ϒϠϤϟ΍ ϡΪΨϣ -
.ΔϛήΘθϣ
.ΎϬϨϳΰΨΗϭ ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϰϟ· ϝϮλϮϟ΍ Ϧϋ ϝϭΆδϣ .Ϋ .ςϴγϮϟ΍ ΞϣΎϧήΒϟ΍ -
.ϖϴΒτΘϟ΍ ϖτϨϣ ΕΎϧϮϜϣ ΎϬϴϓ ωίϮΗ ϲΘϟ΍ ΔϤψϧϷ΍ .έ .ΕΎϘΒτϟ΍ ΔϴΛϼΛ ΔϴϨΒϟ΍ -

ΔϬΟϮϣ ϥϮϜΗϭ ήηΎΒϣ ϞϣΎόΗ ϡΪΨΘδΗ ΔΠϣήΑ Δϐϟ .ί


.(SMP) ΔϘΑΎτΘϤϟ΍ ΓΩΪόΘϤϟ΍ ΔΠϟΎόϤϟ΍ -
.ϲ΋ήϣ ϞϜθΑ
Ϧϣ ϙήΘθϣ Ϯϫϭ ˬϒϠϤϟ΍ ΕΎϴϠϤϋ Γέ΍Ω· Ϧϋ ϝϭΆδϣ .˰ϫ
.(MPP) ΓΩΪόΘϤϟ΍ Δϳί΍ϮΘϤϟ΍ ΔΠϟΎόϤϟ΍ -
.ϦϴϠμΘϤϟ΍ ˯ϼϤόϟ΍ Ϟϛ ϞΒϗ
.ϙέΎθΗ ϼϟ΍ ΔϴϨΑ .ι .ϞϳΰϬϟ΍ ϞϴϤόϟ΍ -
ϑήτϟ΍ Ξϣ΍ήΑ ϦϴΑ ϝΎμΗϻ΍ ϞϬδΗ ϲΘϟ΍ ΔϴΠϣήΒϟ΍ .ν
.ΙΪΤϟΎΑ ΩΎϘϣ -
.ϲϔϠΨϟ΍ ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϡΪΨϣϭ ϲϣΎϣϷ΍
ϑήτϟ΍ Ξϣ΍ήΑ ϦϴΑ ϝΎμΗϻ΍ ϞϬδΗ ϲΘϟ΍ ΔϴΠϣήΒϟ΍ .ν
.ϡϼόΘγϻ΍ ϡ΍ΪΨΘγΎΑ έϮΒόϟ΍ -
.ϲϔϠΨϟ΍ ΕΎϴτόϤϟ΍ ΓΪϋΎϗ ϡΪΨϣϭ ϲϣΎϣϷ΍

ϑήτϟ΍ ϞΟ΃ Ϧϣ RDBMS ϥϮϧΎϗ ϡΪΨΘδϳ ϡϼόΘγ΍ .ρ


.QBE -
.ϲϔϠΨϟ΍
.ΕΎϘΒτϟ΍ ϲΛϼΛ ϞϴϤϋ/ϡΪΨϣ ΔΌϴϬΗ .ω

.‫ ﻣﻘﺎﺭﻧﺔ ﻣﻊ ﻃﺮﻕ ﺍﳌﻌﺎﳉﺔ ﺍﻷﺧﺮﻯ‬،‫ﻋﻤﻴﻞ‬/‫ﻋﺪﺩ ﻣﻴﺰﺍﺕ ﺍﻟﺒﻨﻴﺔ ﳐﺪﻡ‬ -3

:‫ﻗﺎﺭﻥ ﺑﲔ ﺍﳌﺼﻄﻠﺤﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ‬ -4

.(MPP) ‫ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻮﺍﺯﻳﺔ ﺍﳌﺘﻌﺪﺩﺓ‬،(SMP) ‫ﺍﳌﻌﺎﳉﺔ ﺍﳌﺘﻌﺪﺩﺓ ﺍﳌﺘﻄﺎﺑﻘﺔ‬ .a

.‫ ﺍﻟﺒﻨﻴﺔ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‬،‫ ﳐﺪﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‬،‫ﳐﺪﻡ ﺍﳌﻠﻒ‬ .b

.‫ ﻋﻤﻞ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻀﺨﻤﺔ‬،‫ﻋﻤﻴﻞ‬/‫ﻋﻤﻞ ﳐﺪﻡ‬ .c

.‫ ﺍﻟﻌﻤﻴﻞ ﺍﳍﺰﻳﻞ‬،‫ﺍﻟﻌﻤﻴﻞ ﺍﻟﺜﻘﻴﻞ‬ .d

.(Line-mode) ‫ ﻭﺍﺟﻬﺔ ﺍﻟﻨﻤﻂ ﺍﳋﻄﻲ‬،‫ﺍﻻﺳﺘﻌﻼﻡ ﺑﺎﻷﻣﺜﻠﺔ‬ .e


‫‪575‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺻﻒ ﳏﺪﻭﺩﻳﺎﺕ ﳐﺪﻣﺎﺕ ﺍﳌﻠﻒ‪.‬‬ ‫‪-5‬‬

‫ﺻﻒ ﻣﻴﺰﺍﺕ ﻭﺳﻴﺌﺎﺕ ﺍﻟﺒﲎ ﻣﺘﻌﺪﺩﺓ ﺍﻟﻄﺒﻘﺎﺕ )‪ ،(n‬ﻭﺍﻟﺒﲎ ﺛﻼﺛﻴﺔ ﺍﻟﻄﺒﻘﺎﺕ‪.‬‬ ‫‪-6‬‬

‫ﺻﻒ ﻣﻴﺰﺍﺕ ﻭﺳﻴﺌﺎﺕ ﳐﺪﻣﺎﺕ ﻗﻮﺍﻋﺪ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬ ‫‪-7‬‬

‫ﻛﻴﻒ ﳝﻜﻦ ﺃﻥ ﻳﺴﺎﻋﺪ ﲡﺰﻱﺀ ﺍﻟﺘﻄﺒﻴﻖ ﺍﳌﻄﻮﺭﻳﻦ ﻋﻠﻰ ﲢﻮﻳﻞ ﺗﻄﺒﻴﻖ ﺇﱃ ﺣﺎﻟﺔ ﻋﻤﻞ ﺧﺎﺻﺔ‪.‬‬ ‫‪-8‬‬

‫ﻭﺿﺢ ﺳﺖ ﻓﺌﺎﺕ ﻣﻦ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻮﺳﻴﻄﺔ‪.‬‬ ‫‪-9‬‬

‫ﻛﻴﻒ ﻳﻐﲑ ﺍﻟﻮﻳﺐ ﳕﺎﺫﺝ ﺍﳌﻮﺯﻋﺔ ﻟﻠﻤﻌﻄﻴﺎﺕ‪.‬‬ ‫‪-10‬‬

‫ﻭﺿﺢ ﻣﻴﺰﺍﺕ ﻭﺳﻴﺌﺎﺕ ‪ QBE‬ﺑﺎﳌﻘﺎﺭﻧﺔ ﻣﻊ ‪.SQL‬‬ ‫‪-11‬‬

‫ﻣﺎ ﺍﻟﻐﺎﻳﺔ ﻣﻦ ﺗﻮﺻﻴﻒ ‪ODBC‬؟‬ ‫‪-12‬‬

‫ﻣﺎ ﻫﻲ ﻗﻀﺎﻳﺎ ﺍﻷﻣﻦ ﺍﻟﱵ ﺗﻈﻬﺮ ﻋﻨﺪ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻖ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﻣﻔﻌﻠﺔ ﻟﻠﻮﻳﺐ؟‬ ‫‪-13‬‬

‫ﻭﺿﺢ ﺍﻟﻌﻼﻗﺔ ﺑﲔ ‪ Access 2000‬ﻭ ‪.VBA‬‬ ‫‪-14‬‬

‫‪h¥K1¹foK‬‬
‫ﻳﻄﻠـﺐ ﻣﻨﻚ ﲢﻀﲑ ﺗﻘﺮﻳﺮ ﻳﻘﻴﻢ ﺣﻠﻮﻝ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺍﶈﺘﻤﻠﺔ ﳌﻌﺎﳉﺔ ﻧﻈﺎﻡ ﺗﻄﺒﻴﻖ ﺯﺑﻮﻥ ﺟﺪﻳﺪ‬ ‫‪-1‬‬
‫ﻣـﻦ ﺃﺟﻞ ﻛﻞ ﻣﻜﺎﺗﺐ ﺍﻟﻔﺮﻉ‪ .‬ﻣﺎ ﻫﻲ ﻣﻴﺰﺍﺕ ﺍﻟﻌﻤﻞ ﺍﻟﱵ ﺳﺘﻘﻴﻤﻬﺎ‪ ،‬ﻭﻣﺎ ﻫﻲ ﻣﻴﺰﺍﺕ ﺍﻟﺘﻘﻨﻴﺔ‬
‫ﺍﻟﱵ ﺳﺘﻘﻮﻡ ﺑﺘﻘﺪﻳﺮﻫﺎ؟ ﳌﺎﺫﺍ؟‬
‫ﻣﺎ ﻫﻲ ﺍﻟﻘﻀﺎﻳﺎ ﺍﻹﺩﺍﺭﻳﺔ ﺍﻟﱵ ﺳﺘﻌﺘﱪﻫﺎ ﻣﻬﻤﺔ ﻋﻨﺪ ﺗﻘﺪﳝﻚ ﻟﺒﺤﺚ ﻋﻦ ﺑﻨﻴﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺟﺪﻳﺪ؟‬ ‫‪-2‬‬

‫ﻧﺎﻗﺶ ﻣﺴﺘﻮﻳﺎﺕ ﺍﻷﻣﻦ ﺍﳌﺨﺘﻠﻔﺔ ﺍﻟﱵ ﻳﺘﻮﺟﺐ ﺗﺄﺳﻴﺴﻬﺎ ﰲ ﻧﻈﺎﻡ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ‪.‬‬ ‫‪-3‬‬

‫ﻛﻴﻒ ﻳﺆﺛﺮ ﺍﻟﻮﻳﺐ ﰲ ﺃﻧﻈﻤﺔ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ؟‬ ‫‪-4‬‬

‫ﻣﺎ ﺃﳘﻴﺔ ‪ODBC‬؟ ﻣﺎ ﻫﻲ ﻣﻌﺎﻳﲑ ﺍﻻﺗﺼﺎﻝ ﺍﻷﺧﺮﻯ ﺍﻟﱵ ﰎ ﺗﻄﻮﻳﺮﻫﺎ؟‬ ‫‪-5‬‬

‫ﺑـﺸﻜﻞ ﺗﺎﺭﳜـﻲ‪ ،‬ﻣـﺎ ﻫـﻲ ﺃﻧـﻮﺍﻉ ﺍﻟﺘﻄﺒﻴﻘﺎﺕ ﺍﳌﻨﻘﻮﻟﺔ ﺑﺴﺮﻋﺔ ﺇﱃ ﻧﻈﻢ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ‬ ‫‪-6‬‬
‫ﳐـﺪﻡ‪/‬ﻋﻤﻴﻞ؟ ﻣﺎ ﻫﻲ ﺍﻷﻧﻮﺍﻉ ﺍﳌﻨﻘﻮﻟﺔ ﺍﻷﻛﺜﺮ ﺑﻄﺌﹰﺎ ﻭﳌﺎﺫﺍ؟ ﻣﺎ ﺗﻈﻦ ﺃﻧﻪ ﺳﻴﺤﺪﺙ ﰲ ﺍﳌﺴﺘﻘﺒﻞ‬
‫ﻟﺘﺤﻘﻴﻖ ﺗﻮﺍﺯﻥ ﺃﻧﻈﻤﺔ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻭﻧﻈﻢ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻜﺒﲑﺓ؟‬
‫ﻣـﺎ ﻫـﻲ ﻣﻴـﺰﺍﺕ ﻭﻣﺸﺎﻛﻞ ﺍﻟﱪﳎﻴﺎﺕ ﺍﻟﻮﺳﻴﻄﺔ ﺍﻟﱵ ﺗ‪‬ﺴﺘﺨﺪﻡ ﰲ ﺍﻻﺗﺼﺎﻝ ﻣﻊ ﻧﻈﻢ ﻗﺎﻋﺪﺓ‬ ‫‪-7‬‬
‫ﺍﳌﻌﻄﻴﺎﺕ؟‬
‫›>‪a K›f8‬‬ ‫‪576‬‬

‫ﺗﻌﺘﻤﺪ ﺍﻟﺘﻤﺎﺭﻳﻦ ﺍﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﻣﺜﺎﻝ ﺷﺮﻛﺔ ﺍﻷﺛﺎﺙ ﺍﻟﺴﺎﺑﻖ‪ .‬ﺣﻴﺚ ﻧﺘﻮﺟﻪ ﻟﺘﻄﺒﻴﻖ ﻭﺍﺟﻬﺔ ‪.QBE‬‬
‫ﺃﻇﻬﺮ ﺭﻗﻢ ﺍﻟﻄﻠﺐ‪ ،‬ﺭﻗﻢ ﺍﻟﺰﺑﻮﻥ‪ ،‬ﺭﻗﻢ ﺍﳌﻨﺘﺞ‪ ،‬ﺗﺎﺭﻳﺦ ﺍﻟﻄﻠﺐ‪ ،‬ﻭﻛﻤﻴﺔ ﺍﻟﻄﻠﺒﻴﺔ ﻟﻜﻞ ﺍﻟﻄﻠﺒﺎﺕ ﺍﻟﱵ‬ ‫‪-8‬‬
‫ﺗﺰﻳﺪ ﻋﻦ ﺃﺭﺑﻌﺔ ﻭﺣﺪﺍﺕ ﻣﻦ ﺍﳌﻨﺘﺞ )‪ (3‬ﺃﻭ ﺍﳌﻨﺘﺞ ﺫﻭ ﺍﻟﺮﻗﻢ )‪.(8‬‬
‫ﻗﻢ ﺑﻌﺮﺽ ﺭﻗﻢ ﺍﻟﺰﺑﻮﻥ‪ ،‬ﺍﲰﻪ‪ ،‬ﺃﺭﻗﺎﻡ ﺍﻟﻄﻠﺒﻴﺎﺕ ﻟﻜﺎﻓﺔ ﺍﻟﺰﺑﺎﺋﻦ‪ ،‬ﻣﻀﻤﻨﹰﺎ ﰲ ﻫﺬﻩ ﺍﻟﻘﺎﺋﻤﺔ ﺍﻟﺰﺑﺎﺋﻦ‬ ‫‪-9‬‬
‫ﺍﻟﺬﻳﻦ ﻻ ﳝﻠﻜﻮﻥ ﺃﻱ ﻃﻠﺒﻴﺔ ﰲ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ‪.‬‬
‫ﺃﻛﺘﺐ ﺍﺳﺘﻌﻼﻣﹰﺎ ﻳﺒﲔ ﻛﻞ ﻣﻨﺘﺞ‪ ،‬ﻭﺍﻟﻜﻤﻴﺔ ﺍﻟﻜﻠﻴﺔ ﺍﳌﻄﻠﻮﺑﺔ ﻣﻨﻪ‪ ،‬ﻣﻀﻤﻨﹰﺎ ﺍﳌﻨﺘﺠﺎﺕ ﺍﻟﱵ ﱂ ﻳﺘﻢ ﻃﻠﺒﻬﺎ‪.‬‬ ‫‪-10‬‬

‫ﺍﻋﺮﺽ ﻗﺎﺋﻤﺔ ﺑﻜﻞ ﺍﳌﻨﺘﺠﺎﺕ ﺍﻟﱵ ﰎ ﻃﻠﺒﻬﺎ ﻭﻋﺪﺩ ﻣﺮﺍﺕ ﻃﻠﺒﻬﺎ‪.‬‬ ‫‪-11‬‬

‫ﺍﻋـﺮﺽ ﺭﻗـﻢ ﺍﻟﻄﻠﺐ‪ ،‬ﺭﻗﻢ ﺍﳌﻨﺘﺞ‪ ،‬ﻭﻛﻤﻴﺔ ﺍﻟﻄﻠﺒﺎﺕ ﻟﻜﻞ ﻃﻠﺒﺎﺕ ﺍﻟﺰﺑﻮﻥ ﲝﻴﺚ ﺗﻜﻮﻥ ﻫﺬﻩ‬ ‫‪-12‬‬
‫ﺍﻟﻜﻤﻴﺔ ﺃﻋﻈﻢ ﻣﻦ ﺍﳌﺘﻮﺳﻂ ﺍﳊﺴﺎﰊ ﻟﻜﻤﻴﺔ ﻃﻠﺐ ﺫﻟﻚ ﺍﳌﻨﺘﺞ‪.‬‬

‫‪.ϡϼόΘγ΍ Ϧϣ ήΜϛ΃ ΐϠτΘϳ Ϊϗ ΍άϫ :ήϳάΤΗ‬‬

‫‪MEAB žK¥W‬‬
‫ﺍﲝﺚ ﰲ ﺑﲎ ﺍﳌﻌﺎﳉﺔ ﺍﳌﺴﺘﺨﺪﻣﺔ ﰲ ﺟﺎﻣﻌﺘﻚ‪ ،‬ﻗﻢ ﺑﺘﻌﻘﺐ ﺗﺎﺭﻳﺦ ﺍﳌﻌﺎﳉﺔ ﰲ ﺟﺎﻣﻌﺘﻚ ﻭﺣﺪﺩ‬ ‫‪-1‬‬
‫ﺍﻟﻄﺮﻳﻖ ﺍﻟﺬﻱ ﺍﺗﺒﻌﺘﻪ ﺍﳉﺎﻣﻌﺔ ﺣﱴ ﻭﺻﻠﺖ ﺇﱃ ﻫﻴﺌﺘﻬﺎ ﺍﳊﺎﻟﻴﺔ‪.‬‬
‫ﺑـﺪﺃﺕ ﺑﻌـﺾ ﺍﳉﺎﻣﻌـﺎﺕ ﺑﺸﻜﻞ ﻣﺒﻜﺮ ﻣﻊ ﺑﻴﺌﺎﺕ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻜﺒﲑﺓ ‪-‬ﻏﲑﻫﺎ ﺑﺪﺃﺕ ﻣﻊ‬
‫ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﺸﺨﺼﻴﺔ‪ .‬ﻫﻞ ﺑﺈﻣﻜﺎﻧﻚ ﺇﺧﺒﺎﺭﻧﺎ ﻛﻴﻒ ﺗﻘﻠﺪﺕ ﺑﻴﺌﺔ ﺍﳌﻌﺎﳉﺔ ﺍﻷﻭﻟﻴﺔ ﳉﺎﻣﻌﺘﻚ ﺑﻴﺌﺔ‬
‫ﺍﳌﻌﺎﳉﺔ ﺍﳊﺎﻟﻴﺔ؟‬
‫ﺍﲝﺚ ﰲ ﺑﻨﻴﺔ ﺍﳌﻌﺎﳉﺔ ﰲ ﺃﺣﺪ ﺍﻷﻗﺴﺎﻡ ﺍﳌﻮﺟﻮﺩﺓ ﰲ ﺟﺎﻣﻌﺘﻚ‪ .‬ﺣﺎﻭﻝ ﺃﻥ ﺗﻜﺘﺸﻒ ﻛﻴﻒ ﻟﺒ‪‬ﻰ‬ ‫‪-2‬‬
‫ﺍﻟﻨﻈﺎﻡ ﺍﳊﺎﱄ ﺍﺣﺘﻴﺎﺟﺎﺕ ﻣﻌﺎﳉﺔ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻘﺴﻢ‪.‬‬
‫ﻗـﻢ ﲟﻘﺎﺑﻠﺔ ﺧﺒﲑ ﺃﻧﻈﻤﺔ ﰲ ﺗﻨﻈﻴﻢ ﳎﺎﻭﺭ ﻟﻚ ﺗﻌﺮﻓﻪ ﲝﻴﺚ ﳝﻠﻚ ﻣﻜﺎﺗﺐ ﰲ ﺗﻨﻈﻴﻤﺎﺕ ﺃﺧﺮﻯ‪.‬‬ ‫‪-3‬‬
‫ﺣـﺪﺩ ﺑﻨـﻴﺔ ﺍﳌﻌﺎﳉﺔ ﰲ ﺫﻟﻚ ﺍﻟﺘﻨﻈﻴﻢ ﻭﺍﻛﺘﺸﻒ ﻛﻴﻒ ﻳﻠﱯ ﺍﻟﻨﻈﺎﻡ ﺍﳊﺎﱄ ﺍﺣﺘﻴﺎﺟﺎﺕ ﻣﻌﺎﳉﺔ‬
‫ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻘﺴﻢ‪.‬‬
‫ﺟﺪ ﺛﻼﺛﺔ ﻣﻮﺍﻗﻊ ﻋﻠﻰ ﺍﻟﻮﻳﺐ ﺍﻟﱵ ﲤﺘﻠﻚ ﺃﻧﻈﻤﺔ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺗﻔﺎﻋﻠﻴﺔ ﻣﺘﺼﻠﺔ ﻣﻊ ﺍﳌﻮﻗﻊ‪ .‬ﻗﻴﻢ‬ ‫‪-4‬‬
‫ﻭﻇﺎﺋﻔـﻴﺔ ﺍﳌﻮﻗﻊ ﻭﻧﺎﻗﺶ ﻛﻴﻒ ﻳﺆﺛﺮ ﻧﻈﺎﻡ ﻗﺎﻋﺪﺓ ﺍﳌﻌﻄﻴﺎﺕ ﺍﻟﺘﻔﺎﻋﻠﻲ ﻋﻠﻰ ﻫﺬﻩ ﺍﻟﻮﻇﺎﺋﻔﻴﺔ‪ .‬ﰲ‬
‫ﺣﺎﻝ ﱂ ﺗﻜﻦ ﻣﺘﺄﻛﺪﹰﺍ ﻣﻦ ﺃﻳﻦ ﺳﺘﺒﺪﺃ‪ ،‬ﺟﺮﺏ ﺍﳌﻮﻗﻊ ‪.http://www.amazon.com‬‬
‫‪577‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺟﺪ ﻋﻤﻠﲔ ﺻﻐﲑﻳﻦ ﻣﺘﺸﺎ‪‬ﲔ ﰲ ﻣﻨﻄﻘﺘﻚ‪ ،‬ﻳﺴﺘﺨﺪﻣﺎﻥ ﺃﻧﻈﻤﺔ ﻣﻌﺎﳉﺔ ﳐﺘﻠﻔﺔ ﳊﻔﻆ ﺳﺠﻼ‪‬ﺎ‪.‬‬ ‫‪-5‬‬
‫ﻗﺎﺭﻥ ﺑﲔ ﻭﻇﺎﺋﻔﻴﺔ ﻭﺳﻬﻮﻟﺔ ﺍﺳﺘﺨﺪﺍﻡ ﻛﻞ ﻣﻦ ﻫﺬﻳﻦ ﺍﻟﻨﻈﺎﻣﲔ‪.‬‬
‫ﺍﺗـﺼﻞ ﻣـﻊ ﳏﻠﻞ ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺃﻭ ﻣﻄﻮﺭ ﺃﻧﻈﻤﺔ ﰲ ﺗﻨﻈﻴﻢ ﻣﺎ‪ .‬ﺍﲝﺚ ﰲ ﺍﺳﺘﺨﺪﺍﻡ ﺃﻧﻈﻤﺔ‬ ‫‪-6‬‬
‫ﻗﺎﻋﺪﺓ ﻣﻌﻄﻴﺎﺕ ﺍﳌﺨﺪﻡ ﻭﺍﳊﺎﺳﺐ ﺍﻟﺸﺨﺼﻲ‪ .‬ﻣﺎ ﻫﻲ ﺍﻟﻌﻮﺍﻣﻞ ﺍﳌﻌﺘﱪﺓ ﰲ ﺍﺧﺘﻴﺎﺭ ﻣﻨﺼﺔ ﻗﺎﻋﺪﺓ‬
‫ﻣﻌﻄﻴﺎﺕ ﻣﺎ؟‬
‫ﻫﻞ ﻳﺴﺘﺨﺪﻡ ﺍﻟﺘﻨﻈﻴﻢ ﻣﻨﺼﺔ ﳐﺘﻠﻄﺔ؟ ﰲ ﺃﻱ ﻭﺣﺪﺍﺕ ﺗﻄﺒﻴﻖ ﻣﻌﺘﻤﺪﺓ ﻋﻠﻰ ﺍﻟﺰﺑﻮﻥ ﺗﻜﺘﺐ ﺑﻠﻐﺔ‬
‫ﻼ(؟ ﳌﺎﺫﺍ؟‬
‫ﻼ( ﻭﺗﻜﺘﺐ ﻭﺣﺪﺍﺕ ﺗﻄﺒﻴﻖ ﺍﳌﺨﺪﻡ ﰲ ﺃﺧﺮﻯ )‪ ،SQL‬ﻣﺜ ﹰ‬
‫ﻭﺍﺣﺪﺓ )‪ ،QBE‬ﻣﺜ ﹰ‬
‫›>‪a K›f8‬‬ ‫‪578‬‬

‫‪ljB<›MOUNTAIN VIEWk>7‬‬

‫‪­¹Y7&›cq‬‬
‫ﺗﻌﻠﻤﺖ ﰲ ‪‬ﺎﻳﺔ ﺍﻟﻔﺼﻞ ﺍﻟﺜﺎﱐ ﺩﺭﺍﺳﺔ ﺧﺎﺻﺔ ﻟﻠﻤﺸﻔﻰ ﻣﻦ ﻓﺮﻳﻖ ﺍﳌﺸﻔﻰ ﺍﻟﺬﻱ ﻳﻄﻮﺭ ﺧﻄﺔ ﻋﻤﻞ ﳌﺪﺓ‬
‫ﻃـﻮﻳﻠﺔ‪ .‬ﻟﻘـﺪ ﺃﺧﺬ ﺃﻋﻀﺎﺀ ﺍﻟﻔﺮﻳﻖ )‪ ،Dr.Jefferson ،Mr.Lopez ،Mr.Heller‬ﻭﺍﳌﺴﺘﺸﺎﺭ( ﺑﻌﲔ‬
‫ﺍﻻﻋﺘﺒﺎﺭ ﺍﺣﺘﻴﺎﺟﺎﺕ ﺍﳌﺸﻔﻰ ﺍﻟﺘﻘﻨﻴﺔ ﺍﳌﺴﺘﻘﺒﻠﻴﺔ‪ .‬ﰲ ﺍﻟﻮﻗﺖ ﺍﳊﺎﱄ‪ ،‬ﳚﺐ ﻋﻠﻰ ﺍﳌﺮﺿﻰ ﺍﻟﺘﻔﺎﻭﺽ ﻋﻠﻰ‬
‫ﻣﺘﺎﻫﺔ ﺧﻄﻂ ﺍﻟﺼﺤﺔ‪ ،‬ﺍﳌﺸﺮﻓﲔ‪ ،‬ﺍﻟﻌﻴﺎﺩﺍﺕ ﺍﻟﻄﺒﻴﺔ‪ ،‬ﺑﺸﻜﻞ ﻣﺸﺎﺑﻪ ﻟﻠﻤﺘﺎﻫﺔ ﺍﳌﻮﺿﺤﺔ ﰲ ﺍﻟﺸﻜﻞ )‪(1‬‬
‫ﺳـﲑﻏﺒﻮﻥ ﺑﺈﳚﺎﺩ ﻧﻈﺎﻡ ﻟﻠﻤﺸﻔﻰ ﻳﺪﻣﺞ ﻛﻞ ﻫﺬﻩ ﺍﳌﻌﻄﻴﺎﺕ‪ ،‬ﻣﻌﻄﻴﺎﺕ ﻣﻦ ﺧﻄﻂ ﺍﻟﺼﺤﺔ‪ ،‬ﺍﻷﻃﺒﺎﺀ‪،‬‬
‫ﻭﺃﻧﻈﻤﺔ ﺍﳌﺸﻔﻰ‪ ،‬ﻟﺬﻟﻚ ﺳﺘﻔﻌﻞ ﻣﻌﻠﻮﻣﺎﺕ ﺍﻟﻮﻗﺖ ﺍﳊﻘﻴﻘﻲ ﺍﻟﺼﺤﻴﺤﺔ‪.‬‬

‫‪ϰϔθϤϠϟ ΔϴϟΎΤϟ΍ ΔϴϨϘΘϟ΍ ΓΪϋΎϘϟ΍ (1) ϞϜθϟ΍‬‬

‫ﲰـﺢ ﺃﻋـﻀﺎﺀ ﺍﻟﻔﺮﻳﻖ ﺃﻥ ﺍﻟﻌﺪﻳﺪ ﻣﻦ ﺍﳌﺸﺎﰲ ﺑﺪﺃ ﺑﺘﺤﻮﻳﻞ ﺃﻧﻈﻤﺔ ﺍﳊﺎﺳﺒﺎﺕ ﺍﻟﻜﺒﲑﺓ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺇﱃ‬
‫ﺃﻧﻈﻤﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﺟﺪﻳﺪﺓ‪ .‬ﻭﻗﺪ ﲰﻌﻮﺍ ﺃ‪‬ﺎ ﺗﻘﺪﻡ ﻣﺮﻭﻧﺔ ﻣﺘﺰﺍﻳﺪﺓ‪ ،‬ﺗﻜﺎﻣﻠﻴﺔ‪ ،‬ﻭﻭﻇﺎﺋﻔﻴﺔ‪.‬‬
‫ﺗـﺴﺎﺀﻟﻮﺍ ﻓـﻴﻤﺎ ﺇﺫﺍ ﳝﻜﻨﻬﻢ ﺇﻧﺸﺎﺀ ﻣﻌﺎﳉﺔ ﻣﺸﺎ‪‬ﺔ ﰲ ﻫﺬﺍ ﺍﳌﺸﻔﻰ ﻟﺘﺤﺴﲔ ﺍﻟﻨﺠﺎﺡ ﻭﺩﻋﻢ ﺃﻧﻈﻤﺔ‬
‫ﺍﳌﺸﻔﻰ ﺍﶈﺴﻨﺔ‪ .‬ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﰲ ﺍﻟﺸﻜﻞ )‪ .(2‬ﻹﳒﺎﺯ ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ‪ ،‬ﺍﻓﺘﺮﺽ ﺍﻟﻔﺮﻳﻖ‬
‫ﺛﻼﺛﺔ ﺍﺳﺘﺮﺍﺗﻴﺠﻴﺎﺕ ﳐﺘﻠﻔﺔ ﻣﻮﺻﻔﺔ ﰲ ﺍﻟﻔﻘﺮﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﺍﻻﻓﺘـﺮﺍﺽ ﺍﻷﻭﻝ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﺣﺰﻡ ﺗﻄﺒﻴﻖ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻣﻮﺟﻮﺩﺓ ﻭﺗﻜﻴﻴﻔﻬﺎ ﻟﺘﻨﺎﺳﺐ ﺍﳌﺸﻔﻰ‪ .‬ﺇﻥ‬
‫ﺇﺗﺒﺎﻉ ﻫﺬﻩ ﺍﻟﻄﺮﻳﻘﺔ ﺗﺴﻤﺢ ﳍﻴﺌﺔ ‪ MIS‬ﻟﺘﻜﻮﻥ ﻣﺸﺎ‪‬ﺔ ﻟﻠﺠﺰﺀ ﺍﻟﻔﺎﺻﻞ ﻣﻦ ﺑﻴﺌﺔ ﳐﺪﻡ‪/‬ﺯﺑﻮﻥ ﻣﺜﻞ ﺇﺩﺍﺭﺓ‬
‫‪579‬‬ ‫‪·j¦…¶WážKE:<W ›jME9‬‬

‫ﺍﻟـﺸﺒﻜﺔ‪ ،‬ﺇﺩﺍﺭﺓ ﺗـﺸﻜﻴﻠﺔ ‪ ،PC‬ﻭﺇﺩﺍﺭﺓ ﺍﻷﻧﻈﻤﺔ ﺍﳌﻮﺯﻋﺔ‪ ،‬ﺑﺪﻭﻥ ﺍﳊﺎﺟﺔ ﺇﱃ ﺇﺩﺍﺭﺓ ﻣﻮﺿﻮﻉ ﺗﻄﻮﻳﺮ‬
‫ﺃﻧﻈﻤﺔ ﺍ‪‬ﺎﻝ ﺍﻟﻜﺒﲑ‪ ،‬ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺃﻋﻤﺎﳍﻢ ﺍﳊﺎﻟﻴﺔ‪ .‬ﰎ ﻓﺤﺺ ﻣﻌﻈﻢ ﺍﳊﺰﻡ‪ .‬ﻋﻠﻰ ﺃﻳﺔ ﺣﺎﻝ‪ ،‬ﻳﺘﻄﻠﺐ‬
‫ﺍﺳﺘﺨﺪﺍﻡ ﺍﻟﱪﺍﻣﺞ ﺍﻟﻮﺳﻴﻄﺔ ﻟﺘﺤﻘﻴﻖ ﺍﺗﺼﺎﻻﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ‪ ،‬ﻳﺘﻮﻗﻊ ﺍﳌﺸﻔﻰ ﺗﻮﺟﺐ ﺍﻻﺗﺼﺎﻝ ﺍﳌﺴﺘﻤﺮ‬
‫ﻣﻊ ﺍﻷﻧﻈﻤﺔ ﺍﻟﺘﻘﻠﻴﺪﻳﺔ ﺍﻟﺴﺎﺑﻘﺔ ﻣﻦ ﺧﻼﻝ ﳐﺪﻣﺎﺕ ﻣﻮﻇﻔﺔ ﻟﺬﻟﻚ‪ ،‬ﻓﺮﻳﻖ ﺍﻟﻌﻤﻞ ﻏﲑ ﻣﺘﺄﻛﺪ ﻣﻦ ﻋﺪﺩ‬
‫ﺍﻟﱪﺍﻣﺞ ﺍﳌﻤﻜﻨﺔ ﺍﻟﱵ ﺳﺘﺴﻤﺢ ﳍﻢ ﺑﺎﻻﻧﺘﻘﺎﻝ ﺍﳌﻄﻠﻮﺏ‪.‬‬

‫‪ΔϋίϮϣ ϞϴϤϋ/ϡΪΨϣ ΔϴϨΑ (2) ϞϜθϟ΍‬‬

‫ﺍﻻﺣﺘﻤﺎﻝ ﺍﻵﺧﺮ ﻫﻮ ﺍﻓﺘﺮﺍﺽ ﻓﺮﻳﻖ ﺍﻟﺘﺨﻄﻴﻂ ﺗﻄﻮﻳﺮ ﺗﻘﻠﻴﺪﻱ‪ .‬ﺗﻌﻬﺪﺕ ﺑﻌﺾ ﺍﳌﺸﺎﰲ ﺗﻄﻮﻳﺮ ﺗﻘﻠﻴﺪﻱ‬
‫ﻷﻧﻈﻤـﺔ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻟﺪﻳﻬﺎ‪ ،‬ﺁﺧﺬﻳﻦ ﺑﻌﲔ ﺍﻻﻋﺘﺒﺎﺭ ﺍﻷﺧﻄﺎﺭ ﺍﳊﺎﺻﻠﺔ ﻟﻜﻦ ﺗﺮﺍﻋﻲ ﺍﳌﺸﺎﰲ ﺍﻷﻛﱪ‬
‫ﻫﺬﻩ ﺍﻷﺧﻄﺎﺭ ﺑﺎﻹﺿﺎﻓﺔ ﺇﱃ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﺍﳌﻌﻄﻴﺎﺕ ﻭﺍﳌﻌﻠﻮﻣﺎﺕ ﻋﻨﺪﻣﺎ ﲢﺘﺎﺟﻬﺎ‪.‬‬
‫ﺍﻻﺣﺘﻤﺎﻝ ﺍﻷﺧﲑ ﻳﻌﺘﱪ ﻃﺒﻘﺔ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﰲ ﻗﻤﺔ ﺍﻷﻧﻈﻤﺔ ﺍﳌﻮﺟﻮﺩﺓ‪ .‬ﺳﺘﺴﺘﺨﺪﻡ ﺗﻄﺒﻴﻘﺎﺕ‬
‫ﳎـﺮﻯ ﺍﻟﻌﻤـﻞ ﻟﺘﺴﻬﻴﻞ ﺗﺄﺳﻴﺲ ﻭﺍﺟﻬﺔ ﺍﻟﻄﺮﻑ ﺍﻷﻣﺎﻣﻲ‪ ،‬ﺳﺘﻜﻮﻥ ﺍﳊﺎﺟﺔ ﺇﱃ ﺍﻻﺗﺼﺎﻝ ﲟﺴﺘﻮﺩﻉ‬
‫ﺍﳌﻌﻄـﻴﺎﺕ ﻇﺎﻫﺮﺓ ﻛﻌﻤﻞ ﺍﻟﻔﺮﻳﻖ ﰲ ﺍﳋﻄﺔ ﺫﺍﺕ ﺍﳌﺪﻯ ﺍﻟﻄﻮﻳﻞ‪ ،‬ﻭﻳﺮﻳﺪ ﺍﻟﻔﺮﻳﻖ ﲣﻄﻴﻂ ﺍﻟﺒﻨﻴﺔ ﺍﻵﻥ‪،‬‬
‫ﻟﺬﻟﻚ ﺳﻴﻜﻮﻥ ﺗﺄﺳﻴﺲ ﻣﺴﺘﻮﺩﻉ ﻣﻌﻄﻴﺎﺕ ﺳﻬﻞ ﻭﳑﻜﻨﹰﺎ‪.‬‬
‫ﻃـﺒﻌﹰﺎ ﺳـﻴﺘﺨﺬ ﺍﳌﺸﻔﻰ ﻧﻈﺎﻡ ﻣﻌﺘﻤﺪ ﻋﻠﻰ ﺍﻟﻮﻳﺐ‪ .‬ﻳﻮﺳﻊ ﺍﲢﺎﺩ ﺭﻋﺎﻳﺔ ﺍﻟﺼﺤﺔ ﺃﻋﻀﺎﺀﻩ ﻭﺧﺪﻣﺎﺕ‬
‫ﺍﳌﺮﺿـﻰ ﺇﱃ ﻣﺎ ﺑﻌﺪ ﺍﳊﺪﻭﺩ ﺍﻟﺘﻨﻈﻴﻤﻴﺔ‪ ،‬ﻷﻣﺎﻛﻦ ﺍﻟﻌﻤﻞ‪ ،‬ﺍﳌﺪﺍﺭﺱ‪ ،‬ﻭﺍﳌﻨﺎﺯﻝ‪ .‬ﻳﺴﺘﻄﻴﻊ ﺃﻋﻀﺎﺀ ﺧﻄﺔ‬
‫ﺍﻟﺼﺤﺔ ﻓﺤﺺ ﺣﺎﻻﺕ ﻃﺎﻟﺒﻴﻬﺎ‪.‬‬
‫›>‪a K›f8‬‬ ‫‪580‬‬

‫ﺍﻷﻋـﻀﺎﺀ ﻏـﲑ ﻭﺍﺛﻘـﻮﻥ ﻣﻦ ﺗﺄﺛﲑ ﻫﺬﻩ ﺍﳋﺪﻣﺎﺕ ﺍﳉﺪﻳﺪﺓ‪ .‬ﻟﻜﻨﻬﻢ ﻳﺘﻮﻗﻌﻮﻥ ﺃﻧﻪ ﺳﺘﻜﻮﻥ ﺍﳌﺸﺎﰲ‬
‫ﺍﻷﺧـﺮﻯ ﺳـﺮﻳﻌﺔ ﻻﲣﺎﺫ ﻭﲢﺴﲔ ﻫﺬﻩ ﺍﳌﻴﺰﺍﺕ‪ .‬ﻳﻘﻮﻡ ﺍﻷﻋﻀﺎﺀ ﺍﻵﻥ ﺑﺘﻘﻴﻴﻢ ﻫﺬﻩ ﺍﳋﻴﺎﺭﺍﺕ ﻟﻜﻦ‬
‫ﺍﻟﺒﺤﺚ ﻻ ﻳﺰﺍﻝ ﻣﺴﺘﻤﺮﹰﺍ ﺣﱴ ‪‬ﺎﻳﺔ ﺍﻟﻔﺼﻞ ﺍﻟﻌﺎﺷﺮ‪.‬‬

‫— ‪­¹Y7&›MA‬‬
‫ﳌﺎﺫﺍ ﺗﻈﻦ ﺃﻥ ﺃﻋﻀﺎﺀ ﻓﺮﻳﻖ ﺍﳌﺸﻔﻰ ﻳﺸﻌﺮﻭﻥ ﺑﻮﺟﻮﺩ ﺧﻄﺮ ﰲ ﺑﻨﺎﺀ ﺗﻄﺒﻴﻘﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ؟‬ ‫‪-1‬‬

‫ﻣـﺎ ﻫﻲ ﺍﺣﺘﻤﺎﻻﺕ ﻣﻌﺎﳉﺔ ﻭﺗﻘﺪﱘ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻟﱵ ﺳﺘﻈﻬﺮ ﰲ ﺍﳌﺸﻔﻰ ﺣﱴ ﻳﺘﻢ ﻧﻘﻠﻪ ﺇﱃ ﺑﻴﺌﺔ‬ ‫‪-2‬‬
‫ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ؟‬
‫ﻣـﺎ ﻫـﻲ ﺍﻟﻨـﺸﺎﻃﺎﺕ ﺍﻟـﱵ ﳚﺐ ﲣﻄﻴﻄﻬﺎ ﰲ ﺣﺎﻝ ﻗﺮﺭ ﺍﳌﺸﻔﻰ ﺍﲣﺎﺫ ﻭﺗﻄﺒﻴﻖ ﺗﻄﺒﻴﻘﺎﺕ‬ ‫‪-3‬‬
‫ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ؟ ﺍﺧﺘﺮ ﺃﺣﺪﻫﺎ‪ ،‬ﻣﺜﻞ ﻧﻈﺎﻡ ﻓﻮﺗﺮﺓ ﺍﳌﺮﺿﻰ‪ ،‬ﻭﻓﻜﺮ ﺣﻮﻝ ﻣﺎ ﳚﺐ ﺗﻀﻤﻨﻪ ﰲ ﺍﺧﺘﻴﺎﺭ‪،‬‬
‫ﺗﺄﺳﻴﺲ‪ ،‬ﻭﺍﺳﺘﺨﺪﺍﻡ ﻣﺜﻞ ﻫﺬﺍ ﺍﻟﻨﻈﺎﻡ‪.‬‬
‫ﻣـﺎ ﻫـﻲ ﺍﳌﻴـﺰﺍﺕ ﻭﺍﻟـﺴﻴﺌﺎﺕ ﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﲡﺪﻫﺎ ﰲ ﺍﻟﻄﺮﻳﻘﺔ ﺍﻟﺜﺎﻟﺜﺔ‪ ،‬ﺑﻔﺼﻞ ﺗﻄﺒﻴﻘﺎﺕ‬ ‫‪-4‬‬
‫ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻭﻭﺿﻌﻬﺎ ﰲ ﻗﻤﺔ ﺍﻷﻧﻈﻤﺔ ﺍﳌﻮﺟﻮﺩﺓ؟‬
‫ﻣﺎ ﻫﻲ ﺍﳌﻴﺰﺍﺕ ﻭﺍﻟﺴﻴﺌﺎﺕ ﺍﻟﱵ ﳝﻜﻦ ﺃﻥ ﲡﺪﻫﺎ ﻣﻦ ﺇﺑﻘﺎﺀ ﺍﳌﺸﻔﻰ ﺑﺄﻧﻈﻤﺘﻬﺎ ﺍﳊﺎﻟﻴﺔ ﺣﱴ ﺍﻟﺴﻨﺘﲔ‬ ‫‪-5‬‬
‫ﺍﻟﻘﺎﺩﻣﺘﲔ؟‬

‫‪­¹Y7&›žK¥W‬‬
‫ﻣﺎﺫﺍ ﺗﺮﻯ ﻣﻦ ﺃﺟﻞ ﺍﻻﻧﺘﻘﺎﻝ ﺇﱃ ﺑﻴﺌﺎﺕ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ )ﺍﻟﻄﺮﻕ ﺍﻷﺭﺑﻌﺔ(‪:‬‬ ‫‪-1‬‬

‫ﺗﻘﻠـﻴﺪ ﺍﻷﻧﻈﻤﺔ ﺍﳌﻬﻤﻠﺔ )‪ ،(COTs‬ﺗﻘﻠﻴﺪ ﺗﻄﻮﻳﺮ ﻧﻈﺎﻡ‪ ،‬ﺍﻹﺣﺎﻃﺔ ﻭﺍﻟﺘﻘﺴﻴﻢ ﺇﱃ ﻃﺒﻘﺎﺕ‪ ،‬ﻭﻋﺪﻡ‬
‫ﺍﻟﻘﻴﺎﻡ ﺑﺄﻱ ﺷﻲﺀ ﳌﺪﺓ ﻗﺼﲑﺓ‪.‬‬
‫ﺍﻵﻥ‪ ،‬ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﻟﻘﻮﺍﺋﻢ ﺍﳌﻄﻮﺭﺓ ﰲ ﲤﺮﻳﻦ ﺍﳌﺸﺮﻭﻉ ﺍﻷﻭﻝ‪ ،‬ﺣﺪﺩ ﺃﻱ ﺣﻞ ﺗﺸﻌﺮ ﺑﺄﻥ ﺍﳌﺸﻔﻰ‬ ‫‪-2‬‬
‫ﺳـﻴﻘﻮﻡ ﺑﺘﺠـﺮﻳﺒﻪ‪ ،‬ﻋﻠـﻞ ﺟﻮﺍﺑﻚ‪ .‬ﺣﺪﺩ ﺍﳌﻌﻠﻮﻣﺎﺕ ﺍﻹﺿﺎﻓﻴﺔ ﺍﻟﱵ ﺗﺮﻏﺐ ﺑﺎﳊﺼﻮﻝ ﻋﻠﻴﻬﺎ‬
‫ﳌﺴﺎﻋﺪﺗﻚ ﰲ ﺍﻹﺟﺎﺑﺔ‪.‬‬
‫ﺣﺎﻭﻝ ﺍﳊﺼﻮﻝ ﻋﻠﻰ ﺑﻌﺾ ﺍﳌﻌﻠﻮﻣﺎﺕ ﻋﻦ ﺃﻧﻈﻤﺔ ﻣﺸﻔﻰ ﳐﺪﻡ‪/‬ﻋﻤﻴﻞ ﻣﺜﻞ ‪.symphonia by orion‬‬ ‫‪-3‬‬

‫ﻋﺪﺩ ﺍﻟﺘﻨﺼﻴﺒﺎﺕ‪ ،‬ﻧﻈﺎﻡ ﺍﻟﺘﺸﻐﻴﻞ ﺍﻟﻌﻤﻴﻞ ﺍﳌﺴﺘﺨﺪﻡ‪ ،‬ﻭﻫﻜﺬﺍ‪ .‬ﺣﺪﺩ ﺃﻱ ﻣﻦ ﺍﻷﻧﻈﻤﺔ ﻗﺪ ﻭﺟﺪﺗﻪ‬
‫ﻭﺗﻌﻠﻤﺘﻪ ﻭﻗﺪ ﻳﻬﻢ ﺍﳌﺸﻔﻰ‪.‬‬

You might also like