رائد ابو فيصل
22-03-2010, 12:26 PM
السلام عليكم ورحمة الله وبركاته
قيود اسماء الجداول والحقول. وانواع محركات الحفظ Storage Engine(دورة MySql )
درس اليوم سنتحدث به عن القيود التى يجب الإلتزام بها فى اسماء الجداول
والحقول وايضا اسماء قاعدة البيانات.
ثم بعد ذلك سنلقى نظرة على محركات حفظ البيانات او مايسمى Storage Engine
نبدأ بسم الله
اولا (كا مراجعة سريعة لما سبق) ضع فى الإعتبار ان تصميم قاعدة البيانات
كما ذكرنا مسبقا شئ يحتاج للتخطيط.
فهو تماما كأنك تنشئ سجل عملاء (مثلا) يتم حفظ بيانات جميع العملاء داخل هذا السجل.
بالتالى عند انشائك لهذا السجل للمرة الأولى يجب ان تخطط وتحدد اى بيانات يجب ان يتم حفظها.
وماهى البيانات الإجبارية التى لا يمكن تسجيل عميل بدونها (مثل الإسم او رقم الهوية الشخصية, الخ) وماهى البيانات التى يمكن ان يتم تسجيل العميل بدونها (كارقم الجوال مثلا).
بعد هذا فأنت حددت الجداول التى سيتم وضعها بهذا السجل.
وتبدأ فى اسامى هذه الجداول والحقول المتفرعة منها.
لكن هناك قيود معينة (ونصائح ايضا) يجب التقيد بها فى اسامى الحقول والجداول.
والقائمة التالية يتم الإلتزام بها على اسماء الحقول Columns او الجداول Tables او قاعدة البيانات نفسها Database
1.يجب ان يكون الأسم مكون من حروف انجليزية فقظ
2.لا يمكن وضع مسافات فى الأسماء
3.لا تجعل الأسم اكثر من 64 حرف (هذه نصيحة وليست قاعدة يلتزم بها)
4.اسماء الحقول دائما كن حريص على ان تجعلها قصيرة وبنفس الوقت تصف محتوى هذا الحقل (نصيحة)
5.اسماء الحقول يجب ان لا تكون مكررة بأكثر من جدول (بإستثناء اسامى الـ Primary Key والـ Foreign Key ) (نصيحة ايضا, وهذه نصيحة يمكنك ان تعتبرها قاعدة وتلتزم بها حتى لا تتسبب فى العناء لنفسك)
6.لا تستخدم احد الكلمات المحفوظة مسبقا فى الـ MySql [/COLOR (http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-0.html)]فى الأسماء
[COLOR="Red"]7.استخدم الـ _ للفصل بين الكلمات (نصيحة)
8.تجنب استخدام الأحرف الكبيرة (هذه تفضيلات شخصية وتختلف من شخص لأخر)
9.حقول الـ PK ضع بنهايتها كلمة id اما بإضافتها مباشرة او بالفصل بـ _ كالتالى _id (نصيحة لكن يمكن ان تندم ان لم تعمل بها)
10.عند انشائك للجداول, اجعل دائما اول حقل هو الـ PK ومن بعده الـ Foreign Key
التزم بما ورد فى هذه القائمة ولن تندم على هذا الإلتزام بإذن الله.
ننتقل للجزء الثانى من درس اليوم وهو الـ Storage Engine
هناك العديد من محركات حفظ البيانات التى تم تقديمها بواسطة MySql
لكننا سنلقى نظرة على اشهر ثلاثة انواع فقط فى هذا الدرس
وبإذن الله مع الوقت ستتعلم المزيد.
كل نوع من هذه الأنواع يأتى معه مجموعة من الخواص تميزه عن غيره.
اهم هذه الأنواع هو النوع MyISAM
وهو الأكثر انتشارا بين مختلف التطبيقات.
هذا النوع يعمل بسرعة فائمة مع عمليتين الـ SELECT والـ INSERT
لكن هذا النوع لا يمكنه التعامل مع عمليات الـ transactions (سوف يتم شرح هذه المصطلحات فيما بعد)
يأتى من بعد هذا النوع, النوعين InnoDB و MEMORY
النوع InnoDB يمكنه التعامل مع عمليات الـ transactions وعمليات الـ UPDATE بشكل جيد. الا انه بشكل عام ابطء من MyISAM, ويتطلب مساحة اكبر على الخادم.
النوع الثالث MEMORY
وهو ادائه افضل بكثير من ماسبق. لكن الجداول التى يتم تعيين هذا المحرك لها
يتم تخزين بياناتها داخل ذاكرة الخادم وليس داخل ملفات. وهذا هو الثمن الذى تدفعه.
كما ان جداول الـ MEMORY يمكنها التعامل فقط مع الحقول ذات الطول الثابت (مثل CHAR) ولا تدعم الـ AUTO_INCREMENT ويتم فقدان كل ماتم تخزينه به مع اول تعليق (لاج) او إعادة تشغيل للخادم!.
اذن كيف تحدد نوع محرك حفظ البيانات الذى تستخدمه؟
1.قم بفتح الـ MySQL Console (كما تم شرح الطريقة بالدرس الأول بالدورة) لتستعلم عن انواع المحركات المتوفرة لديك (وهذا الأمر يختلف من إعداد لأخر)
2.اكتب التالى
كود:
SHOW ENGINES;
سوف يظهر لك قائمة بأنواع المحركات المتوفرة لك.
3.قرر هل ستحتاج خاصية الـ transaction ام لا
خاصية الـ transaction هى امنة نوعا ما, حيث انها تمكنك ان تعيد تغييرات بعد قيامك بها (كا استرجاع ماقمت بحذفه مثلا) والحفاظ على بياناتك فى حالة حدوث خلل ما بالخادم, لكن المحركات التى لا تدعم الـ transaction هى اسرع وتستهلك مساحة اقل فى الخادم.
بناء على ذلك, اذا كنت ستحتاج الـ transaction (سأشرحها بالتفصيل فيما بعد)
استخدم المحرك InnoDB غير ذلك استخدم MyISAM
4.لاتنسى ايضا اننا دائما نحاول ان نقلل كل من الضغط والمساحة التى يتم استهلاكهم بالخادم, وبنفس الوقت نحتاج للسرعة وجودة الأداء.
لذلك يمكنك استخدام المحرك MEMORY فى حالة الجداول التى تحفظ بيانات مؤقتة.
يعنى البيانات التى توضع لفترات بسيطة ويتم حذفها, مثل جداول المتواجدون الأن مثلا. (التى تراها ببعض المواقع)
ملحوظات قبل انهاء الدرس
•محركات الحفظ, هى خاصية يتم تحديدها لكل جدول, بالتالى قاعدة بيانات واحدة يمكن ان يكون بها اكثر من محرك.
على سبيل المثال, موقع تجارى, ربما يستخدم المحرك MyISAM لحفظ المنتجات وبيانتها, وحفظ بيانات العملاء, ويستخدم InnoDB لحفظ طلبات الشراء (ليتمكن فيما بعد من التراجع فيما تم حجزه للشراء)
•كل نوع من انواع محركات الحفظ له خصائص خاصة به. ماهو الحد الأقصى للـ indexes (او الفهارس وسيتم شرحها فيما بعد), اى انواع الحقول التى يمكن فهرستها, الحد الأقصى لحجم الجدول, الخ.
بالتالى يفضل قبل استخدام اى نوع ليس لديك معلومات كافية عنه, ان تراجع وثائق الـ MySql لتعرف كل شئ عنه.
•اذا حاولت تعيين نوع من انواع محركات الحفظ لأحد الجداول, وكان هذا النوع غير مدعوم لدى الإصدار المستخدم, سيتم تعيين المحرك الإفتراضى لهذا الجدل.
ويمكنك معرفة اى نوع هو الإفتراضى لديك عندما تقم بإجراء الإستعلام الموجودى بالخطوة الثانية اعلاه, سوف ترى اما اسم احد المحركات كلمة Default
اتمنى تكون استفدت من الدرس.
مع اطيب تمنيات بالتوفيق بإذن الله.
اقرأ ايضا..
•الدرس السابق خصائص اضافية لأنواع الحقول Databases Column Characteristics (http://www.abc4web.net/vb/showthread.php?t=7616)
•الدرس التالى ترميز قاعدة البيانات وانشائها وانشاء الجداول MySQL
من الدعم العربي
قيود اسماء الجداول والحقول. وانواع محركات الحفظ Storage Engine(دورة MySql )
درس اليوم سنتحدث به عن القيود التى يجب الإلتزام بها فى اسماء الجداول
والحقول وايضا اسماء قاعدة البيانات.
ثم بعد ذلك سنلقى نظرة على محركات حفظ البيانات او مايسمى Storage Engine
نبدأ بسم الله
اولا (كا مراجعة سريعة لما سبق) ضع فى الإعتبار ان تصميم قاعدة البيانات
كما ذكرنا مسبقا شئ يحتاج للتخطيط.
فهو تماما كأنك تنشئ سجل عملاء (مثلا) يتم حفظ بيانات جميع العملاء داخل هذا السجل.
بالتالى عند انشائك لهذا السجل للمرة الأولى يجب ان تخطط وتحدد اى بيانات يجب ان يتم حفظها.
وماهى البيانات الإجبارية التى لا يمكن تسجيل عميل بدونها (مثل الإسم او رقم الهوية الشخصية, الخ) وماهى البيانات التى يمكن ان يتم تسجيل العميل بدونها (كارقم الجوال مثلا).
بعد هذا فأنت حددت الجداول التى سيتم وضعها بهذا السجل.
وتبدأ فى اسامى هذه الجداول والحقول المتفرعة منها.
لكن هناك قيود معينة (ونصائح ايضا) يجب التقيد بها فى اسامى الحقول والجداول.
والقائمة التالية يتم الإلتزام بها على اسماء الحقول Columns او الجداول Tables او قاعدة البيانات نفسها Database
1.يجب ان يكون الأسم مكون من حروف انجليزية فقظ
2.لا يمكن وضع مسافات فى الأسماء
3.لا تجعل الأسم اكثر من 64 حرف (هذه نصيحة وليست قاعدة يلتزم بها)
4.اسماء الحقول دائما كن حريص على ان تجعلها قصيرة وبنفس الوقت تصف محتوى هذا الحقل (نصيحة)
5.اسماء الحقول يجب ان لا تكون مكررة بأكثر من جدول (بإستثناء اسامى الـ Primary Key والـ Foreign Key ) (نصيحة ايضا, وهذه نصيحة يمكنك ان تعتبرها قاعدة وتلتزم بها حتى لا تتسبب فى العناء لنفسك)
6.لا تستخدم احد الكلمات المحفوظة مسبقا فى الـ MySql [/COLOR (http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-0.html)]فى الأسماء
[COLOR="Red"]7.استخدم الـ _ للفصل بين الكلمات (نصيحة)
8.تجنب استخدام الأحرف الكبيرة (هذه تفضيلات شخصية وتختلف من شخص لأخر)
9.حقول الـ PK ضع بنهايتها كلمة id اما بإضافتها مباشرة او بالفصل بـ _ كالتالى _id (نصيحة لكن يمكن ان تندم ان لم تعمل بها)
10.عند انشائك للجداول, اجعل دائما اول حقل هو الـ PK ومن بعده الـ Foreign Key
التزم بما ورد فى هذه القائمة ولن تندم على هذا الإلتزام بإذن الله.
ننتقل للجزء الثانى من درس اليوم وهو الـ Storage Engine
هناك العديد من محركات حفظ البيانات التى تم تقديمها بواسطة MySql
لكننا سنلقى نظرة على اشهر ثلاثة انواع فقط فى هذا الدرس
وبإذن الله مع الوقت ستتعلم المزيد.
كل نوع من هذه الأنواع يأتى معه مجموعة من الخواص تميزه عن غيره.
اهم هذه الأنواع هو النوع MyISAM
وهو الأكثر انتشارا بين مختلف التطبيقات.
هذا النوع يعمل بسرعة فائمة مع عمليتين الـ SELECT والـ INSERT
لكن هذا النوع لا يمكنه التعامل مع عمليات الـ transactions (سوف يتم شرح هذه المصطلحات فيما بعد)
يأتى من بعد هذا النوع, النوعين InnoDB و MEMORY
النوع InnoDB يمكنه التعامل مع عمليات الـ transactions وعمليات الـ UPDATE بشكل جيد. الا انه بشكل عام ابطء من MyISAM, ويتطلب مساحة اكبر على الخادم.
النوع الثالث MEMORY
وهو ادائه افضل بكثير من ماسبق. لكن الجداول التى يتم تعيين هذا المحرك لها
يتم تخزين بياناتها داخل ذاكرة الخادم وليس داخل ملفات. وهذا هو الثمن الذى تدفعه.
كما ان جداول الـ MEMORY يمكنها التعامل فقط مع الحقول ذات الطول الثابت (مثل CHAR) ولا تدعم الـ AUTO_INCREMENT ويتم فقدان كل ماتم تخزينه به مع اول تعليق (لاج) او إعادة تشغيل للخادم!.
اذن كيف تحدد نوع محرك حفظ البيانات الذى تستخدمه؟
1.قم بفتح الـ MySQL Console (كما تم شرح الطريقة بالدرس الأول بالدورة) لتستعلم عن انواع المحركات المتوفرة لديك (وهذا الأمر يختلف من إعداد لأخر)
2.اكتب التالى
كود:
SHOW ENGINES;
سوف يظهر لك قائمة بأنواع المحركات المتوفرة لك.
3.قرر هل ستحتاج خاصية الـ transaction ام لا
خاصية الـ transaction هى امنة نوعا ما, حيث انها تمكنك ان تعيد تغييرات بعد قيامك بها (كا استرجاع ماقمت بحذفه مثلا) والحفاظ على بياناتك فى حالة حدوث خلل ما بالخادم, لكن المحركات التى لا تدعم الـ transaction هى اسرع وتستهلك مساحة اقل فى الخادم.
بناء على ذلك, اذا كنت ستحتاج الـ transaction (سأشرحها بالتفصيل فيما بعد)
استخدم المحرك InnoDB غير ذلك استخدم MyISAM
4.لاتنسى ايضا اننا دائما نحاول ان نقلل كل من الضغط والمساحة التى يتم استهلاكهم بالخادم, وبنفس الوقت نحتاج للسرعة وجودة الأداء.
لذلك يمكنك استخدام المحرك MEMORY فى حالة الجداول التى تحفظ بيانات مؤقتة.
يعنى البيانات التى توضع لفترات بسيطة ويتم حذفها, مثل جداول المتواجدون الأن مثلا. (التى تراها ببعض المواقع)
ملحوظات قبل انهاء الدرس
•محركات الحفظ, هى خاصية يتم تحديدها لكل جدول, بالتالى قاعدة بيانات واحدة يمكن ان يكون بها اكثر من محرك.
على سبيل المثال, موقع تجارى, ربما يستخدم المحرك MyISAM لحفظ المنتجات وبيانتها, وحفظ بيانات العملاء, ويستخدم InnoDB لحفظ طلبات الشراء (ليتمكن فيما بعد من التراجع فيما تم حجزه للشراء)
•كل نوع من انواع محركات الحفظ له خصائص خاصة به. ماهو الحد الأقصى للـ indexes (او الفهارس وسيتم شرحها فيما بعد), اى انواع الحقول التى يمكن فهرستها, الحد الأقصى لحجم الجدول, الخ.
بالتالى يفضل قبل استخدام اى نوع ليس لديك معلومات كافية عنه, ان تراجع وثائق الـ MySql لتعرف كل شئ عنه.
•اذا حاولت تعيين نوع من انواع محركات الحفظ لأحد الجداول, وكان هذا النوع غير مدعوم لدى الإصدار المستخدم, سيتم تعيين المحرك الإفتراضى لهذا الجدل.
ويمكنك معرفة اى نوع هو الإفتراضى لديك عندما تقم بإجراء الإستعلام الموجودى بالخطوة الثانية اعلاه, سوف ترى اما اسم احد المحركات كلمة Default
اتمنى تكون استفدت من الدرس.
مع اطيب تمنيات بالتوفيق بإذن الله.
اقرأ ايضا..
•الدرس السابق خصائص اضافية لأنواع الحقول Databases Column Characteristics (http://www.abc4web.net/vb/showthread.php?t=7616)
•الدرس التالى ترميز قاعدة البيانات وانشائها وانشاء الجداول MySQL
من الدعم العربي