مقالات وتدوينات
(3.0000)

24 قاعدة لتنسيق كود SQL

1,199 قراءة
0 تعليق
alt
التصنيف مقالات وتدوينات
وقت النشر
2022/10/05
الردود
0

ترجمة لمقال: 24 Rules To The SQL FORMATTING STANDARDS

مصدر الصورة


تتطلب كتابة الاستعلامات (Queries) الخاصة بقواعد البيانات معرفة جيّدة بطريقة صياغة SQL، ولكن هذا وحده لا يكفي، إذ تتطلب أفضل الممارسات لكتابة كود SQL احترافي مهارات تنسيق جيّدة!

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


لماذا يعدّ تنسيق كود SQL مهمًا؟

غالبًا لا يهتم مبرمجو SQL المبتدئون كثيرًا بتنسيق الكود. إذا كنت تعتقد أن التنسيق ليس له أي أهمية، ويمكن تجاهله، فانظر للكود أدناه:

SELECT id, FirstName, LASTNAME,c.nAme FROM people p left JOIN cities AS c on c.id=p.cityid;


تمت كتابة استعلام SQL أعلاه دون استخدام أي قواعد تنسيق.. الآن قارن ذلك مع الاستعلام المنسّق أدناه، (وهو لنفس الكود):

    SELECT p.PersonId,

                  p.FirstName,

                  p.LastName,

                  c.Name

      FROM Person AS p 

LEFT JOIN City AS c 

            ON p.CityId = c.CityId;


هل لاحظت الفرق؟

أيهما أكثر قابلية للقراءة؟

أي استعلام يمكن فهمه بسهولة؟


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


حسنًا، لقد فهمت الآن لماذا يُعدّ تنسيق كود SQL مهمًا، حان الوقت الآن لتتعلم كيفية القيام بذلك...


كيف تنسّق كود SQL تنسيقًا جيّدًا؟

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

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


في هذا الدليل سنناقش القواعد المشتركة والشائعة لتنسيق كود SQL ...


تسمية الكائنات

لتسمية كائنات قاعدة البيانات هنالك العديد من القواعد التي يجب اتباعها، سنتطرق للقواعد الأكثر شيوعًا: 

  • تجنّب تسمية الجدول أو العمود بصيغة الجمع. فمثلًا: من الأفضل استخدام كلمة ‘employee’ بدلًا من كلمة ‘employees’.
  • إذا كان اسم الجدول أو العمود مكوّنًا من أكثر من كلمة، فيجب استخدام الشرطة السفلية Underscore لفصل الكلمتين، مثل: ‘employee_city’. مع أن بعض المبرمجين يفضلّون استخدام طريقة أخرى عوضًا عن الشرطة السفلية وهي نمط أو أسلوب CamelCase مثل: ‘EmployeeCity’. وقد يختلف النمط المفضل باختلاف نظام قاعدة البيانات.
  • تأكّد أن الاسم ليس من الكلمات المفتاحية Keywords الخاصة بـ SQL.
  • إذا كان الاسم يتشابه مع أحد الكلمات المفتاحية Keywords، فقم بوضع الاسم داخل علامتي الاقتباس.
  • يجب أن يكون اسم الجدول أو العمود اسمًا فريدًا وليس طويلًا. تجنَب الأحرف الخاصة في الاسم مثل: $, &, * وغيرها، (استخدم فقط أحرف أو أرقام أو الشرطة السفلية Underscore).
  • استخدم الشرطة السفلية Underscore في الاسم فقط عند الحاجة.
  • لا تبدأ الاسم بشرطة سفلية Underscore.
  • استخدم التعليقات فقط إذا لزم الأمر.
  • تجنّب الاختصارات، ولكن إن كان لابد من استخدامها فتأكد من أنها مفهومة.
  • تجنّب تسمية العمود والجدول بنفس الاسم.
  • استخدم نفس قواعد التسمية المذكورة أعلاه للأسماء المستعارة Aliases الخاصة بالأعمدة أو الجداول.
  • في حال رغبتك بوضع اسم مستعار Alias لجدول أو عمود فقم بكتابة كلمة AS قبل الاسم المستعار لجعل الكود مفهومًا وأكثر قابلية للقراءة.
  • عند تسمية المفتاح الرئيسي Primary Key تجنّب الاسم id، أفضل طريقة هي كتابة id  مع اسم الجدول، مثل: ‘employee_id’.


المحاذاة

يوصي معظم خبراء البرمجة بكتابة الكلمات الرئيسية أو المفتاحية Keywords أولًا في سطر جديد إلى اليسار، ثم بقية الكود على يمينها، كما يظهر في الكود أدناه:

SELECT p.PersonId,

              p.FirstName,

              p.LastName,

              c.Name

  FROM Person AS p 

     JOIN City AS c 

        ON p.CityId = c.CityId;


المسافات البادئة

تساعد المسافات البادئة و الأسطر في قراءة الكود بسهولة. يُفضّل وضع كل استعلام في سطر جديد وكذلك الأعمدة يُفضّل وضعها في أسطر جديدة متبوعة بفاصلة Comma في نهاية كل سطر. أيضًا من الأفضل وضع مسافة قبل وبعد علامة المساواة (=)، وكذلك بعد الفاصلة Comma.


التعليقات

تجنّب الإكثار من وضع التعليقات في الكود، بالطبع هناك حالات تكون فيها التعليقات ضرورية، من الأفضل عادةً استخدام التعليقات متعددة الأسطر Multiple-Line Comments والتي يُشار إليها بـ بهذا الرمز   /*       */   (في منتصف الرمزين يتم كتابة التعليق)

ويوصى بكتابة هذا النوع من التعليقات في بداية سطر جديد، بدلًا من الكتابة في نفس سطر الكود المراد تنفيذه، يجب كتابة التعليق في السطر الذي يقع فوق سطر الكود، مع وضع مسافة بادئة، كما يظهر أدناه:

 SELECT p.PersonId,

               p.FirstName,

               p.LastName,

               /* Name column is the name of the city: */

               p.Name,

   FROM Person AS p 

 WHERE p.Name = 'New York'


يمكنك أيضًا إضافة تعليق في سطر واحد، هذا النوع من التعليقات يُشار إليه بشرطتين (--) في بداية نص التعليق، يتم التعامل مع أي نص بعد هذه العلامة كتعليق.

SELECT -- we have to delete this column p.PersonId,

              p.FirstName,

              p.LastName,

              p.Name

  FROM Person AS p; 



عبارات الاختيار  SELECT Statement

في هذا النوع من الاستعلامات تكون الكلمة SELECT هي أول كلمة في الأمر. إذا كان هناك أكثر من عمود بعد SELECT يُفضّل الفصل بينهم بوضع كل منهم في سطر جديد، يجب وضع مسافة بادئة لكل سطر جديد. تأكد من وضع فاصلة Comma في نهاية كل سطر وليس في بدايته.

SELECT p.PersonId,

              p.FirstName,  

              p.LastName,

              c.Name

  FROM Person AS p;


فيما يتعلق بالكلمات المفتاحية GROUP BY , ORDER BY , WHERE , FROM  و HAVING

يجب كتابتها في سطر جديد.

SELECT p.PersonId,

       p.FirstName,

       p.LastName,

       p.Name,

  FROM Person AS p 

 WHERE p.Name = 'New York'


في حال كان هناك أكثر من شرط بعد كلمة WHERE، يجب وضع كل شرط في سطر جديد مع وضع مسافة بادئة، كذلك الأمر بالنسبة للكلمات الشرطية AND و OR يجب وضعهم في سطر جديد مع وضع مسافة بادئة.

SELECT p.PersonId,

              p.FirstName,

              p.LastName,

              p.Name

  FROM Person AS p 

WHERE p.Name = 'New York'

        OR p.Name = 'Chicago'





عبارات الربط JOIN

عند ربط الجداول، يجب وضع سطر جديد لعبارات الربط INNER JOIN, LEFT JOIN وغيرها. وبالنسبة للكلمة ON يجب وضعها كذلك في سطر جديد بمسافة بادئة، وإذا كان هناك أكثر من شرط، يجب وضع سطر جديد بمسافة بادئة قبل الكلمات الشرطية AND و OR.

SELECT p.PersonId,

              p.FirstName,

              p.LastName,

              c.Name

  FROM Person AS p 

     JOIN City AS c 

        ON p.CityId = c.CityId;


استعلامات SQL الطويلة والمتداخلة Nested

عادةً ما تحتوي الاستعلامات الطويلة على استعلامات فرعية Subqueries. في هذه الحالة يجب أن يكون الاستعلام الفرعي في سطر جديد بمسافة بادئة.

بالنسبة للجملة الشرطية CASE يجب كتابة WHEN و END في سطر جديد.

SELECT p.PersonId,

              p.FirstName,

              p.LastName,

              CASE

                  WHEN p.Age < 18 THEN 'below 18'

                  WHEN p.Age >= 18 THEN '18 or more'

              END AS Age

  FROM Person AS p;



بعض أنواع استعلامات SQL الأخرى

  •  تطبّق نفس القواعد السابقة في استعلامات التعديل أو التحديث والحذف والإضافة (Update, Insert, Delete Queries
  •  ضع مسافة بادئة عند إضافة البيانات


INSERT INTO Car(id_car, name, year) VALUES

  (1, 'Audi', 2010); 


  • في حال أردت إضافة أكثر من سطر في استعلام واحد، فيجب كتابة كل صف في سطر جديد بمسافة بادئة..


INSERT INTO Car(id_car, name, year) VALUES

  (1, 'Audi', 2010), 

  (2, 'Skoda' 2015);


  • استخدم نفس الطريقة عند كتابتك لاستعلام التحديث Update Query ضع الكلمة SET و WHERE بنفس الطريقة التي تضيف بها العبارات في جملة SELECT، في سطر جديد بدون مسافة بادئة.


UPDATE Car

SET year = 2012

WHERE Name = 'Audi'


  • وكذلك الأمر في استعلام الحذف DELETE Query


DELETE FROM Car

WHERE Name = 'Audi'



كيف يمكن أن يؤدي التنسيق السيء للكود إلى مشاكل؟


 أحد الأمثلة التي توضّح كيف يمكن أن يؤدي التنسيق السيء إلى مشاكل، نراه في الاستعلام التالي، حيث وُضعت الفواصل في بداية الأسطر:

SELECT /* we have to delete this column */ p.PersonId

            , p.FirstName

            , p.LastName

            , p.Name

  FROM Person AS p 

WHERE p.Name = 'New York'



في الكود أعلاه من السهل جدًا أن تقع في الخطأ فمثلًا إن أردت أن تحذف جزء WHERE من الاستعلام الرئيسي، فقد تحذف بالخطأ جزء WHERE من الاستعلام الفرعي Subquery كذلك.

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


الخلاصة

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



رنا عبد الكريم

التعليقات (0)

قم بتسجيل الدخول لتتمكن من إضافة رد