it-swarm.asia

جمع المفرد مقابل اسم الجدول المفرد

كيف يمكنني تسمية جداولي عند إنشاء قاعدة بيانات جديدة؟

المفرد: Client أو الجمع: Clients؟

43
John Isaiah Carmona

هذا يعود إليك. فقط كن متسقًا بالرغم من ذلك.

شخصيًا أفضل المفرد بناءً على ما يخزنه كل * صف: الطلب ، المنتج ، المستخدم ، العنصر ، إلخ.

يتطابق هذا مع النمذجة (عبر نمذجة دور الكائن) حيث أستخدم كيانات/أنواعًا فردية.

تعديل:

أحد الأسباب هو فشل الجمع عندما يكون لديك جداول ربط:
Orders ، Products سيعطي OrderProducts أو OrdersProducts. لا يبدو ذلك صحيحًا

أو جداول التاريخ (بالطبع يمكنك استخدام المخططات لهذا):
Orders -> OrdersHistory أو (لا!) OrdersHistories؟ ألن يكون Order-> OrderHistory أفضل؟

44
gbn

فيما يتعلق بأسماء الجداول المفردة مقابل الجمع ، يبدو أن الموضوع مثير للجدل ، ولكن لا ينبغي أن يكون كذلك.

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

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

إذا أردت بعد ذلك تحديد مجموعة في البرنامج ، يمكنك استخدام صيغة الجمع ، أو الأفضل ، استخدام مُعدِّل مناسب ، مثل EmployeeList أو EmployeeArray.

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

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

8
Bruce Patin

تمامًا مثل إجابة @ gbn أعتقد أن هذه مسألة تفضيلات تمامًا ، ومثله تمامًا ، أوصي بأن أي خيار قمت به ، قم بتطبيقه في كل مكان (في ذلك DB على الأقل). الاتساق يستحق ذلك.

أنا أفضل أن يكون الجمع أفضل في عبارات SELECT:

SELECT Id, Name, Status 
FROM   Persons
WHERE  Status <> 5  --5 meaning deleted

أعني في هذه الحالة ، على الأقل ، هناك العديد من الأشخاص في الجدول والعديد منهم يتم إعادتهم إلى العميل.

5
Andrei Rînea

"order" كلمة محجوزة. "أوامر" ليست كذلك

كلمة "مستخدم" هي كلمة محجوزة. "المستخدمين" ليس كذلك

"الجلسة" كلمة محجوزة. "الجلسات" ليست كذلك

"النتيجة" كلمة محجوزة. "النتائج" ليست كذلك

كلمة "نسبي" كلمة محجوزة. "الأقارب" ليسوا كذلك

...

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

5
Neil McGuigan

أعتقد أن جدول SQL يجب أن يكون له أسماء الجمع. يقرأ ببساطة أفضل بكثير.

يجب أن يسمى جدول سجلات الكتب دفاتر. يجب أن يستخدم ORM نفس الاتفاقية. كائن الكتب عبارة عن مجموعة ويترأس كافة السجلات في جدول الكتب. كائن كتاب يرأس على سجل واحد.

هذا يجعل الترميز أكثر طبيعية.

select name, publication_date from books where publication_date > '2000-01-01';

books = Books()
for book in books.get("publication_date >= '2000-01-01'"):
    print book.name
1
dlink

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

1
ColacX

نحن ننظر إلى الأشياء من وجهات نظر مختلفة ، وأعتقد أن المعسكرين يتم تحديدهما من خلال:

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

لذلك يمكن أن تحتوي "حاوية المستخدم" على صفوف متعددة.

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

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

أعتقد أن هذا أيضًا بسبب سنوات من الجمع وهي ممارسة شائعة وفي معظم المواد التعليمية عبر الإنترنت.


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

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

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

0
James

إنه أمر شخصي للغاية. أستخدم صيغة المفرد منذ 30 عامًا. لكن يمكنني أن أرى لماذا يحب الناس الجمع. الكتب - المؤلفون مثيرون للاهتمام حيث أعتقد أن مؤلفي الكتب ليسوا على خطأ. يمكن أن يكون للكتاب مؤلف واحد أو أكثر. وقد يكون المؤلفون قد كتبوا كتابًا واحدًا أو أكثر (على سبيل المثال ، كتاب مشترك). كما يعتمد أيضًا على كيفية التعامل مع الكتب التي كتبها أكثر من مؤلف. أتفق مع الإجابات الأخرى ؛ اختر واحدًا وكن متسقًا. فيما يتعلق بقضايا الكلمات المحجوزة. أعتقد أنه ليس من الصعب الخروج بأسماء الحلول. user -> app_user ، جلسة -> app_session ، طلب -> customer_order

0
Ray