العودة   منتديات طلاب الجامعة العربية المفتوحة > منتدى كليات الجامعة العربية المفتوحة > منتدى تقنية المعلومات والحاسوب > T471

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع

قديم 18-06-2007, 09:38 PM   #1
د لـهــــا م د لـهــــا م غير متصل
طــالب
 
الصورة الرمزية د لـهــــا م

 










افتراضي تعلم SQL Server 2005 بالصور


بسم الله الرحمن الرحيم

لمن يريد ان يستخدم Microsoft SQL server في بناء مشروعه

هنا شرح بسيط اتمنى ان يفيد الجميع ... واتمنى صادق الدعوات لصاحبه ebnelbana2000

فكثيرا ما يبحث المبرمج العربي عن الجديد ولكن لا يجده في الصفحات العربية إلا بعد أن يصبح قديما
وإن وجده سيجد نبذات عنه ولا يجد ما يغنيه
لذلك قررت بمشيئة الله عمل دورة مركزة لتعليم sqlserver 2005 من البداية أي أنني سأشرح كل شيء عن قواعد البيانات وسأطبق ذلك بإستخدام أدوات sqlserver 2005 الجديدة

-حاول أن تطبق ما تتعلمه سريعا وتذكر أن علمك هذا هو مستقبلك فيجب أن تجتهد في إتقانه
والله من وراء القصد وهو يهدي السبيل

خطة الشرح بإذن الله كالتالي في خطوط عريضة :

أولا : شرح أدوات التطوير والإدارة " Administration and Development Tools " .

ثانيا : إنشاء قواعد البيانات وكل ما يتعلق بها .

ثالثا : كيفية حماية هذه القاعدة .

رابعا : إنشاء الجداول وكل ما يتعلق بها .

خامسا : إنشاء الفهارس لقاعدة البيانات " indexes " .

سادسا : كيفية رسم مخطط لقاعدة بياناتك .

سابعا : كيفية إنشاء نسخة إحتياطية من قاعدة البيانات وكيفية إسترجاعها .

ثامنا : كيفية صيانة قاعدة بياناتك .

تاسعا : التعامل مع قاعدة البيانات بالإضافة والتعديل والإختيار والبحث والحذف .

عاشرا : إنشاء جداول العرض من قاعدة البيانات " Views " .

الحادي عشر : الإجرائات المخزنة " Stored Procedures " .

الثاني عشر : لغة transact - sql والقديم والجديد فيها .

الثالث عشر : الـ Triggers " لمن لا يعرفها -- وهي عبارة عن محفزات لتنفيز أمر معين ينفذ على قاعدة البيانات في وقت معين " .

الرابع عشر : إنشاء التقارير في SQL Server 2005 وكل جديد فيها " Reporting Services " .

الخامس عشر : تعامل الـ SQL Server 2005 مع الـ Net.

السادس عشر : التركيز على xml وتعامله مع SQL Server 2005 وكيفية الإستفادة منه .

- بعد ذلك سنركز بإذن الله على الذكاء التجاري " Business Intelligence " من خلال خدماته الثلاثة :

السابع عشر : خدمات تجميع البيانات " Integration Services " .

الثامن عشر : خدمات التحليل " Analysis Services " .

التاسع عشر : خدمة التقارير " Reporting Services " والتى أشرنا إليها في النقطة الرابعة عشر ولكن هنا سنستخدمها بمنطق مختلف .

- بعد ذلك بإذن الله سنشرع في شرح الجديد من أدوات الأدمن والتحكم في طريقة عمل قاعدة البيانات وسريتها :

العشرون : إستخدام المساعد الآلي في إنجاز الأعمال بدلا عنك " SQL Server Agent " .

الحادي والعشرين : خطط الصيانة " Maintenance Plans " .

التاني والعشرين : إستخدام محث الدوس للوصول لقاعدة البيانات " SQLCMD " .

الثالث والعشرين : كيف تجعل قاعدة البيانات تقوم بإرسال إيميلات إلكترونية " Database Mail " .

الرابع والعشرين : وسيط الخدمات أو سمسار الخدمات " Service Broker " وهو إضافة متميزة في SQL Server 2005 حيث يتولى الإتصال والتخاطب مع قواعد البينات الأخرى ويريح قاعدة بياناتك من مشاكل هذا التخاطب .. " كأن تقوم مثلا قاعدة بيناتك بإرسال طلب شراء نصف كيلوا جبنة بيضاء من قاعدة بيانات السوبر ماركت الكائن تحت منزلكم ويكون السوبر ماركت مغلق .. وهنا سيتولى السمسار متابعة هذا الطلب دون إنتظار من قاعدة بياناتك " .


سنبدأ بإذن الله بالتنويه على بعض الجديد في sqlserver 2005 والذي سنشرحه بالتفصيل في حينه بإذن الله
ثم نشرع في شرح الأدوات الجديدة القادمة مع sqlserver 2005 والتى سنصاحبها طيلة عملنا مع السيرفر ونرى ما الجديد الذى أضافته ميكروسوفت في هذه الأدوات وسأحاول تدعيم الشرح بالصور على قدر إستطاعتي .

الجديد في sqlserver 2005


- إستخدام net framwork. و sqlclr لكتابة الإجرائات المخزنة stored procedures وغيرها من الجمل البرمجية مثل user-defined functions, triggers, aggregates, user-defined types وكأنك تكتب برنامج في Visual Studio 2005 بأي لغاته التى تروق لك .. إذا وبعد أن كان sqlserver 2000 سيرفر قواعد بينات يعيبه أنه ليس له واجهة تصميمية برمجية لإنشاء الواجهة الأمامية للمستخدم للتعامل مع قاعدة البيانات كما في oracle أصبحت الآن Visual Studio 2005 بما فيها من قوة وتوافقية مع SQL Server 2005 هي واجهة تطبيقه الأمامية بصدق وسهولة وإمكانية إستخدام مكتبتها البرمجية في كتابة الكود جمبا بجنب مع الـ transact-sql وهي اللغة البرمجية لل SQL Server 2005 .


- دعم جديد ومتميز للـ xml .. فهي الأن نوع جديد للبيانات المخزنة داخل الـ SQL Server 2005 مثل int , string أي عندما تنشأ جدولك حدد أن هذا الصف سيحتوى على xml ليس هذا فقط ولكن يمكنك البحث فيه عن طريق لغة الإستعلام داخل الـ xml المسماه xquery .. هل تعرف ماذا يعني ذلك .. يعني أنه يمكنك تخزين ملفاتك التى تحتوى على بيانات مخزنة داخل xml مع قواعد بياناتك في الـ SQL Server 2005 بل والبحث فيها كأنها في ملف خارجي بل أفضل .. هذا يعني كثيرا لمن يتعاملون مع ملفات الـ xml في عملهم وفي نقل بيناتهم .


- الآن في النسخة الـ Enterprise يمكنك تشغيل 50 نسخة من SQL Server 2005 على نفس المكنة " لازم تبقى مكنة جبارة أنا مشغل نسخة واحدة عاندي بالعافية " وذلك مفيد وموفر لشركات الـ hosting بعد أنا كان SQL Server 2000 يسمح بحد أقصى 16 نسخة .


- يمكنك الآن الوصول للـ SQL Server 2005 عن طريق الـ http مباشرة دون على الـ iis وذلك سيفتح مجالات كبيرة جدا للعمل مع الـ web service و الـ SOAP protocol .


- الآن يمكنك تغيير مكان ملفات الـ data و الـ log من مكانهم إلي أنشئا فيه إلى أي مكان آخر تحبه " وقاعدة البيانات غير مستعملة طبعا " وتخبر قاعدة البيانات بهذا التغيير بألتر بسيط .. كما يلي :

كود:
ALTER DATABASE <database_name>
 MODIFY FILE(name=<'data_file_name'>, filename=<'new path'>)
- جداول النظام أصبحت الآن منفصلة في مجلد مستقل وأحيطت بمزيد من الحماية

- حدث بعض التطوير على إستخدام كلمة السر لمستخدم قاعدة البيانات حيث يمكنك تحديد مقدارها لجعل المستخدم ينشأ كلمة سر أكثر صعوبة ، وكذلك يمكنك جعل كلمة السر تنتهي كل فترة وتجبر مستخدم قاعدة البيانات أن يقوم بتحديثها .. وكذلك أيضا يمكنك تحديد عدد مرات لإدخال كلمة سر خاطئة وبعدها يتم إغلاق قاعدة البيانات .


- تم تطوير لإمكانية تحكم مدير قاعدة البيانات في إعطاء الصلاحيات ، فأصبحت الصلاحيات المعطاة للمستخدمين أكثر دقة وتحديدا .. "

- يمكنك الآن أخذ صورة من قاعدة البيانات كل فترة معينة " Snapshot " وهى عبارة عن نسخة للقراءة فقط يمكنك العودة إليها إذا حدث عيب في قاعدة البيانات ، أو يمكنك إستخدامها لتوليد تقارير عن قاعدة البيانات كل فترة .


- هناك بالطبع أشياء أخرى جديدة " إنها خمس سنوات من التطوير " وسنشرح كل جديد عندما يعترض لنا في الشرح بإذن الله .
يمكنك تنزيل نسختك المجانية والتى تعمل لمدة 6 شهور من هنا

http://www.microsoft.com/sql/evaluation/trial]

بسم الله نبدأ :

أولا : شرح أدوات التطوير والإدارة " Administration and Development Tools " :

- بصدق التعامل مع قواعد البيانات في SQL Server 2005 بقى أيسر وأجمل .. فبالطبع كل من تعامل مع SQL Server 2000 قد تعامل مع الـ SQL Server Enterprise Manager للتعامل مع قواعد البيانات ، Query Analyzer لكتابة الكود وتنفيذه .. الآن تم دمج الآداتين في الآداه الأساسية بحق في SQL Server 2005 وهي SQL Server Management Studio وبيطلقوا عليه " ssms " .. وأنا بتعامل معاه بحس إني بتعامل مع برنامج access من السهولة وكذلك بحس بالقوة القديمة للـ Enterprise Manager ، Query Analyzer .


هيا للعرض ..

بعد إنزال الـ SQL Server 2005 على جهازك .. إذهب إلى start ثم programs ثم Microsoft SQL Server 2005 ثم SQL Server Management Studio كما في الصورة .

بعد ذلك قم بالإتصال بالسيرفر بالطريقة المعتادة ... وإن كنت على نفس الجهاز إضغط connect

هذه هيه واجهة SQL Server Management Studio التى ستجدها أمامك طيلة عملك مع الـ SQL Server 2005

التعديل الأخير تم بواسطة د لـهــــا م ; 18-06-2007 الساعة 10:06 PM
د لـهــــا م غير متصل   رد مع اقتباس
قديم 18-06-2007, 09:48 PM   #2
د لـهــــا م د لـهــــا م غير متصل
طــالب
 
الصورة الرمزية د لـهــــا م

 










افتراضي رد: تعلم SQL Server 2005 بالصور


قم بالنقر على علامة الزائد بجوار databases لترى أن قواعد بينات النظام قد وضعت بمفردها في مجلد System Databases والصور التى تأخذها من قاعدة بيناتك في المجلد Databases Snapshots وأسفل ذلك ستجد قواعد بيناتك ومعهم قاعدة البيانات التدريبية الجديدة AdventureWork





وأسفل قاعدة البيانات ستجد كل ما لذ وطاب من أدواتك من جداول وجمل برمجية وتخطيط وكل شيء لتصل إليه بسهولة ويسر .. وبالطبع كل ما نقرت على شيء ستظهر تفاصيله في النافذه اليمنى كما في النسخة السابقة .





- وبالطبع ولأن بيئة عمل SQL Server 2005 مبنية على بيئة عمل Visual Studio 2005
فكل إمكانيات التحكم في العرض والنوافذ والتنقل موجودة كما هي في SQL Server 2005 .. فمثلا يمكنك النقر نقرا مزدوجا على نافذة Object Explorer لتنفصل بمفردها ثم تسحبها وتدرجها في أي ناحية من الشاشة تريد .. كما في الصور :






-- إلعب ونظم براحتك ولو أردت العودة للتنسيق الإفتراضي كل ما عليك هو الذهاب للقائمة
Window ثم إضغط Reset Window Layout

- ولكن ماذا عن Query Analyzer وكتابة الكود والذي منه .. كل ما عليك أن تنقر زر New Query من أعلى اليسار لتجد نافذة الكود على يمينك .. واكتب يا سيدي كود زي ما إنت عايز .





هل لاحظت أن نافذة الكود فتحت في tab جديد وأنه يمكنك التنقل بيسر بين الصفحات المفتوحة .. والجميل أنه يمكنك العودة للنظام القديم لو أردت ..
من Tools ثم Options ومن General أسفل Environment يمكنك إختيار MDI environment بدلا من Tabbed ******** والنتيجة كما في الصورة :




ومن النافذة options هذه يمكنك التعديل والتغيير كثيرا في مظهر واجهتك وتغيير ألوان وأحجام الخطوط والأزرار النشطة في لوحة المفاتيح وكيفية التعامل مع المساعدة وغير ذلك الكثير .. من الجميل أن تجرب ذلك بنفسك .. ولا تخشي من شيء

-- من الأشياء الجميلة في الـ ssms صفحة الـ Sammery وكل ما تشمله من معلومات عن العنصر المحدد من النافذة Object Explorer وأهم هذه المعلومات هي المعلومات التى ستعرفها عن طريق نقر زر التقرير Report والذي سيعطيك تقارير نصية ورسومية عن كل شيء مرتبط بالعنصر المحدد السيرفر كان أو قاعدة البيانات أو جدول محدد .. إختار نوع التقرير الذي تريد بالنقر على السهم المجاور للزر .. لتعرف متى وأين ومن .. كل شيء حدث لهذا العنصر ومقدار كفائته وإنجازه .. تصفح وجرب وشوف قمة الرفاهية




-- نرجع شوية لكتابة الكود .. حيث يمكنك الآن كتابة الكود في الـ ssms وأنت غير متصل بالسيرفر ويطلب منك الإتصال فقط عند طلب تنفيذ الكود وتطبيقه على قاعدة البيانات وهذه الخاصية لم تكن موجودة في 2000 حيث كان لابد من الإتصال بالسرفر لكتابة الكود .

-- أما عن التيسير في كتابة الكود فحدث ولا حرج : وأهم حاجة في القصة دي وإلي حتخليك تطير من الفرحة هي نافذة الـ Temmplate Explorer إلي مليانة كود جاهز لمعظم الجمل البرمجية وكل ما عليك هو سحب ما تريد وإفلاته في المكان الذي تريد في كودك .. وتعديل الأسماء والجداول والمتغيرات بما يناسبك .. بجد كانت مشكلة عاندي إني أنسى حرف أو أنسى الجملة البرمجية .. بس الآن البرمجة بجد بقة متعة .

من قائمة View إنقر Temmplate Explorer
وتصفح الجمل البرمجية




كل ما عليك الذهاب إلى قائمة query ثم ... Specify Values For Tmplate Parameters




وهنا سيحضر لك كل المتغيرات غير المحددة في كودك المظلل الآن والذي أتيت به من نافذة Temmplate Explorer



عندما تجد شيء مبهم فلا تتأزم .. كل ما عليك هو تحديد إسم هذا الشيء من الكود أو إختياره من الأدوات ونقر زر F1 لتجد sql server 2005 أتى لك بكل شيء عنه من الإنترنت أو من المساعدة الموجودة على جهازك على حسب إختيارك .. ونصيحتي أن تستخدم هذا الأمر كثيرا لتلم بكل جديد وتنجز عملك بشكل أفضل ..

** سنتعامل مع الـ ssms كثيرا أثناء عملنا .. فسنتركه الآن للإنتقال إلى أداه أخرى

التعديل الأخير تم بواسطة د لـهــــا م ; 18-06-2007 الساعة 10:15 PM
د لـهــــا م غير متصل   رد مع اقتباس
قديم 18-06-2007, 10:04 PM   #3
د لـهــــا م د لـهــــا م غير متصل
طــالب
 
الصورة الرمزية د لـهــــا م

 










افتراضي رد: تعلم SQL Server 2005 بالصور



سنعرج الآن بمشيئة الله على بعض أدوات الأدمن والتحكم في السيرفر

نبدأ بالآداة الأساسية

SQL Server Surface Area Configuration

يمكنك تشغيلها من Start ثم Programs ثم Microsoft SQL Server 2005 ثم Configuration Tools ثم انقر SQL Server Surface Area Configuration




هنا سيخرج لك نافذة الآداة وتشتمل على خيارين

الأول :

هو للتحكم في الخدمات والإتصالات

Surface Area Configuration for Services and Connections




وهذا ملعبك لتشغيل وإبطال الخدمات العامله على جهازك وكل إتصالاتك بالأجهزة الأخرى المرتبطة بهذه الخدمات .. وبإذن الله سيكون لنا جولات مع هذه الأداة .

- أما الإختيار الثاني :

Surface Area Configuration for Features



فيمكنك من خلاله تشغيل أو إبطال الخدمات الجديدة القادمة مع Sql Server 2005 والتى سنعرج عليها واحدة واحدة بإذن الله .


-- الآداة التالية وهي :

SQL Server Configuration Manager



وهي بإختصار تجميع لعمل الثلاث أدوات المعروفه في SQL Server 2000

Service Manager

Server Network Utility

Client Network Utility

يمكنك تشغيلها من Start ثم Programs ثم Microsoft SQL Server 2005 ثم Configuration Tools ثم انقر SQL Server Configuration Manager

وهي أداة تحكم في السيرفر وخدماته والسيرفرات المتصله به .


والآن ننتقل إلى أدوات تحسين ومتابعة أداء قواعد البيانات

أولا : الأداة SQL Server 2005 Profiler




ويمكنك تشغيلها من داخل الـ Managment Studio من القائمة Tools ثم SQL Server 2005 Profiler

أو من

Start ثم Programs ثم Microsoft SQL Server 2005 ثم Performance Tools ثم انقر SQL Server 2005 Profiler

وهي عبارة عن أداة إختبار لكفائة عمل قاعدة البيانات من خلال إختبارها بيتشغيل عمليات معينة وإختبار مقدار كفائة إنجازها . ولقد تم إضافة تحسينات كثيرة عليها في SQL Server 2005 . سنتعرض لها أثناء الشرح بإذن الله .


ثانيا : الأداة Database Engine Tuning Advisor




ويمكنك تشغيلها من داخل الـ Managment Studio من القائمة Tools ثم Database Engine Tuning Advisor

أو من

Start ثم Programs ثم Microsoft SQL Server 2005 ثم Performance Tools ثم انقر Database Engine Tuning Advisor

وهي الأداة الأساسية في إكتشاف كيفية تحسين أداء قاعدة البيانات وتعطيك نصائحها بعمل أشياء معينة على قاعدة البيانات من أجل تحسين كفائتها مثل إضافة فهرس على جدول معين أو إزالة فهرس من جدول آخر لعدم أهميته مثلا .. كل ذلك بناء على عمل قاعدة بياناتك وكيفية إستخدامها .


سنعتبر أن ما مضى تعريف بسيط بالآداة التى سنعمل عليها .. والآن هيا بنا إلى الجد

-- سنبدأ الآن من البداية مع قواعد البيانات وسأعتمد في شرحي أسلوب القصة القصيرة لأنها بالتجربة أفضل إسلوب للشرح إستعملته .

-- سنتصور أنك مبرمج محترف ومشهور في بلدك وليكن إسمك مثلا الباشمهندس " ذكي " ، وفي أحد الأيام قام رجل بإفتتاح سوبر ماركت كبير جدا أسفل منزلكم .. وعندما أراد أن يصنع برنامج لإدارة السوبر ماركت .. دله أهل المنطقة عليك وأخبروه أنه ليس هناك أفضل منك .. وعندها طلب صاحب السوبر ماركت .. وليكن أسمه " الحاج عبد الرحمن " مقابله منك .. وبالفعل ذهبت إليه وألقيت نظرة على السوبر ماركت الذي كان يحمل إسم " سوبر ماركت الخلافة " مثلا .. وأخبرك الحاج عبد الرحمن بتطلعاته في كيفية إدارة السوبر ماركت .. وأنه يريده على أحدث أسلوب من التكنولوجيا والحداثه .. " كل ذلك وأنت تستمع له " .. وفجأة سألك .. كم سيتكلف هذا البرنامج .. وحينها قمت بالرد كمبرمج متمرس أن الأمر يحتاج إلى دراسة بسيطه أولا .. ولكن حددت له مدى معين للتكلفة وأخبرته بمميزات هذا البرنامج لإدارة السوبر ماركت " .. و رحب الحاج عبد الرحمن .. وسألك متى سنبدأ .. فقلت من الآن لو أردت .. فقال : إذا هيا بنا ... هنا إستأذنت منه وصعدت إلى منزلك وأحضرت دفترك وقلمك .. وجلست أنت والحاج عبد الرحمن تسأله ..

- عن إسلوب إدارته للسوبر ماركت : متى تشتري المنتج ؟ ، متى تدفع الأجور ؟ ، هل الزبون يدفع ثمن ما يشتريه مباشرة أم ممكن أن يتبقى عليه بعض الثمن ؟ ، هل ستبيع منتجاتك من خلال الإنترنت ؟ هل ستطبق نظام التوصيل للمنازل ؟ هل يمكن الشراء عن طريق التليفون ؟ هل يهمك أن تسجل معلومات عن الزبون أم أن ذلك لا يهمك ؟ هل ستقدم عروض مخفضة على منتجاتك أم لا ؟ ..... أخذ الباشمهندس ذكي يسأل ويسأل والحاج عبد الرحمن يجيب ، وذكي يدون إجابته . وبعدها شكر الباشمهندس ذكي الحاج عبد الرحمن وقال له أنه سيتردد عليه كثيرا إذا إستجد سؤال آخر يريد الإجابة عليه ...

--" إلى كل مبرمج أو مصمم قاعدة بيانات .. هذه أول خطوة صحيحة فعلها الباشمهندس ذكي من أجل إنشاء قاعدة بيانات تصلح للحاج عبد الرحمن .. فإياك أن تنشأ قاعدة بيانات على هواك أنت وتقول أني سأنشأ قاعدة بيانات على أحسن تراز ثم تكون النتيجة عدم توافقها في المتطلبات المرجوه منها عند التنفيذ على أرض الواقع "

-- هنا صعد الباشمهندس ذكي إلى منزله وأخذ في رسم جدول واحد كبير يمثل كل العناصر المطلوب تجميع بيانات عنها في سوبر ماركت الخلافة على الورق .. ولنتصور جانب من هذا الجدول معه :

* تاريخ الفاتورة
* ترتيب الفاتورة خلال اليوم
* الصنف الأول في الفاتورة
* سعر الصنف الأول في الفاتورة
* الصنف الثاني في الفاتورة
* سعر الصنف الثاني في الفاتورة
* موظف الحسابات
* أجرة موظف الحسابات
* أجازات موظف الحسابات
* موظف البيع
* أجرة موظف البيع
* أجازات موظف البيع
* أجرة المكان
* أجرة الكهرباء
* .............

وأخذ يكتب ويكتب ...

ثم بدأ في عمله بتطبيق قواعد الـ Normalization وهي عبارة عن ثلاث مراحل ترشدك إلى توزيع بياناتك على عدد من الجداول ذات العلاقة المرتبطة وضمان عدم تكرار البيانات المتشابههة في قاعدة بياناتك .. وكذلك وضع مفتاح رئيسي يكون دليلك على كل جدول . هيا إلى التنفيذ :

المرحلة الأولى من الـ Normalization

وهي .. جمع كل مجموعة بيانات مرتبطة في جدول منفصل لضمان عدم التكرار .. ففي جدول الباشمهندس ذكي نجد أن تعدد الأصناف في الفاتورة قد لا ينتهي وعليه سيكون الأمر ضخم ومربك .. لذلك سنقوم بفصل منتجات السوبر ماركت في جدول منفصل .. ونضيف عليه كل المعلومات التى قد تتعلق بهذا المنتج أو الصنف .

الجدول الأول :
* اسم الصنف أو " المنتج "
* سعر الصنف
* وزن الصنف
* مكان تواجده في السوبر ماركت
* درجة حرارة حفظه
* الكمية المتوفرة منه
* الوقت الذي يزيد فيه الطلب على هذا الصنف
* ........... ضف ما يحلو لك على حسب طلبات الحاج عبد الرحمن طبعا

-- ونسمي هذا الجدول جدول الأصناف " بالطبع عند إنشاء قاعدة البيانات سنختصر هذه الأسماء ونجعلها بلإنجليزية ليسهل لنا التعامل معها في الـ sql server

الجدول الثاني : الفاتورة

* تاريخ الفاتورة
* ترتيب الفاتورة خلال اليوم
* نسبة الخصم
* الثمن المدفوع
* الباقي من الثمن
* ................


الجدول الثالث : الموظفون ... سنجمع المعلومات المتكررة عن الموظفين هنا ..

* إسم الموظف
* نوع الوظيفة
* المرتب
* رتبة الوظيفة
* الأجازات

-- وهكذا قسم جداولك بما لا يجعل هناك مجال للتكرار

-- تنقص نقطة في المرحلة الأولى من الـ Normalization وهي أن تضع مفتاح إرشادي متسلسل لكل جدول
مثلا في جدول الموظفين :

* الرقم المسلسل للموظف* إسم الموظف
* نوع الوظيفة
* المرتب
* رتبة الوظيفة
* الأجازات

-- قد يسألني أحدكم " هل لازم الباشمهندس ذكي يحط رقم متسلسل لكل جدول ؟ " .. والإجابة هي إنه لازم يكون في الجدول في كل صف قيمة غير متكررة وتتكون من قدر بسيط من البيانات لسرعة الوصول لها لكي يمكن الإستدلال عن طريقها عن باقي بيانات الصف لكي لا يحدث خلط عند إستدعاء البيانات .. فلو عاندك المواصفات دي على أحد بياناتك ممكن تخليه هو المفتاح الرئيسي للجدول مثل رقم التليفون مثلا للعميل .. ولكن نصيحتي أن تضع رقم مسلسل لزيادة تنظيم جدولك .

-- كدة يبقى طبقنا المرحلة الأولى بنجاح وهي تقسيم الجداول ووضع مفتاح تسلسل لكل جدول .

-- نأتي للمرحلة الثانية من الـ Normalization

تعتمد هذه المرحلة على فصل البيانات التى سيتكرر إدخالها بنفس الصيغة في جدول منفصل .. ومثال ذلك نوع الوظيفة في جدول الموظفين .. فكلما أدخل الباشمهندس ذكي موظف جديد يضع نوع وظيفته ليجد في النهاية أنه أدخل النوع " بائع " عشرين مرة بعدد العاملين ..
هنا النوع الثاني من الـ Normalization يخبرك أن تفصل هذا الصف في جدول منفصل وتضع له مفتاح تسلسل خاص به .. ووضع هذا المفتاح المتسلسل في الجدول الرئيسي كرابط بين الجدولين .. وهذا ما نشرحه بالتفصيل عند الحديث عن العلاقات بين الجداول وربطها ببعض .
إذا سيصبح جدول الموظفين هكذا :

* الرقم المسلسل للموظف
* إسم الموظف
* الرقم المسلسل لنوع الوظيفة* المرتب
* رتبة الوظيفة
* الأجازات


وأصبح عندنا جدول جديد بإسم نوع الوظيفة :

* الرقم المسلسل لنوع الوظيفة
* نوع الوظيفة
* متطلبات الشخصية المأهلة لهذا النوع
* ..... ضف ما تشاء من معلومات ....

-- هنا سيسألني أحدكم .. أني الآن أملك إسم عمود متكرر في جدولين وهو الرقم المسلسل لنوع الوظيفة " ألم تخبرنا أن لا نكرر البيانات "
* كلامكم صحيح .. ولكن نحن نصنع هذا التكرار في المفاتيح المتسلسلة للجداول فقط من أجل الربط بينها وإمكانية الوصول للمعلومات المرتبطة من جدول لآخر كما سنوضح في العلاقات بين الجداول .


أما عن المرحلة الثالثة من الـ Normalization :


فهي عبارة عن البحث في الجدول عن نوع بيانات لا يترتب على المفتاح الرئيسي للجدول : مثلا في سوبر ماركت الخلافة .. يضع الحاج عبد الرحمن رتبة لكل وظيفة مثل الدرجة الأولى والثانية والثالثة .. وعلى أساس هذه الرتب والدرجات يحدد مقدار المرتب .. إذا فالمرتب هنا يعتمد على رتبة الوظيفة وليس على الموظف الذى هو أساس جدول الموظفين والذي على أساسه أشتق الرقم المسلسل للموظف .

وهنا تخبرك المرحلة الثالثة من الـ Normalization أن تنقل كلا من المرتب ورتبة الوظيفة في جدول منفصل وتسمية جدول رتب الوظائف وتضع له رقم متسلسل خاص به وتضع هذا الرقم المتسلسل أيضا في جدول الموظفين كرابط بين الجدولين . كما يلي :

-- جدول الموظفين :

* الرقم المسلسل للموظف
* إسم الموظف
* الرقم المسلسل لنوع الوظيفة
* الرقم المسلسل لرتبة الوظيفة
* الأجازات

-- جدول رتب الوظائف :

* الرقم المسلسل لنوع الوظيفة
* رتبة الوظيفة
* المرتب

وهكذا بتطبيق الباشمهندس ذكي مراحل الـ Normalization الثلاثة على كل الجداول .. أصبح عنده قاعدة بيانات منظمة وسريعة وسهلة في إخراج المعلومات المطلوبة منها .

ولكن نريد أن نفهم أكثر ما هي العلاقات بين الجداول وكيف تعمل . فهيا بنا ..

التعديل الأخير تم بواسطة د لـهــــا م ; 18-06-2007 الساعة 10:17 PM
د لـهــــا م غير متصل   رد مع اقتباس
قديم 18-06-2007, 10:37 PM   #4
د لـهــــا م د لـهــــا م غير متصل
طــالب
 
الصورة الرمزية د لـهــــا م

 










افتراضي رد: تعلم SQL Server 2005 بالصور



لقد رأيت كيف قسمنا الجدول الكبير إلى جداول صغيرة أكثر وضوحا وأسهل في التعديل
.. ولكن أنا أريد عند الإستعلام عن الموظف مثلا أن تخرج لي كل البيانات المتعلقة به والتى نقلتها في جدول منفصل مثل نوع ومرتبة وظيفته .. فكيف ذلك ..
ذلك سيكون كما أخبرتك من خلال الرقم المسلسل .. ففي الجدول الأساسي يكون إسم الرقم المسلسل " الرقم المتسلسل الرئيسي " وأي رقم متسلسل آخر من جدول آخر يسمى " الرقم المتسلسل الثانوي " وهو المسئول عن ربط هذا الجدول بالجدول الآخر .. فمثلا عند إستعلامي عن الموظف " محمد محمود " ستجد قاعدة البيانات أن مسلسل نوع وظيفته في جدول الموظفين هو المسلسل 9 مثلا وهنا ستذهب قاعدة البيانات إلى جدول نوع الوظيفة وتحضر المعلومات المتعلقة بالرقم 9 ..
بس هذا كل شي .. أليس الأمر بسيط ؟

-- هذه الأمور ستطضح جلينا عند الإنشاء الفعلي من قبل الباشمهندس ذكي لقاعدة البيانات على الـ sql server 2005

أحضر الباشمهندس ذكي كوبا من الشاي بعد عودته من صلاة العصر في مسجد الحي .. وأحضر دفتره الذي وضع به تخطيط جداوله .. ثم فتح جهازه وعلى إثر ذلك فتح الـ SQL Server Management Studio من الـ Sql Server 2005




" سنجد كما أسلفنا أنه قد تم جمع قواعد بيانات النظام في فلدر منفصل بالإسم System Databases ، ولكن ما هي قواعد بيانات النظام ؟

1- قاعدة البيانات master : هي أهم قاعدة بيانات .. فهي التى تحتوى كل المعلومات الخاصة بالمستخدمين وكلمات سرهم وصلاحياتهم في التعامل مع قواعد البيانات ، أماكن وجود ملفات الداتا ، إعدادات قواعد البيانات ، رسائل الأخطاء .. يعني بصدق هي قلب السيرفر .

2- قاعدة البيانات tempdb : وهي قاعدة بيانات تنشأ عند تشغيلك للسيرفر وتوضع بها البيانات المؤقتة التى يحتاج السيرفر لتخزينها مؤقتا أثناء عمل الإجرائات المخزنة مثلا .. وعند إغلاق الـ Sql server وإعادة فتحه تضيع هذه البيانات وتصبح قاعدة البيانات tempdb فارغة وجاهزة لإستقبال بيانات مؤقتة جديدة .

3- قاعدة البيانات model : هي عبارة عن موديل يمكنك التعديل فيه .. حيث أن كل قاعدة بيانات جديدة تنشأها تأخذ كل خصائصها المبدأية من هذه القاعدة .. إذا يمكنك تعديلها لتناسب إحتياجاتك في قواعد بياناتك الجديدة من حيث الحجم مثلا أو إنشاء جدول إفتراضي بها ليتم إنشائه تلقائيا داخل أي قاعدة بيانات جديدة تقوم بإنشائها .

4- قاعدة البيانات msdb : وهي المسئولة عن كل الأوامر والوظائف التى سيقوم بها الإنسان الآلي المساعد في الـ Sql Server وهو SQL Server Agent
وهو المسئول عن تنفيذ كل الوظائف التلقائية التى تريد تنفيذها بالتعاون من الويندوز .. على قاعدة البيانات أو على أي شيء متعلق بالويندوز بناء على حدث معين يحدث في قاعدة البيانات أو وقت معين . "

" أسفل مجلد قواعد بيانات النظام هناك قاعدتين للبيانات .. للتجربة والتعليم .. هما AdventureWorks - AdventureWorksDW

وهي عبارة عن قاعدة بيانات لشركة " وهمية " تملك مصنع لتجميع وتصنيع الدرجات مقرها واشنطن ويعمل لديها 290 عامل وتوزع منتجها لشمال أمريكا وأوربا وأسيا
ومطبق عليها كل الجديد في الـ Sql Server 2005 لغرض التعليم . "


وعلى الكلمة Databases قام الباشمهندس ذكي بعمل نقرة يمين من الماوس وإختار New Database





وعلى إثر ذلك خرج له المربع الحواري الجديد لإنشاء قاعدة بيانات جديدة كما في الصورة :




فقام بإدخال إسم قاعدة بياناته وسماها alkhilafah
ثم حدد المستخدم الرئيسي لهذه القاعدة وهو المستخدم الذى لدية كل صلاحيات التعامل والتعديل مع قاعدة البيانات ويسمى مالك قاعدة البيانات
* ولو تركها <default> حيكون مستخدم الـ Sql server الأساسي هو مالك هذه القاعدة
ثم قام بالتأشير على المربع use full-text indexing وهو المسؤول عن تنشيط عملية البحث داخل قاعدة البيانات عن الكلمات أو الجمل داخل النصوص

-- وأسفل ذلك نجد أن هناك ملفان سينشأهما السيرفر لقاعدة البيانات

- الأول يملك الإمتداد MDF. وهو المسأول عن تخزين البيانات

- والثاني يملك الإمتداد Log. وهو المسأول عن تخزين الحركات " وتعني أي تعديلات على قاعدة البيانات " وهو العامل والمصدر الأساسي لإرجاع البيانات المفقودة من ملف البيانات "

ولابد أن تبدأ قاعدة البيانات بملف بيانات وملف حركات على الأقل ..ويمكنك إضافة ملفات أخرى عن طريق الزر add .. والملف الثاني الذي ستنشأه للبيانات سيحمل الإمتداد NDF.
ويمكنك من خلال نافذة إنشاء قاعدة البيانات تحديد الحجم الإبتدائي للملف ومقدار الزيادة في حجمه كلما زادت البيانات المخزنة فيه .

ومن خلال هذا النافذة يمكنك تحديد الكثير من إعدادات ملفات قاعدة البيانات وطريقة عملها .. وذلك سيكون حديثنا بالتفصيل عند الحديث عن شق التحكم والصيانة بإذن الله .. أما الآن فسنترك الإعدادات الإفتراضية كما هي وننقر Ok لإنشاء قاعدة بياناتنا الجديدة .

-- والآن ماذا لو أراد الباشمهندس ذكي حذف هذه القاعدة .. كل ما عليه هو عمل نقرة يمين من الماوس على إسم القاعدة وإختيار Delete من القائمة المختصرة




* لتخرج له النافذة الحوارية لحذف قاعدة البيانات :



وأسفل النافذة ستجد خيارين جديدين ..

الخيار الأول : يتيح لك إختيار حذف أو عدم حذف معلومات النسخ الإحتياطي لهذه القاعدة وإسترجاعها .

* والخيار الثاني : " مميز " وهو يقوم بغلق أي إتصال بقاعدة البيانات أولاً قبل حذفها لكي تتم عملية الحذف بنجاح
.. أما لو لم تختار هذا الخيار وكان هناك إتصال بقاعدة البيانات فيجب عليك غلقه أولا وإلا لن تنجح عملية الحذف .


-- والآن ماذا لو أردنا كمبرمجين مخضرمين مثل الباشمهندس ذكي أن نكتب نحن كود إنشاء قاعدة البيانات .. هيا بنا

نقوم بإنشاء صفحة كود جديدة بالنقر على الزر New Query من الأعلى .. أقصى اليسار

ونكتب بكل بساطة

كود:
CREATE DATABASE alkhilafah
ثم ننقر الزر Execute أو F5 لتنفيذ الأمر وإنشاء قاعدة البيانات .

ولكن بهذا الأمر ننشأ قاعدة البيانات بالإعدادات الإفتراضية ولتغيير هذه الإعدادات نضيف كود إضافي .. سنتناوله عند الحديث عن شق التحكم والصيانة بإذن الله

*ولكي تظهر قاعدة البيانات أمامنا يجب عمل refresh للسيرفر كما في الصورة ..




مع إستخدامك مربع حوار إنشاء قاعدة البيانات ستظهر قاعدة البيانات حالا ولا تحتاج لعمل refresh للسيرفر


-- والآن ماذا لو أردنا حذف قاعدة البيانات بالكود أيضاً ..

كل ما عليك هو إستبدال كلمة Create بكلمة Drop

ويكون الكود كما يلي


كود:
DROP DATABASE alkhilafah

سيقوم الباشمهندس ذكي الآن بإنشاء جداول قاعدة البيانات

فأسفل مجلد قاعدة البيانات يوجد مجلد يسمى Tables وهم المجلد الذي يحوى جداول قاعدة بياناتك

وعندها قام بالنقر عليه بزر الماوس الأيمن وإختار من القائمة ...New Table




فخرجت له نافذة تصميم الجداول

ثم أخذ في إدخال التصميم الذي كان على الورق على مصمم الجداول
وبدأ بجدول الموظفين
أدخل أولا عنوان الصف الأول وهو الرقم المسلسل للموظف ******er_ID
وبجوارها حدد نوع البيانات التى سيتم إدخالها في هذا الصف .. فختار int



ما هذا .. ماذا تعني int هذه ولماذا إختارها هي بالذات ؟
-- سؤال جميل .. وإجابته أن أي صف في الجدول يجب أن نحدد نوع البيانات التى سوف تخزن فيه لكي تتعامل معه قاعدة البيانات بطريقة مختلفة على أساس نوعه ، وكذلك لكي ترفض إدخال أي بيانات من نوع آخر ، فمثلا لا يجب إدخال حروف في الصف الممثل لتليفون الموظف .

-- جميل .. إذا ما هي أنواع البيانات التى يمكن التعامل بها في الـ Sql Server 2005

1- النوع char : وهو يعني حرف ، وهو عبارة عن نوع يجعل حقل البيانات يتقبل عدد معين من الحروف من 1 إلى 8000 حرف .. فمثلا أنت تريد إدخال رمز مختصر لكل بلد من ثلاث حروف .. هنا ستستخدم هذا النوع كما يلي :

كود:
char(3)
س : ولكن ماذا لو أدخل المستخدم حرف واحد فقط ؟
ج : هنا ستخزنه قاعدة البيانات على أنه حرف ومسافتين فارغتين .. أي أنها " كدة كدة " حتدخر له مكان ثلاث حروف .

-- في الـ Sql Server 2005 حتلاقيه حتطلك في القائمة (char(10 وهو هنا بيعتبر إن الحروف المعقوله 10 .. يعني دي من عانده وممكن إنته تحط إلي على مزاجك.

2- النوع nchar : وهو أيضا يأخذ حروف ولكن حروف من النوع Unicode أي يمكنة تخزين حروف كل اللغات وليس الإنجليزية فقط .. وهو يأخذ من 1 إلى 4000 حرف لأن الحرف فيه يأخذ مكان حرفين من النوع char

** وهو بالطبع النوع إلي حنستخدمه لما نتعامل مع لغتنا الحبيبة لغة أهل الجنة .. اللغة العربية .

ومثاله نفس الشيء :

كود:
nchar(5)

- هو برده هنا بيحط 10 حروف في القائمة بتاعة الأنواع للـ nchar .. ممكن تغيرها لعدد الحروف إلي إنته عايزه .

3- النوع varchar : نفس قصة char .. برده يقبل من 1 إلى 8000 حرف .. بس الفرق إن لما تحدده بـ 3 حروف مثلا وتحط فيه حرف واحد بس .. حيعتبره حرف واحد مش تلاته زي الـ char ، يعني بمفهومنا نطلق عليه نوع مطاطي بيغير الحجم المخزن على حسب عدد الحروف المخزنة فيه ، ولكن أقصى عدد حروف بياخده هو ما حددته أنت .

وعلشان الميزة الجميلة دي عملوا نوع جديد في Sql Server 2005 إسمه ..

4 - (varchar(max : إيه قصته النوع الجديد دة بقة .. قصته إنه بيقبل حتى الـ 8000 حرف ولكن بيخزن أماكن لعدد الحروف الموجودة فيه بس

يعني كأنك كتبت كدة .. (varchar(8000 .. بس لو دخلت مثلا كلمة مكونة من 10 حروف فقط فسيخزنها في مكان يتسع لـ 10 حروف فقط وليس 8000 .

5- النوع nvarchar : نفس قصة varchar بس بياخد حروف Unicode وعلشان كدة هو بيقبل من 1 إلى 4000 حرف بس . " اللغة العربية "

6- (nvarchar(max : نفس قصة (varchar(max بس برده بياخد حروف Unicode وعلشان كدة هو بيقبل من 1 إلى 4000 حرف بس . " اللغة العربية "

7- النوع text : وهو يأخذ حروف حتى 2 جيجا بايت
.. ولكن تخزين هذا الكم الهائل من البيانات داخل خلية بياناتك ومع إستخدامه بكثرة يزيد من بطء قاعدة بياناتك .. لذلك لو ستدخل بيانات بحجم كبير جدا فنصيحتى أن تخزنه في ملف خارجي أفضل.. " وسنتعلم بإذن الله كيف نربط الملفات الخارجية بقاعدة البيانات " .. وميكروسوفت نفسها سوف تلغي هذا النوع كما تقول في الإصدارات القادمة وتزيد من إمكانيات إستخدام الـ (varchar(max
-- ولكن لو شعرت أن بياناتك ستزيد في الخلية عن 8000 حرف فستعمل هذا النوع طبعا ولكن لا تكثر من إستخدامه في إدخال حجم بيانات كبير لدرجة الـ 2 جيجا أو أقل .

8- النوع ntext : زي الـ النوع text بس بيحزن حروف بالنظام Unicode زي ما إحنا عارفين .. وعلشان كدة بياخد حروف حتى 1 جيجا بايت بس ،
ونفس القصة حيستبدلوه بـ (nvarchar(max إن شاء الله

9- النوع image : زي النوع text بالضبط بس بيخزن بيانات باينري .. زي الصور والصوت والأفلام .. وبرده حيلغوه في الإصدار القادم ويستخدموا النوع
(varbinary(max إلي حنشرحه حالاً إن شاء الله .

10 - النوع int : " إلي إستخدمه الباشمهندس زكي في صف الرقم المسلسل للموظف "
وهو نوع يأخذ أرقام صحيحة فقط سالب أو موجب .. " يعني ميخدش كسور " يعني لو البيانات بتاعتك من النوع int وقسمت 9 / 10 .. النتيجة حتكون إيه ؟؟؟
... حتكون 0 علشان النوع دة لا يقبل الكسور .. دي نقطة مهمة جدا لو حتتعامل مع فلوس وحسابات .. وعلشان الباشمهندس زكي محتاج أعداد صحيحة لأرقام الموظفين فستخدم النوع دة .. والنوع Int بيقبل من الرقم – 2,147,483,648 حتى الرقم 2,147,483,647 يعني 2 بليون وشوية .. فلو الشركة بتاعتك فيها عدد موظفين أكتر من كدة .. يبقى متستخدمش النوع دة ، والنوع int بياخد مساحة 4 بايت .

11- النوع bigint : زي النوع int بالضبط بس بيقبل من الرقم – 9,223,372,036,854,775,808 حتى الرقم 9,223,372,036,854,775,807 يعني 9 كونتليون وشوية .. وللي مسمعش عن الـ كونتليون .. يعني واحد وقدامه 18 صفر .. " بس ميغركش الرقم .. برده مبيقبلش كسور .. يعني متستخدمهوش في الفلوس والحسابات إلي ممكن تطلع كسور " والنوع bigint بياخد مساحة 8 بايت .

12- النوع smallint : زي النوع int بالضبط بس بيقبل من الرقم – 32,768 حتى الرقم 32,767 " حاجة صغيرة كدة على قدنا وبياخد مساحة 2 بايت .
" -- لاحظ إن الباشمهندس زكي مستخدمش النوع دة وإستخدم النوع int ودة لأنه لو في أي إحتمال إن أعداد الصف بتاعك يزيد عن العدد دة فإستخدم int أحسن ولكن لو متأكد إنه مش حيزيد بأي حال من الأحوال عن الرقم دة فإستخدمه طبعا أحسن علشان حيوفرلك في المساحة . " لاحظ إنه في الأرقام المتسلسلة لو حذفت موظف مثلا رقمه 500 وبعدين أضفت موظف آخر .. قاعدة البيانات حتحطه بـ 501 مش 500 يعني حيكون عاندك أعداد مهدورة فحط دة في حسبانك وإنت بتختار نوع البيانات المناسب "

13- النوع tinyint : وهو أصغر نوع في أنواع الأعداد الصحيحة ويأخذ من الرقم . حتى الرقم 255 .. وبياخد مساحة 1 بايت .
** واحد من حضراتكم حيسألني .. طاب إمته نستخدم النوع دة .. والإجابة .. إنك ممكن تستخدمه في التسلسل بتاع حجات ثابته ومش حتزيد عن 255 زي مثلا عدد المحافظات في دولتك .. أو إستخدمه في المدخلات التي لن تقبل عدد أكبر من 255 .


14- النوع decimal أو numeric : الإتنين بيعملوا نفس العمل والإختلاف في الأسماء فقط فلإسم الأول هو الإسم الأصلي والإسم الثاني من إختراع ميكروسوفت .

وعملهم هو إنهم بيقبلوا الأرقام العشرية .. بيقبلوا من الرقم – 0.00000000000000000000000000000000000001 حتى الرقم 10,000,000,000,000,000,000,000,000,000
يعني 38 صفر .. بس هنا إنت بتاخد إلي إنت عايزه من الرقم دة بس .. يعني لو عايز الرقم بتاعك يكون مكون من 6 خانات للأرقام الصحيحة وخانتين للأرقام العشرية .. حتكتب نوع بياناتك كالتالي ..
(decimal(8,2
و الـ 8 تدل على مجمل عدد الخانات المراد إستخدامها والـ 2 تدل إنك عايز من الـ 8 خانتين للكسور
ونفس القصة
(numeric(8,2
.. ومينفعش طبعا في المثال دة تختار 8 خانات وتقول عايز منهم 12 رقم عشري مثلا (decimal(8,12 .. حتطلعلك رسالة توبخك
وطبعا أقصى خانات عاندك 38 زي ما قلنا في الأول ولو إخترت أكتر من كدة حتطلعلك نفس رسالة التوبيخ

ويمكنك تحويل الرقم دة لرقم صحيح بإختيار . " صفر " في خانة الرقم العشري مثلا : (decimal(8,0 يعني عايز رقم مكون من 8 خانات ومفهوش كسور " مزاجي كدة "
أو تخليه كله كسور .. مثلا (decimal(8,8 .. يعني ممكن تلعب براحتك

15- النوع float : وهو يقبل الأعداد الحقيقية .. يعني الأعداد إلي فيها كسور دقيقة أوي .. ويستخدم في علوم الفلك والحسابات الدقيقة جدا ،
وهو يأخذ من الرقم – 1.79 أس 308 إلى الرقم 1.79 أس 308 .. بقوة 15 رقم عشري ، وبياخد حجم 8 بايت . وهنا إنت مبتحددش عدد الأرقام العشرية .. النوع هو إلي بيطلعها على حسب نسبة الرقم المتبقي .. لكن لو الرقم طلع بدون باقي كسور حيطلعهولك سليم .. زي 25 على 5 حتساوي 5 ..
لكن 25 على 1.3 حتساوي 19.2307692307692

16- النوع real : زي النوع float بالضبط بس بياخد .. من الرقم –3.40 أس 38 إلى الرقم 3.40 أس 38 بقوة 7 أرقام عشرية ، وبياخد حجم 4 بايت .


17- النوع money : وهو النوع المخصص للتعامل مع الأموال ويقبل من –922,337,203,685,477.5808 حتى 922,337,203,685,477.5807
ويحتل مساحة 8 بايت والجميل فيه أن التطبيقات تضع علامة الدولار أو علامة العملة التى تحددها بجوار الرقم .. وهذا يرشدنا أن العلامة لا تسجل داخل قاعدة البيانات .. فلو أردت أن تقوم بتخزينها فستقوم بذلك في صف منفصل .. والنوع money يقبل حتى 4 خانات عشرية فقط .

18- النوع smallmoney : مماثل للنوع money ولكن يقبل من –214,748.3648 حتى 214,748.3647 ويحتل مساحة 4 بايت .

19- النوع datetime : وهو المسؤول عن تخزين التاريخ والوقت وهو يقبل من تاريخ الأول من يناير 1753 حتى 31 ديسمبر 9999 ويخزن الساعة والدقيقة والثانية والمليثانية هكذا 00:00:00:000 ويحتل مساحة 8 بايت

20- النوع smalldatetime : مماثل للنوع datetime ولكن يقبل من تاريخ الأول من يناير 1900 حتى 6 يونية 2079 ويخزن الساعة والدقيقة فقط ويحتل مساحة 4 بايت

21- النوع binary : هذا النوع بيخزن بيانات باينري .. زي الصور والصوت والأفلام ويقبل حتى 8000 بايت

22- النوع varbinary : نفس النوع binary لكن من النوع المطاطي الذي يحجز حجم ما يحتويه فقط .. " يوفر في المساحة ولكن سرعة العمل معه تكون أقل من الـ binary " وأيضا يقبل حتى 8000 بايت .

23 - (varbinary(max : هو نفس النوع varbinary لكن يأخذ كل الـ 8000 بايت ويأخذ منها ما يتم تخزينه به فقط .. وستستبدل به ميكروسوفت النوع image

24- النوع bit : يأخذ القيمة صفر أو 1 .. وهو يستخدم لتخزين ناتج العملية البرمجية .. 1 أي صحيحة ، صفر أي خاطئة .

25- النوع xml : هو نوع جديد في الـ sql server 2005 يقبل بيانات xml بكامل تنسيقها ويمكنك البحث فيه عن طريق لغة الإستعلام داخل الـ xml المسماه xquery
** نكتفي الآن بهذا القدر من أنواع البيانات
د لـهــــا م غير متصل   رد مع اقتباس
قديم 20-06-2007, 02:54 AM   #5
Mustafa. A Mustafa. A غير متصل
طالب جديد
 
الصورة الرمزية Mustafa. A

 











إبتسامة رد: تعلم SQL Server 2005 بالصور


بسم الله الرحمن الرحيم

اشكرك جزيل الشكر يا استاذ دلهام على هذا الموضوع المميز و المثير ولك و ل ebnelbana2000 و لكم اصدق الدعوات و كل التوفيق .

في بداية الامر كان ينتابني شعورُ من الخوف كلما ارى او اسمع عن اي شيء يتعلق بال SQL ، و يدور في فكري العديد و العديد من المشاريع التي اتمنى ان انجزها و لكن في كل مره اجد صعوبة كبيرة جداً في فهم هذه اللغة حتى وجدت هذا الشرح المميز الذي بدأ يعيد إلي الامل في حب و فهم هذه اللغة .

اتمنى لك التوفيق و القوة في إكمال هذا الشرح.
Mustafa. A غير متصل   رد مع اقتباس
قديم 21-06-2007, 12:48 PM   #6
د لـهــــا م د لـهــــا م غير متصل
طــالب
 
الصورة الرمزية د لـهــــا م

 










افتراضي رد: تعلم SQL Server 2005 بالصور



شكرا اخ Mustafa. A لمرورك واسف على التاخير لانشغالي بالمناقشه اليك الشرح

يقوم المهندس بإدخال تخطيط الجدول .. وبجوار نوع بينات الصف يوجد مربع كتب عليه Allow Nulls أحيانا كان يتركهالمهندس فارغ وأحيانا يقوم بإختياره .. نعم .. هذا المربع " إذا تم إختياره " يرشد الـ sql server أن خلايا هذا الصف يمكن أن تكون خاليه إذا أراد مدخل البيانات عدم إدخالها .. وهنا سيرضى الـ sql server ويجعل هذه الخلية من النوع null أي فارغ ، أما لو لم نقوم بإختيار المربع أمام صف معين فلابد من إدخال بياناته ولن يقبل الـ server إلا بإدخالها.
-- ولكن ما هو النوع null ولماذا لم نضع صفر دليل على أنه لا يوجد بيانات .. هذا السؤال قد يسأله من لم يتعامل مع قواعد البيانات .. أولا لأن الصفر يعتبر بيانات .. ثانيا أنه سيأخذ مساحة .. على عكس الـ null فهي لا تأخذ مساحة وتخبر الـ server أن هذه الخلية خالية . ونستخدمها في البيانات التكميلية التى قد لا تتواجد عند مدخل البيانات مثل مثلا رقم الفاكس فليس كل الناس يملك جهاز فاكس .. ولو أجبرته على وضعه لوضعه لك

-- كثيرا ماكنا ننتقل إلى نافذة أسفل نافذة تخطيط الجدول ويعدل بها بعض البيانات .. نعم .. إنها نافذة خصائص الصفوف .. هيا بنا نلقي نظرة عليها :



-- الخانة Default Values or binding .. وهنا نضع القيمة الإفتراضية للخلية .. فلو أدخل المستخدم ما يريد فسيقوم الـ server بتسجيل ما أدخله .. ولكن ماذا لو ترك المستخدم الخلية فارغة هنا سيقوم الـ server بتسجيل القيمة الإفتراضية التى وضعتها أنت .. وهذا الأمر مفيد جدا كثيرا .. ومن إستخداماته أنه يمكننا تسجيل الوقت الذي أنشأ فيه الصف عن طريق صنع خلية تاريخ وجعل القيمة الإفتراضية لها الدالة ()getdate والتى ستقوم بإحضار الوقت والتاريخ في نفس لحظة الإدخال وتسجيلها في الخلية .. وفي هذه الحالة لن أنت تعرض هذه الخانة أمام المستخدم لكي يقوم الـ server بتسجيل الوقت الإفتراضي دائما .

-- الخانة Identity Specification .. هنا لو أردنا جعل الـ server يتولى إدخال أرقام مسلسلة لنا مثل الرقم المسلسل للزبائن وجعلها لا تتكرر .. فهذه الخانة هي الكفيلة بذلك عن طريق فتح علامة الزائد المقابلة لها لتظهر لنا ثلاث خانات الأولى is Identity نجعل قيمتها yes لتنشيطها
ونضع الرقم الذي سيبدأ عنده التسلسل في الخانة Identity Seed
ونضع الرقم الذي بمقداره ستكون الزيادة على الرقم الذي سيبدأ منه التسلسل في الخانة Identity Increment

-- الخانة De******ion يمكننا أن نضع بها شرح للصف وطبيعة عمله للذكرى بعد ذلك أو لتوضيح تركيب قاعدة البيانات لشخص آخر .

" هذا ما نحتاجه الآن من هذه الإعدادات "

-- بعد أن انتهينا من تخطيط جدول الزبائن قمنا بكتابة إسم الجدول بجوار الخانة name في نافذة الخصائص العامة على اليمين properties window .. ويمكنك إظهارها إن لم تكن ظاخرة بنقر f4 أو من القائمة view إختر properties window

وكذلك بإختيار من له حق الملكية والتعديل لهذا الجدول من الخانة Schema من نفس نافذة الخصائص العامة .
" سيكون لنا حديث مطول بإذن الله عن المستخدمين عند الحديث عن سرية وأمان قاعدة البيانات "


-- والآن ماذا لو أرنا معرفة ما يدور وراء الكواليس وما هو الكود الذي كتب الـ server نيابة عنا لإنشاء الجدول

ببساطة هذا هو الجدول

كود:
use alkhilafah
CREATE TABLE ******erDetails
(******er_Id int IDENTITY(1,1) NOT NULL,
******er_FirstName  nvarchar(50) NOT NULL,
******er_LastName  nvarchar(50) NOT NULL,
DateEntered datetime NOT NULL,
Notes nvarchar(max) NULL)
هنا قمنا بتحديد قاعدة البيانات التى سنقوم بإنشاء الجدول بها من خلال use alkhilafah
ثم قمنا بكتابة الكلمة CREATE TABLE
ثم إسم الجدول ******erDetails
وفتحنا قوس ثم كتبنا إسم الصف ******er_Id
ثم مسافة ثم نوع البيانات int
ثم أخبرنا السيرفر أنا يقوم بعمل IDENTITY أي زيادة تلقائية كما أسلفنا
.. على أن يبدأ بالرقم 1 وكل مرة يزيد 1 .. أي أرقام الزبائن ستكون .. أول زبون 1 ، وثاني زبون 2 ، وثالث زبون 3 وهكذا
.. بعد ذلك أخبرنا الـ server أن هذا الصف لابد من إدخال بيانات فيه وأن لا يقبل أن يكون فارغا وذلك عن طريق الكلمة NOT NULL
.. ثم نضع علامة كومة " , " لنخبر الـ server أننا إنتهينا من كون أول صف وسننتقل للذي يليه
.. وهكذا حتى آخر صف ثم نغلق القوس

كما قلنا فيما مضى أن هناك ميزة جديدة في sql server 2005 تسمى الـ Template وهي عبارة عن كود جاهز لإنشاء العناصر المختلفة التى نتعامل معها خلال عملنا مع قواعد البيانات .. ومنها بالطبع الجدول .. .. إذن جاء الوقت لنستكشف هذه الميزة وننشأ بها جدول جديد

-- أنقر المفاتيح Ctrl+Alt+T .. أو إذهب للقائمة view ثم Template Explorer لفتح نافذة الـ Template




قم بإستكشافها والتعرف على ما بها .. حتى تصل للجزء Table .. قم بفتحه لتجد مجموعة من الأكواد التى يمكن تطبيقها على الجداول .. قم بالنقر المزدوج على create table ... .. قد تم فتح نافذة الكود ووضع كود إنشاء جدول

كود:
-- =========================================
-- Create table template
-- =========================================
USE <database, sysname, AdventureWorks>
GO

IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, sysname, sample_table>', 'U') IS NOT NULL
 DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO

CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
<columns_in_primary_key, , c1> <column1_datatype, , int> <column1_nullability,, NOT NULL>, 
<column2_name, sysname, c2> <column2_datatype, , char(10)> <column2_nullability,, NULL>, 
<column3_name, sysname, c3> <column3_datatype, , datetime> <column3_nullability,, NULL>, 
   CONSTRAINT <contraint_name, sysname, PK_sample_table> PRIMARY KEY (<columns_in_primary_key, , c1>)
)
GO
-- إنه كبير ولكن لأنه يشمل الكثير من التوضيح ليس إلا .. ولكن الأمر مربك .. .. لا عليك .. هل ترى هذا الكلام الذي بين قوسين أكبر من وأصغر من .. إنه يرشدك لأن تضع مكانه ما يناسب جدولك فهو يضع أولا إسم هذا العنصر ثم نوعه ثم قيمته .
.. وكل ما عليك الآن هو نقر المفاتيح Ctrl+Shift+M لتفتح لك نافذة ملء مكان هذه الأقواس ، التى تحول لك هذه الأقواس لجدول لطيف تعدل فيه بيانات وقيم الجدول كما تشاء ...



ولكن هذا الجدول يعطيني 3 صفوف فقط ، ولا يناسب إحتياجاتي ..

عدل في الكود وضاعف عدد الصفوف كما تشاء ورتب ونسق وفي النهاية أنقر Ctrl+Shift+M وعدل القيم كما تشاء .

والمفاجأة كمان إنك ممكن تعمل الـ template الخاصة بك .. أو تعدل في أصل الـ template الموجودة علشان تناسب إحتياجاتك ..كيف؟

كل ما عليك هو عمل نقرة يمين على الـ template وإختيار new لعمل folder أو template جديد ، أو إختيار edit لتعديل الـ template الموجود وفي النهاية إحفظ ناتج تغيراتك .

-- ملفات الـ template موجودة في المسار

كود:
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\sqlworkbenchnewitems\Sql


والآن اكملنا إدخال تخطيط كل جداول سوبر ماركت الخلافة ..
نرجع علشان نعمل العلاقات بين الجداول
.. طبعا إنتوا فاكرين إننا إتكلمنا عن العلاقات في الأول في تخطيط قاعدة البيانات وتوزعها .. فهيا نطبق ذلك عملي

أولا ..قمنا ببوضع المفتاح الأساسي على صفوف الأرقام المسلسلة لكل جدول ليقوم الـ sql server بعمل إندكس له لسرعة البحث في الجدول ولمراقبة عدم تكرار أي قيمة في هذا الصف وكذلك لإستخدامه في الربط بين الجداول " سنتحدث بالتفصيل عن الإندكس قريبا إن شاء الله "

-- كل ماقمنا به أنه قامنا بعمل ضغطة يمين من الماوس على إسم الجدول " ******er " وإختار modify لفتح الجدول في طور التصميم



ثم قمنا بعمل ضغطة يمين على الصف ******erID وإختار set primary key لتجد أنه قد وضع أمامه علامة مفتاح أصفر .. ليخبرك أن العملية نجحت والحمد لله .. ولكن باقي خطوة لازم تقوم بحفظ الجدول علشان يثبت هذا التعديل .






-- الآن نريد ربط جدول الفاتورة Invoice الذي يشمل الفواتير بجدول الزبائن .. حيث أن كل زبون ممكن أن يحصل على أكثر من فاتورة ولو على فترات متباعدة .. " ذلك مثلا لو كان سوبر ماركت الخلافة يسجل زبائنه ويوصل لهم الطلبات للمنازل مثلا فهو يسجل كل مرات الشراء قبل ذلك ، وكل مرة شراء غالبا تكون بفاتورة منفصلة " ... " والاحسن ربط قاعدة البيانات بالتليفون وإظهار رقم الطالب .. فلما يتصل به الزبون وقبل ما يرد عليه تجبله قاعدة البيانات إسمه وكل بياناته "

-- وفي تخطيطنا لقاعدة البيانات في البداية وضعنا الرقم المسلسل للزبائن في جدول الفاتورة تمهيدا للربط الذي سنيقوم به الآن وهنا يسمى الرقم المسلسل للزبائن في جدول الفاتورة بالمفتاح الأجنبي forign key .. ويسمى في جدول الزبائن نفسه كما أسلفنا بالمفتاح الأساسي primary key .

-- قمنا بعمل ضغطة يمين على جدول الفاتورة Invoice " وهو الجدول الذي يحتوى مفتاح من جدول آخر " وإختار modify لفتح جدول الفاتورة في طور التصميم .. وفي أي مكان من نافذة التصميم قام بضغطة يمين وإختار relationships من القائمة المختصرة





.. هنا ظهر المربع الحواري forign key relationships .. وهو المسؤول عن إنشاء العلاقة بين الجدولين .. نقوم بضغط المفتاح add لإضافة علاقة جديدة





.. على اليمين تجد كل الأحداث التى يمكننا تطبيقها على هذه العلاقة.
-- أولا .. نقوم بفتح علامة الزائد بجوار tables and columns specification

ثم نقوم بضغط الزر المنقط بجوارها



لتخرج لنا النافذة الحوارية tables and columns وهنا قام بوضع إسم للعلاقة في الخانة relationship name يحمل إسم جدولي العلاقة " الذي إخترناه والآخر المتوقع " يمكننا تغيير الإسم للذي نريد .. وهو سيقوم بتغييره لك عند تغيير إختيار الجدول



وأسفل ذلك على اليمين الخانة forign key table وبها إسم الجدول الذي إخترناه والذي سيحمل في حشاياه الرقم المسلسل الأساسي لجدول آخر .. ونلاحظ أنه قد ثبته ومنع تغييره وذلك لأنه الجدول الذي إخترناه لنقيم عليه العملية من البداية وهو أساس الشغل كله

-- أما على اليسار فقد وضع الخانة primary key table والتى يمكنك من خلالها إختيار الجدول الذي ستحضر المفتاح الأساسي له " في حالتنا ******er " وتربطه بالمفتاح الأجنبي في الجدول المختار " في حالتنا Invoice " وبالطبع لابد أن يحمل كلا الصفين نفس البيانات ونفس الخصائص .. حيث يمكن أن تجعل المفتاح الأساسي للجدول كما أسلفنا رقم تليفون الشخص مثلا لأنه لا يتكرر .. وهنا لابد أن يكون صف المفتاح الأجنبي في الجدول الآخر موصف بنفس نوع البيانات والحجم تماما مثل صف المفتاح الأساسي في الجدول الآخر .. ولكن لا يشترط أن يكون إسمهما هو نفس الإسم .. " في حالتنا كلاهما يحمل الإسم ******erID .. ولكن لا يشترط تطابق الإسم "

-- أسفل كلا الجدولين سيضع لنا كل صفوف كل جدول لنختار الصف الذي سيستخدم في الربط .. نختار ******erID من كلاهما ثم نختار ok ليعود بنا للمربع الحواري السابق



..
فهيا بنا نقوم بشرح محتوياته




في المجموعة General نجد أول خيار هو Check Existing Data On Creation Or Re-Enabling

وهو المسؤول عن التأكد من أن بيانات الصف الذي سيستخدم في الربط متطابقة في الجدولين وذلك إن كنا نقوم بالربط وفي الصف بيانات وليس فارغا .. وعند إختيار Yes .. لابد أن تكون البيانات متطابقة وإلا فلن تتم عملية الربط بنجاح .

-- أما الخيار Enforce Foreign Key Constraints فهو المسؤول عن جعل أي تغيير يحدث في أي صف من الصفين يتم مثله في الصف الآخر بالضبط كي يكون الصفين دائما متطابقين



-- ومن الخيار الذي أسفل منه Insert And Update Specification نحدد طبيعة هذا التغيير بالنسبة إلي الرقم المسلسل و كل البيانات المتعلقة به



وهناك أربع خيارات في حالة الحذف أو التعديل .. هي بالترتيب

1- No Action ... أي لا شيء يحدث .

2- Cascade ... أي .. أي شيء يحدث هنا يحدث مثله هناك .. أي لو حذفنا مستخدم هنا ستحذف كل الفواتير المتعلقة به " وهذا خيار خطير ولكن نحتاجه أحيانا "

3- Set Null ... أي أنه عند حذف أو تعديل الرقم المسلسل مثلا في جدول الزبائن سيتم إستبداله بالقيمة Null في جدول الفواتير وذلك للحفاظ على بيانات الفواتير وللدلالة على أن الزبون الخاص بها تم حذفه أو تعديله " لازم الصف يكون بيقبل القيمة Null "

4- Set Default ... نفس عمل الخيار Null .. ولكن هنا بيحط القيمة الإفتراضية إلي إنت كنت عاملها للصف دة أثناء إنشاء الجدول . " لازم تكون حاتط قيمة إفتراضية على الصف "


-- أما عن الخيار Enforce For Replication فسنعود له عند الحديث عن الـ Replication إن شاء الله .. وهي عبارة عن صنع صورة طبق الأصل من قاعدة البيانات في مكان آخر .. وعند تغيير البيانات في أحدهم يتم نفس التغيير في قاعدة البيانات الأخرى
د لـهــــا م غير متصل   رد مع اقتباس
قديم 21-06-2007, 05:54 PM   #7
A J A J غير متصل
طالب فعال

 










افتراضي رد: تعلم SQL Server 2005 بالصور


دلهام ، رغم استخدامي لـSQL Server 2005 ، إلا أنك اثرت الكثير من النقاط والتفاصيل التي أجهلها وسأحتاجها مستقبلاً .

اشكرك كثيراً على موضوعك الأكثر من رائع ، وأتمنى دوماً الاستمرار .
A J غير متصل   رد مع اقتباس
قديم 27-06-2007, 08:16 AM   #8
ahHamdy ahHamdy غير متصل
T471 Tutor

 









افتراضي رد: تعلم SQL Server 2005 بالصور


الأخ دلهام
شكرا كثيرا على ما تفضلت به على الجميع من شرح مفصل ومبسط لهذا الموضوع وان كنت احب ان ارى في موضوعك "ما قبل الإستخدام" يعني كيف يتم تركيب SQL Server وما هي الإختيارات التي يجب أخذها في الإعتبار وشرح هذا الموضوع سيفيد العديد من زملائك الذين يرغبون في استخدام SQL Server ولو اضفت كيف يتم ضبط ال visual Studio لعمل اتصال مع قاعدة البيانات تكون قد قدمت خدمة جليلة للجميع
ahHamdy غير متصل   رد مع اقتباس
قديم 27-06-2007, 09:46 PM   #9
salamma salamma غير متصل
طالب نشيط
 
الصورة الرمزية salamma

 










افتراضي رد: تعلم SQL Server 2005 بالصور


استاذي الكريم دلهام منذ فترة وأنا لم أدخل مواضيع الشرح لأني لم استطع أن أجد الفائدة المرجوة منها وكلها لا تفي بالغرض

موضوعك تجاوزته كثيراً لاعتقادي بأنه مثل المواضيع الأخرى واليوم اثار فضولي أن أطالعه وفعلاً أنت رائع بكل ماتعني الكلمة

أعانك الله ووفقك والله يجعله بميزان حسناتك ياريت لو تكمل الشرح نكون لك شاكرين
salamma غير متصل   رد مع اقتباس
قديم 02-07-2007, 11:56 PM   #10
salamma salamma غير متصل
طالب نشيط
 
الصورة الرمزية salamma

 










افتراضي رد: تعلم SQL Server 2005 بالصور


لازلنا بانتظار إكمال الشرح

وياريت لو فيه موقع يشرح بالصور بالشكل هذا عربي أو إنجليزي تعطينا اياه نتابع معاه اكون لك شاكر
salamma غير متصل   رد مع اقتباس
قديم 05-07-2007, 02:22 PM   #11
عاصف هبوب ريح عاصف هبوب ريح غير متصل
طالب جديد

 









افتراضي رد: تعلم SQL Server 2005 بالصور


رائع يا مهندس دلهام
موضوعك مهم ومفيد للغاية
وأرجو من مشرفي المنتدى تثبيته وأعتقد أن المهندس دلهام وفى وكفى ويشكر على كل جهوده. وبالنسبة لطلب الدكتور أحمد حمدي لتوفير بعض الاضافات كما ذكرها في المشاركة رقم 8 فهذا مهم جدا وبه تكتمل المشاركة ويستفيد الجميع
طلب أخير أن يمدنا المهندس دلهام بباقي المعلومات التي حددها الدكتور وهو الأفضل أن سمحت ظروفه
أو البركة في المشاركين أعضاء المنتدى
والله يوفق الجميع
عاصف هبوب ريح غير متصل   رد مع اقتباس
قديم 09-07-2007, 10:21 AM   #12
وداد وداد غير متصل
طــالب

 









افتراضي رد: تعلم SQL Server 2005 بالصور


بارك الله فيك يا دلهام وفي صاحب الشرح بارك الله فيكم جميعا
وصراحه ماقصرت واتمنى منك تكمل لانه صراحه انا وحده من الناس اللي حيل استفدت وساستفاد اكثر من شرحك
فياليت ماتقصر وتغطي هالموضوع كامل سواء من البدايه من التثبيت وارتباطه بالفيجوال ستوديو والخ

واتمنالك التوفيق لك وللجميع انشالله دوووووم
وداد غير متصل   رد مع اقتباس
قديم 25-09-2007, 03:21 AM   #13
د.نت د.نت غير متصل
مشرف سابق

 











افتراضي رد: تعلم SQL Server 2005 بالصور


يعطيك الف عافيه على المجهود واتمنى لك التوفيق
د.نت غير متصل   رد مع اقتباس
قديم 07-10-2007, 03:05 AM   #14
GNU GNU غير متصل
طالب فعال
 
الصورة الرمزية GNU

 










افتراضي رد: تعلم SQL Server 2005 بالصور


الله يجزاك الجنة أخي دلهام لنقلك الموضوع و أخي ebnelbana2000 لشرحه.
هذي المواضيع المفيدة فعلاً

لي رجعه ان شاء لله بعد قرائة الموضوع جيداً و تطبيق كل ما جاء فيه ان شاء لله
GNU غير متصل   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع


الساعة الآن 07:13 PM.


Powered by vBulletin® Version 3.8.1, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. TranZ By Almuhajir
جميع المواضيع والمشاركات تعبر عن وجهة نظر أصحابها
ولا تعبر باي شكل من الاشكال عن وجهة نظر منتديات AOUA
تصميم وتطوير : التكنولوجيا الماسية