What naming convention do you use in your databases?

Syriano

مرحبا شبيبة Smile

بصراحة خطرلي السؤال امبارحة, أنو ما هي الأسس التي يتبعها المطورون في تسمية قواعد البيانات؟
تولد هالسؤال عندي بعد نقاش مع أحد الزملاء, وجدت أنو أنا بتبع طريقة بالتسمية بتختلف عنو, حاولت دور بالانترنت شوي على standard معين لتسمية قواعد البيانات بس ما لقيت, لاحظت أنو المطورين كل واحد عامل لحالو standard وماشي عليه Smile

بالنسبة لتسمية الجداول:
- البعض بيستخدم الـ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 أصعب, وأن شكل التسمية "مفشلك" وغير جميل Smile.

- البعض يستخدم الـ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 التي تسخدمها في قواعد بياناتك التي تصممها؟

خيارات عرض التعليق

اختر الطريقة التي تفضلها لعرض التعليقات، ثم اضغط على "احفظ الإعدادات" لتفعل التغيرات.
The Tornado

بتذكر كان في Standard للتسمية بالـ SQL Server من عندك Microsoft للي بحب يمشي عليه بس ما لقيت الملف عندي

انا بالعادة بسمي هيك DepartmentID بحب الأسماء الكاملة من دون underscore وحرف كبير أول كل كلمة

ومن أنصار عدم تكرير اسم الحقل إلا إذا كان بيعني انو الحقلين متساويين بالجدولين متل الـ Foreign Key

mpcabd

حلو الموضوع Smile

أنا بستعمل التوليفة التالية:

  • أسماء الجداول هي اسماء مفردة (Customer, Student), وبحب أستعمل هاد النمط من camelCase في حال كان الاسم مركب.
  • بستخدم نمط studentCourse في حال كان الجدول علاقة ربط بين جدولين.
  • أسماء الحقول ما عندي مشكلة تتكرر أبداً.
  • كل الجداول عندي بتحوي حقل اسمو ID نمطو Integer وبيزيد تلقائياً وهو دائماً المفتاح الرئيسي Primary Key.
  • ما بحب استعمل الـ Underscore أبداً بالتسمية.

هاد أغلب التوصيف يلي بستعملو.

ʃ ¦8<3={| )