الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ابي معلومات عن الNormaliztion في الSQL...

مغلق
بدأه No0oR في 1 أكتوبر 2006 · 4 رد · 4,545 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جمبعا...

كل عام وانتو بخير يارب...وينعاد عليكم رمضان بالخير والعافيه ان شاء الله....

عندي سؤال صغير....

ابغى معلومات او أي شي عن الــNormaliztion في الـــــSQL SERVER

انا طالبه برمجه...وعندي مشروع تخرج هالترم....

وبصراحه مبتلشه باشياء كثيره....والحمدلله اني شفت موقعكم......لانه من جد بستفيد منه ومن خبرتكم الكثير.......

الله يعافيكم الي عنده شي عن النورملايزيشن.....يعطيني اياه......واقول الله يوفقه ويسعده وييسر عليه زي مايسر علي وساعدني....

انا بحثت في الــــGoogel بس طلعت مواقع انقلش كثيره...وماعرفت استفيد منها كويس...

طالبه من الخير وفيكم الخير...

والله يوفق الجميع يارب...

أنتظر ردكم...

تم تعديل هذه المشاركة بواسطة No0oR في 1 أكتوبر 2006 في 23:55

#3

بعد اذنك walcom سأقوم بشرح Normalization .. ربما يكون اسلوبي اسلس او اوضح :

تستخدم عملية التقييس Normalization لفحص واختبار ان كانت جداولنا (المصممة طبقا لمنهجية النموذج العلاقاتي) جيدة التصميم وذلك بأداء سلسلة من الاختبارات على هذا الجدول لتحديد ان كان يستوفي قواعد الأشكال القياسية Normal Form

أنواع الأشكال القياسية :

  1. الشكل القياسي الأول First Normal Form ويسمى اختصارا 1NF
  2. الشكل القياسي الثاني Second Normal Form ويسمى اختصارا 2NF
  3. الشكل القياسي الثالث Third Normal Form ويسمى اختصارا 3NF

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

الشكل القياسي الأول 1NF

القاعدة : هو الجدول الذي فيه مجموعة تقاطع كل عمود مع كل سطر يحتوي على قيمة واحدة فقط .

كمثال لنأخذ ( جدول سجل الزوار ) لموقع ما .

guest.JPG

نلاحض هذا الجدول (فيه ID هو المفتاح الأساسي ) انه لدينا قيم متعددة لتقاطع عمود Email مع بعض الأسطر

بأخذ السطر الأول مثلا (المعرف بالمفتاح الأساسي ID ذو القيمة 54 ) نلاحظ ان نقطة تقاطع العمود Email هو 3 قيم :

sarah22@hotmail.com

sarah-m@gmail.com

sarah@yahoo.com

وذلك كاف لإثبات ان جدول سجل الزوار لا يحقق الشكل القياسي الأول 1NF

لتحويل جدول سجل الزوار الى جدول يحقق 1NF

علينا فصل العمود الذي يسبب الاخلال بالقاعدة من جدول سجل الزوار (الذي يسبب تعدد قيم مجموعة التقاطع) وهو Email و انتاج جدول جديد (جدول الايميلات) الذي يحوي عمودين

العمود المخل بالقاعدة Email وعمود المفتاح الأساسي للجدول المفحوص ID

نجعل مفتاحه الأساسي هو العمود Email

وبذلك يكون لدينا جدولين كل منهما محقق للشكل القياسي الأول 1NF

guest22.JPG

guest2.JPG

الشكل القياسي الثاني 2NF

يتعامل هذا الشكل القياسي مع الجداول التي تحوي مفتاح اساسي مركب (المفتاح الأساسي يتكون من اكثر من عمود واحد) حيث ام أي جدول فيه المفتاح الأساسي ذو عمود وحيد فإنه بدون أي فحص أو تفكير يمثل الشكل القياسي الثاني 2NF

القاعدة :كي يكون الجدول المفحوص يتبع الشكل القياسي الثاني 2NF

يجب ان يحقق الشكل القياسي الأول 1NF

قيم في كل عمود (ليس مفتاح اساسي ) يجب تميزها قيم الأعمدة التي تشكل المفتاح الأساسي معا (وليس احدها اوبعضها)

حيث تجري عملية الفحص بمحاولة الحصول على واحد من الأعمدة أو اكثر (عدا اعمدة المفتاح الأساسي) من احد اعمدة المفتاح الأساسي أو اكثر ( ليس كلها في نفس الوقت )

فإن تم اثبات ان احد أو بعض اعمدة المفتاح الأساسي تستطيع تمييز ولو عمود واحد يكون عندئذ الجدول لا يتبع الشكل القياسي الثاني 2NF .

لنفحص ان كان الجدول التالي يحقق الشكل القياسي الثاني 2NF

422f256d95.jpg

هذا الجدول فيه المفتاح الأساسي هو العمودين Class و Category معا .

نلاحظ ان الاعمدة Position و Job معا يمكن الحصول عليها من Category فقط وبذلك يكون هذا الجدول لا يحقق الشكل القياسي الثاني 2NF

لتحويل ذلك الجدول الى جدول يحقق 2NF

نفصل الأعمدة التي تسبب الاخلال بالقاعدة (هنا Position و Job ) ووضعها في جدول جديد مع مفتاح اساسي للجدول الجديد هو الجزء الذي يميزها من المفتاح اللأساسي للجدول المفحوص و هنا هو Category

وجعله مفتاح ثانوي .

0d9358c581.jpg

الشكل القياسي الثالث 3NF

القاعدة :

كي يكون الجدول المفحوص يتبع الشكل القياسي الثالث 3NF :

يجب ان يحقق الشكل القياسي الأول 1NF بالإضافة الى الشكل القياسي الثاني 2NF

قيم في كل عمود (ليس مفتاح اساسي ) يجب الا يكون هناك قيم تميزها عدا القيم التي تشكل المفتاح الأساسي معا

أي تتمثل عملية الفحص بترك اعمدة المفاتيح الأساسية (اعتبارها غير موجودة )

ومحاولة ايجاد اعمدة (عدا اعمدة المفتاح الاساسي) تميز بعضها بعضا .

الجدول التالي فيه Branch-Num هو المفتاح الأساسي

e221410de5.jpg

نلاحظ انه يمكن الحصول على Emp-Name من Mgr-Num وكلاهما ليسا مفتاح اساسي .

وبالتالي هذا الجدول لا يحقق الشكل القياسي الثالث 3NF

للتحويل الى شكل يحقق الشكل القياسي الثالث 3NF

نختار احد العمودين Emp-Name و Mgr-Num لحذفه من الجدول المفحوص وندع الأخر ليكون مفتاح ثانوي فيه .

ونضع Emp-Name و Mgr-Num في جدول فيه Mgr-Num هو المفتاح الأساسي .

أي نكون جدولين بالشكل :

1ed1b479af.jpg

تم تعديل هذه المشاركة بواسطة nardien28 في 2 أكتوبر 2006 في 17:14

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#4

nardien28 ..

شرح حلو اه ... بس ابدا ال Normalization مو بالبساطه هاي ...

كيف انتقلنا من UNF ل 1NF ؟؟؟ وين ال Splitting ؟؟؟ وين ال Flatering ؟؟؟

وين ال FD's في الانتقال بين 1NF و 2NF ؟؟ طيب هل حددنا انو ممكن يكون في Composite Key و لا لأ ؟؟؟

وين ال Transitive في الانتقال بين 2NF و 3NF ؟؟

قلتلك الشرح حلو لكن اخدتي مثال سهل و مباشر :) يعني بكره وحد يوقعلو مع تحليل من اللي هوا عمرو ما راح يمشي معو الحال !!

It's hard to stay in such ridiculous situation

#5

الف الف شكر ع الردود..

ماقصرتو والله يوفقكم اجمعين....

ربي يجزاكم اللف خير....

هذا الموضوع مغلق.

مواضيع مشابهة