سؤال

يقول r لديه السمات التالية: {A، B، C، D، E} ولديها التبعيات الوظيفية التالية: giveacodicetagpre.

وهناك تحلل يتكون من R1 (A، B، C) و R2 (A، D، E).كيف يمكنني حساب التبعيات الوظيفية ل R1 و R2؟

السؤال الفعلي على الواجبات المنزلية يسألني إذا كان R1 / R2 في BCNF / 3NF / لا، لكنني أعرف بالفعل كيفية القيام بذلك الجزء (معرفة ما إذا كان الجانب الأيسر من FD الوارد في مفاتيح المرشح).

هل كانت مفيدة؟

المحلول

الحيلة هي التفكير في FD كمساعدات تعريف، وليس على مخططك المحدد، ولكن على التوقعات منه.

على سبيل المثال، في مخطط البداية الخاص بك {abcde}، يقول FD A -> BC أن A ({{}، في الواقع) يشكل مفتاحا على هذا الجدول، المتوقعة إلى {ABC}. وهذا هو، فإن اتحاد LHS و RHS من FD، يحدد الإسقاط، ويحدد LHS المفتاح على هذا الإسقاط.

انتقل الآن إلى الإصدار المتحللة، حيث لديك طاولتين مميزان (Schemas) {ABC} و {ade}.

لا تزال FD الأولى والأخيرة معبريا في تلك المخططات. أول FD على المخطط / الطاولة الأولى وأخيرا في الأخير.

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

يقرر ما إذا كانت R1 / R2 موجودة في XNF أم لا، يجب أن تتم الآن بالنظر في تلك الموجودة فقط من FD الأصلية التي لا تزال تعبر (A-> BC).

أفترض أنك يجب أن تصل إلى استنتاج مفاده أن R1 في 3 / BC NF، و R2 لا يزال غير صحيح.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top