مرحبا شبيبة ![]()
بصراحة خطرلي السؤال امبارحة, أنو ما هي الأسس التي يتبعها المطورون في تسمية قواعد البيانات؟
تولد هالسؤال عندي بعد نقاش مع أحد الزملاء, وجدت أنو أنا بتبع طريقة بالتسمية بتختلف عنو, حاولت دور بالانترنت شوي على standard معين لتسمية قواعد البيانات بس ما لقيت, لاحظت أنو المطورين كل واحد عامل لحالو standard وماشي عليه ![]()
بالنسبة لتسمية الجداول:
- البعض بيستخدم الـHungarian Notation بيقسم الجداول الى أنواع وبيستخدم prefix بتسمية الجدول, على سبيل المثال جداول معطيات بتبدأ بـ tbl مثال tblCustomer, أو جداول الـlist (بيكون وظيفتها تخزين معطيات لقائمة منسدلة) بتبدأ بـlist مثال: listPaymentType, والبادئة link لتسمية الجداول الوسيطة بين جداول علاقات الـmany-to-many مثال: linkDepartmentPersonnel..... الخ, وبيعلل استخدامو لمتل هالطريقة أنو معرفة وظيفة الجدول بيصير أسهل وأكثر وضوحا بمجرد قراءة اسم الجدول.
- البعض بيعتبر الطريقة السابقة ليس لها داعي لأن استخدام أسماء جداول معبرة كافي لمعرفة وظيفة الجدول.
- البعض يستخدم الجمع لتسمية جداوله مثال: Customers, لأنها تعبر عن مجموعة من المدخلات المستجمعة.
- بينما يرى آخرون انه يجب استخدام أسماء مفردة مثال: customer, لأن ذلك أكثر منطقية عند كتابة تعليمات الـSQL ولأن هذه القاعدة موجودة ضمن توصيات التسمية الخاصة بمخططات الـERD وفي الـUML.
بالنسبة لتسمية الأعمدة:
- البعض يرى أنه من الأفضل كتابة أسماء الأعمدة بأحرف صغيرة واستخدام الـunderscore عند وجود اسم مركب مثال: customer_name وحجتهم في ذلك أن بعض برامج إدارة قواعد البيانات تسمح بالتمييز بين الحروف الكبيرة والصغيرة والبعض الآخر لا , والبعض الآخر يجبرك بحروف كبيره, حيث هدفهم من ذلك أن تكون الأسماء قياسية وتعمل على أي نوع قاعدة بيانات مما يسهل الإنتقال المستقبلي ويبسط عملية تنقيح المنتج في حال الترقية المستقبلية.
- بينما يرى آخرون أن استخدام الـCamelCase أفضل ولا يحبذون أبدا استخدام الـundescore مثال: CustomerID, ويتذرعون ان كتابة الـunderscore أصعب, وأن شكل التسمية "مفشلك" وغير جميل
.
- البعض يستخدم الـHungerian Notation هنا أيضا بينما يرفض آخرون ذلك مثال: intCustomerID.
- البعض يدعو الى استخدام الاختصارات حتى لا يطول اسم العمود مثال: DeptID للتعبير عن Department ID.
- في حين يرى البعض أن ذلك يؤدي الى فهم الاختصار بشكل مفلوط أحيانا فاختصار مثل Prod_Count قد يعني Product? Produced? Production?.
- البعض يرى انه لا يجب استخدام نفس اسم العمود على مستوى قاعدة البيانات, فمثلا لا يجب تكرار اسم الحقل ID في جدولي الـCustomer و الـPayment, لكن أن يتم تسميته باستخدام اسم الجدول أولا + اسم العمود ثانيا, ويتذرعون بالـCode Generation.
- بينما يرى آخرون أنه لا بأس بذلك لأن كل عمود مرتبط بجدول مستقل.
- من توصيات البعض أن يتم دوما البدء بالرأس ثم الانتقال الى التفصيل, فلا يجب تسمية عمود الـ lastName كهذا ولكن يجب البدء بـName ثم Last مثال: name_last, name_middle, name_first, id_customer.
- أيضا من توصيات البعض عدم استخدام الزيادة التلقائية بل عمل ذلك برمجيا او بالاستفادة من مزايا الـRDBMS, حتى بعدهم ذهب أبعد من ذلك ونصح باستخدام الـGUID بدل الـinteger.
- أيضا من توصيات البعض استخدام مفاتيح أساسية حتى لو يكن هنالك حاجة اليها.
بالرغم من ذلك نرى أن الجميع متفقون على بعض الأمور:
- لا يجب استخدام المسافات في التسميات حتى لو سمح بذلك برنامج ادارة قواعد البيانات.
- لا يجب استخدام المحارف غير الانكليزية حتى لو سمح بذلك برنامج ادارة قواعد البيانات.
- عدم استخدام اسماء أعمدة تطابق أسم الجدول.
- عدم استخدام الكلمات المحجوزة ضمن قاعدة بياناتك, (لا تستخدم name مثلا!).
- عدم البدء بأرقام, أو حتى عدم استخدام الأرقام نهائيا.
بالنسبة لك أنت ما هي الـnaming conventions التي تسخدمها في قواعد بياناتك التي تصممها؟



