Sei sulla pagina 1di 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‬‬

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

Potrebbero piacerti anche