النموذج العادي الثالث

Alnmwdhj Al Ady Althalth



هذا هو الجزء الثالث من السلسلة ، خمسة أشكال عادية. عناوين الجزأين الأولين (الدروس) هي النموذج العادي الأول ، متبوعًا بالنموذج العادي الثاني. في هذا الجزء من السلسلة ، تم شرح النموذج العادي الثالث.

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







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



ومع ذلك ، قبل بدء المحل ، لم يكن المالك ولا الموظفون يعرفون أي شيء عن الأشكال العادية. لذلك ، كانوا يسجلون كل شيء على أنه معاملات في جدول واحد ودفتر تمارين واحد. لم يكن لديهم جهاز كمبيوتر.



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





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

المنتجات (معرّف المنتج ، معرّف الفئة ، والمنتج)
الفئات (معرّف الفئة ، الفئة)



المبيعات (معرف البيع ، العميل ، الموظف ، التاريخ)
تفاصيل البيع (معرف البيع ، معرف المنتج ، الرقم المباع ، سعر البيع)

الطلبات (معرف الطلب ، المورد ، الموظف ، التاريخ)
تفاصيل الطلب (معرف الطلب ، معرف المنتج ، رقم الشراء ، التكلفة السعر)

تم وضع خط تحت المفاتيح المفردة أو المركبة.

بعد تلخيص ما تم تدريسه في اليومين الماضيين وقبل أن تتمكن من فعل أي شيء ، يسأل المالك:

'ماذا عن أرقام الهواتف والعناوين وما إلى ذلك للعملاء والموظفين؟

ماذا عن الكمية في المخزون ، ومستوى إعادة الطلب ، وما إلى ذلك ، بالنسبة للمنتجات؟
هل يحتاجون إلى طاولات منفصلة خاصة بهم ، أم ينبغي تركيبها في الجداول الحالية؟ '

أنت ، مطور قاعدة البيانات ، تجيب:

'مبروك يا مالك! لقد أدخلت بشكل غير مباشر مسألة النموذج العادي الثالث '.

استمر.

أعمدة أخرى ضرورية

يتم أولاً إضافة الأعمدة الضرورية الأخرى إلى الجداول السابقة الموجودة في 1NF و 2NF. تم تعديل بعض أسماء الأعمدة السابقة.

كحد أدنى ، يجب أن يحتوي جدول الفئات على الأعمدة التالية:

الفئات (معرّف الفئة ، اسم الفئة ، الوصف)

الوصف فقرة قصيرة تصف الفئة. جدول الفئات هذا موجود بالفعل في 1NF و 2NF و 3NF. يتم شرح 3NF أدناه:

كحد أدنى ، يجب أن يحتوي جدول المنتجات على الأعمدة التالية:

المنتجات (معرّف المنتج ، معرّف الفئة ، معرّف المورد ، اسم المنتج ، سعر الوحدة ، الكمية في المخزون ، إعادة ترتيب المستوى)

نظرًا لأنه يتم بيع كل منتج ، سيتم الوصول إلى مستوى (رقم) منخفض من المنتجات عندما يتعين إعادة ترتيب المنتج ، لذلك لا ينبغي للعملاء القدوم إلى المتجر وعدم امتلاك المنتج. هذا الغياب ليس جيدًا للعمل. الكمية في المخزون هو رقم منتج معين في المخزون. وهذا يشمل ما يوجد في المتجر وما يوجد على الرف.

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

جدول المنتجات هذا موجود بالفعل في 1NF و 2NF و 3NF. تعرف على سبب وجوده في 3NF أدناه:

كحد أدنى ، يجب أن يحتوي جدول تفاصيل البيع على الأعمدة التالية:

تفاصيل البيع (معرف البيع ، معرف المنتج ، سعر البيع للوحدة ، الكمية ، الخصم)

من المتوقع أن تكون قيمة الخصم صفراً في معظم الأوقات. الخصم هو الخصم الذي يمنحه المتجر للعميل.

كحد أدنى ، يجب أن يحتوي جدول OrderDetails على الأعمدة التالية:

تفاصيل الطلب (معرف الطلب ، معرف المنتج ، سعر الوحدة ، الكمية ، الخصم)

من المتوقع أن تكون قيمة الخصم صفراً في معظم الأوقات. الخصم هنا هو الخصم الذي يمنحه المورد للمحل.

كما هو موضح أدناه ، يمكن اعتبار جدول المنتجات في 2NF أو 3NF. تحتوي جداول الطلبات والمبيعات على إصدار 3NF. سيتم استخدام جدول المبيعات فقط لشرح المشكلة والحل. يتبع 3NF لجدول الطلبات وجدول المنتجات نفس المنطق وسيتم اقتباسه للتو.

أثناء إضافة الأعمدة ، سيكون جدول المبيعات كما يلي:

المبيعات (معرف البيع ، تاريخ البيع ، اسم العميل ، الهاتف ، العنوان ، المدينة ، المنطقة ، الرمز البريدي ، البلد ، الموظف)

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

لا يزال جدول المبيعات هذا في 2NF حيث لم يتم انتهاك قواعد 1NF و 2NF. ومع ذلك ، يجب إدراك أنه في صف جدول المبيعات ، تم استبدال العميل (الاسم) بسبعة خلايا صف عميل.

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

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

جدول المبيعات - 2NF - بدون معرف العميل

عمود SaleID نوع البيانات هو عدد صحيح أو ، أفضل ، زيادة تلقائية. نوع بيانات عمود التاريخ المباع هو تاريخ وليس رقمًا لأنه يحتوي على الحرف '/' ، وهو ليس رقمًا. نوع البيانات لبقية الأعمدة ، بما في ذلك عمود الهاتف ، هو سلسلة (أو نص). قيمة الهاتف لها الحرف '-' ، وهو ليس رقمًا.

لاحظ أنه بالنسبة لكل صف ، تم استبدال العميل (الاسم) ، كما كان في الجزء السابق من السلسلة ، بسبع خلايا ، واحدة منها لا تزال اسم العميل. هذا يعني أن بيانات العميل هي كيان. حاليًا ، يحدد اسم العميل بياناته الستة الأخرى على التوالي. إذا تمت برمجة هذا الجدول ، فسيكون من الملائم تحديد كيان العميل في كل صف بعدد صحيح (وليس زيادة تلقائية). في هذه الحالة ، يجب أن يسبق عمود معرف العميل اسم العميل. الجدول السابق يصبح:

جدول المبيعات - 2NF - مع معرف العميل

هناك ثلاثة معرفات للعملاء: 1 و 2 و 3 ، مع ظهور 1 خمس مرات لجون سميث ، و 2 حدث مرتين لجيمس تايلور ، و 3 مرة واحدة لسوزان رايت.

لاحظ أن بعض معرفات العملاء والمُعاليين يتكررون.

قواعد النموذج العادي الثالث

يكون الجدول في النموذج العادي الثالث إذا كان يلتزم بالقواعد التالية:

  1. يجب أن يكون بالفعل في النموذج العادي الثاني.
  2. ولا ينبغي أن يكون لها تبعية انتقالية.

ثم يسأل أحد الكتبة (الموظفين) ، 'ما هي التبعية المتعدية؟'. وأنت ، مطور قاعدة البيانات ، تجيب ، 'هذا سؤال جيد!'

تبعية متعدية

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

هذه التبعية لـ CustumerID هي تبعية متعدية. ويطلق على معرف العميل اسم مفتاح خارجي ويتم وضع خط تحته خط في سلسلة البرامج التعليمية هذه ، النماذج الخمسة العادية.

لنفترض أن سمة غير أساسية (قيمة خلية غير أساسية) تعتمد على سمات أخرى غير أساسية ، وأن السمة غير الأولية المعنية (على سبيل المثال ، معرف العميل والمستخدمين التابعين لها) لا تعتمد على المفتاح الأساسي وبقية الخلية القيم في الصف. ثم هذه تبعية متعدية.

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

جدول المبيعات من 2NF إلى 3NF

لحل المشكلة التي يطرحها المفتاح الخارجي والعناصر التابعة له ، قم بإزالة المفتاح الخارجي والعناصر التابعة له ، لتكوين جدول جديد بدون تكرار. ومع ذلك ، حتى إذا كان المفتاح الخارجي لا يعتمد على المفتاح الأساسي ، فإن المفتاح الأساسي يعتمد على المفتاح الخارجي. لذلك ، يجب أن تظل نسخة من المفتاح الخارجي في الجدول الأصل. جدول المبيعات الجديد ، في هذه المرحلة ، متوافق مع 1NF و 2NF و 3NF ؛ إنه جدول الوالدين. الجدول الفرعي الجديد من جدول المبيعات السابق متوافق أيضًا مع 1NF و 2NF و 3NF. اسم الجدول الفرعي مع مفتاح خارجي وتوابعه ، هو العملاء. إذا تعذر العثور على اسم مناسب ، فقد حدث خطأ ما في التحليل. جدول المبيعات الجديد في 3NF هو:

جدول المبيعات النهائي في 3NF

يحتوي هذا الجدول في 3NF على نفس عدد الصفوف الموجودة في 2NF ولكن مع عدد أقل من الأعمدة.

تدوين الجدول لجدول المبيعات النهائي هذا في 3NF هو:

المبيعات (معرف البيع ، تاريخ البيع ، معرف العميل ، معرف الموظف)

معرف البيع هو المفتاح الأساسي بتسطير واحد. customerID هو مفتاح خارجي ، مع تسطير شرطة. معرف الموظف هو أيضًا مفتاح خارجي مع تسطير شرطة. لاحظ أن حالة الموظف في جدول المبيعات في 2NF هي نفسها حالة العميل. يجب سحب معرف الموظف وتابعيه لتشكيل جدول آخر ؛ تبقى نسخة من معرف الموظف.

ملاحظة: لا يشكل saleID و customerID و EmployID مفتاحًا مركبًا. saleID يعتمد على معرف العميل ومعرف الموظف.

العلاقة بين saleID و customerID هي علاقة رأس برأس.

جدول العملاء في 3NF

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

تمت إزالة الصفوف المكررة في جدول العملاء حتى لا تنتهك 1NF.

كما يرى القارئ ، فإن وضع جدول في 3NF سيحل أيضًا مشكلة الصفوف المتكررة (التكرار).

تدوين الجدول لجدول العملاء هو:

العملاء (معرف العميل ، اسم العميل ، الهاتف ، العنوان ، المدينة ، المنطقة ، الرمز البريدي ، البلد)

تمت إعادة النظر في جدول المنتجات

جدول المنتجات الوارد أعلاه في شكل تدوين هو:

المنتجات (معرّف المنتج ، معرّف الفئة ، معرّف المورد ، اسم المنتج ، سعر الوحدة ، الكمية في المخزون ، إعادة ترتيب المستوى)

المفتاح الأساسي هنا هو productID. معرف الفئة ومعرف المورد هما مفتاحان خارجيان. على غرار جدول العملاء ، يوجد جدول فئات ، حيث يكون معرف الفئة هو المفتاح الأساسي ، وهناك جدول مورد ، حيث يكون معرف المورد هو المفتاح الأساسي.

إذا كانت قيم خلايا unitPrice و quantityInStock و reorderLevel ستظل ثابتة ، فإن جدول المنتجات ، كما هو ، موجود بالفعل في 3NF. إذا كانت هذه القيم ستتغير ، فسيكون جدول المنتجات ، كما هو ، في 2NF. في هذا الجزء من سلسلة البرامج التعليمية ، من المفترض أن تظل هذه القيم ثابتة بمرور الوقت.

كل الجداول

جميع الطاولات الآن في 3NF. يتم عرضها على النحو التالي:

الموظفون (معرف الموظف ، الاسم ، الهاتف ، العنوان ، المدينة ، المنطقة ، الرمز البريدي ، البلد ، تاريخ الميلاد ، تاريخ التوظيف ، تاريخ الإصدار)

الموردون (معرف المورد ، الاسم ، الهاتف ، العنوان ، المدينة ، المنطقة ، الرمز البريدي ، البلد)

المنتجات (معرّف المنتج ، معرّف الفئة ، معرّف المورد ، اسم المنتج ، سعر الوحدة ، الكمية في المخزون ، إعادة ترتيب المستوى)
الفئات (معرّف الفئة ، اسم الفئة ، الوصف)

المبيعات (معرف البيع ، تاريخ البيع ، معرف العميل ، معرف الموظف)
تفاصيل البيع (معرف البيع ، معرف المنتج ، الرقم المباع ، سعر البيع)
العملاء (معرف العميل ، اسم العميل ، الهاتف ، العنوان ، المدينة ، المنطقة ، الرمز البريدي ، البلد)

الطلبات (معرف الطلب ، تاريخ البيع ، معرف المورد ، معرف الموظف)
تفاصيل الطلب (معرف الطلب ، معرف المنتج ، رقم الشراء ، التكلفة السعر)

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

اختبار الموظفين

في هذه المرحلة ، يجب أن يفهم جميع الموظفين ، بما في ذلك المالك ، 1NF و 2NF و 3NF. ومع ذلك ، يجب اختبارها. سيجلس كل منهم ، بما في ذلك المالك ، في أماكن مختلفة ويكمل الاختبار. الاختبار المكون من سؤال واحد يستغرق ساعة واحدة ويكون كالتالي:

سؤال: باستخدام قواعد 1NF و 2NF و 3NF ، أثبت أن جميع الجداول التسعة المذكورة أعلاه موجودة بالفعل في النموذج العادي الأول ، والنموذج العادي الثاني ، والنموذج العادي الثالث. لا يجب أن يكون العملاء والموردون كيانات حقيقية. يجب أن تدعم بيانات الجداول تدوينات الجدول احتياطيًا.

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

المستقبل القريب والبعيد

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

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

أنت ، مطور قواعد البيانات ، تبلغ من العمر 30 عامًا. المالك ، كصديقك ، يبلغ أيضًا من العمر 30 عامًا. تتراوح أعمار الكتبة (الموظفون) بين 18 و 24 عامًا. وكانت جميع الصفات التي يحتاجونها للعمل لدى المالك هي: أن يتمتعوا بصحة جيدة ، وأن يكونوا قادرين على القراءة والكتابة ، وأن يكونوا قادرين على الجمع والطرح والضرب والقسمة ، وأن تكون قادرًا على استخدام الكمبيوتر والإنترنت.

عندما يكون الجدول في 3NF ، تمت إزالة معظم الثغرات الأمنية من قاعدة البيانات. العديد من قواعد البيانات التجارية لا تتجاوز 3NF ، والشركات أو الشركات مريحة.

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

تقييم

بعد ساعة واحدة ، أنت مطور قاعدة البيانات ، تعود. أنت بمناسبة البرامج النصية الخاصة بهم. قطعة من الأخبار الممتازة! جميعهم ، بما في ذلك المالك ، لديهم 100٪ لكل منهم. يا هلا! وهذا هو ممتازة!

فتهانينا لكم جميعًا: المعلم والطلاب.

لم يتبق شيء للقيام به في هذا البرنامج التعليمي سوى الخاتمة.

استنتاج

يكون الجدول في النموذج العادي الأول ، إذا لم ينتهك أيًا من القواعد التالية:

  1. يجب أن تحتوي جميع الأعمدة في الجدول على أسماء رؤوس فريدة.
  2. يجب أن تحتوي كل خلية على قيمة واحدة فقط.
  3. يجب أن تكون القيم المخزنة في عمود من نفس النوع.
  4. يجب أن تكون الصفوف مميزة.
  5. لا يهم ترتيب الأعمدة أو الصفوف.

يكون الجدول في النموذج العادي الثاني ، إذا لم ينتهك أيًا من القواعد التالية:

  1. يجب أن يكون الجدول في أول نموذج عادي بالفعل.
  2. يجب ألا يكون هناك تبعية جزئية.

يكون الجدول في النموذج العادي الثالث ، إذا لم ينتهك أيًا من القواعد التالية:

  1. يجب أن يكون بالفعل في النموذج العادي الثاني.
  2. ويجب ألا تحتوي على تبعية انتقالية.

أنت ، مطور قاعدة البيانات ، تخبر الكتبة أنهم تعلموا ما يكفي. أنت تقدم المشورة وتطلب منهم العودة إلى العمل والبقاء في محطاتهم بشكل افتراضي.

أنت تحدد موعدًا مع المالك فقط ، ليتم في مكتبه غدًا للتدريب على 4NF و 5NF.