database - رسم - erd شرح pdf




كيف تمثل العلاقات الفائقة والنوع الفرعي في المخططات إير كجداول؟ (3)

أنا أتعلم كيفية تفسير الرسوم البيانية علاقة الكيان في عبارات دل سكل وأنا الخلط بين الاختلافات في التدوين. النظر في علاقة منفصلة كما في الرسم البياني التالي:

هل سيتم تمثيل ذلك على النحو التالي:

  1. المركبات، 2WD و 4WD الجداول (2wd و 4wd تشير إلى بيكاي من المركبات)؛ أو
  2. فقط جداول 2WD و 4WD (و نو جدول المركبة)، وكلاهما من شأنه أن يكرر أي سمات كانت السيارة قد كان؟

وأعتقد أن هذه طرق أخرى لكتابة العلاقة:

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


إير

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

عند القيام بتصنيف فرعي، فإنك تشعر عموما بالقلق إزاء قرارات التصميم التالية:

  • الخلاصة مقابل الخرسانة: هل يمكن أن يكون الوالد مثبتا؟ في المثال الخاص بك: يمكن أن توجد Vehicle دون أن يكون أيضا 2WD أو 4WD ؟ 1
  • شامل مقابل الحصري: هل يمكن إنشاء أكثر من طفل واحد لنفس الوالد؟ في المثال الخاص بك، يمكن أن تكون Vehicle 2WD و 4WD ؟ 2
  • كاملة مقابل غير مكتملة: هل تتوقع المزيد من الأطفال ليتم إضافتها في المستقبل؟ في المثال الخاص بك، هل تتوقع Bike أو Plane (الخ ...) يمكن أن تضاف في وقت لاحق إلى نموذج قاعدة البيانات؟

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

يوضح الرسم البياني التالي من دليل طرق إروين (الفصل 5، العلاقات الفرعية) الفرق:

ولا يسمح إي أو IDEF1X بشكل مباشر بتحديد الوالد المجرد مقابل الوالد الخرساني.

التمثيل المادي

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

  1. وضع جميع الطبقات في نفس الجدول وترك حقول الطفل نول قادرة. يمكنك بعد ذلك التحقق للتأكد من مجموعة فرعية الحق من الحقول في غير نول.
    • الإيجابيات: لا الانضمام، لذلك بعض الاستفسارات يمكن أن تستفيد. يمكن فرض مفاتيح على مستوى الوالدين (على سبيل المثال إذا كنت ترغب في تجنب مختلف 2WD و 4WD المركبات التي لها نفس الهوية). يمكن أن يفرض بسهولة الأطفال شاملة مقابل الحصري وموجهة مقابل الأم ملموسة (فقط عن طريق تغيير الاختيار).
    • سلبيات: بعض الاستفسارات يمكن أن يكون أبطأ لأنه يجب تصفية "غير مهتم" الأطفال. واعتمادا على نظام إدارة قواعد البيانات الخاص بك، يمكن أن تكون القيود الخاصة بالطفل مشكلة. وهناك الكثير من نولز يمكن أن تضيع التخزين. أقل ملاءمة للتفرغ الفرعي غير الكامل - إضافة طفل جديد يتطلب تغيير الجدول الحالي، والتي يمكن أن تكون مشكلة في بيئة الإنتاج.
  2. وضع جميع الأطفال في جداول منفصلة، ​​ولكن ليس لديهم جدول للوالد (بدلا من ذلك، تكرار الحقول والقيود الأم في جميع الأطفال). لديه معظم خصائص (3) مع تجنب جوينز، بسعر انخفاض الصيانة (بسبب كل هذه الحقول والتكرار القيد) وعدم القدرة على فرض مفاتيح على مستوى الوالدين أو تمثل أحد الوالدين ملموسة.
  3. وضع كلا الوالدين والأطفال في جداول منفصلة.
    • الايجابيات: تنظيف. ولا تحتاج أي حقول / قيود إلى أن تتكرر بصورة مصطنعة. يفرض مفاتيح على مستوى الوالدين ويسهل إضافة قيود خاصة بالطفل. مناسبة ل سوبتيبينغ غير مكتملة (نسبيا سهلة لإضافة المزيد من الجداول الطفل). يمكن أن تستفيد بعض الاستفسارات من خلال النظر فقط إلى "مثيرة للاهتمام" الجدول (ق) الطفل.
    • سلبيات: يمكن أن تكون بعض الاستفسارات جوين الثقيلة. يمكن أن يكون من الصعب فرض الأطفال الشاملين مقابل الأطفال الحصريين والوالدين المجردين مقابل الوالدين الملموسين (يمكن تطبيق هذه الأحكام بشكل تصاريحي إذا كان نظام إدارة قواعد البيانات يدعم مفاتيح خارجية دائرية ومؤجلة، ولكن فرضها على مستوى التطبيق يعتبر عادة أقل شرا).

كما ترون، فإن الوضع أقل من المثالي - ستحتاج إلى تقديم تنازلات مهما كانت الطريقة التي تختارها. وینبغي أن یکون النھج (3) نقطة بدایتك، وأن یختار أحد البدائل فقط إذا کان ھناك سبب وجیھ للقیام بذلك.

1 أنا تخمين هذا هو ما سماكة الخط يقف في الرسوم البيانية الخاصة بك.

2 أنا تخمين هذا هو ما وجود أو عدم وجود "مفصول" يقف في الرسوم البيانية الخاصة بك.


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

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

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

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

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

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

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

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


عادة عندما تقوم بعلاقة نوع من نوع / نوع فرعي في تصميم قاعدة البيانات الخاصة بك، تحتاج إلى إنشاء جدول منفصل لنوع الكيان العام الخاص بك (سوبر-تايب) وجداول منفصلة للإصدار / s من الكيان المتخصص (النوع الفرعي) مفككة أم لا. في حالتك، ستحتاج إلى إنشاء جدول ل فيهيكل ومفتاح أساسي وبعض السمات الشائعة أو التي تتم مشاركتها من قبل جميع الأنواع الفرعية. ثم، سوف تحتاج إلى إنشاء جداول منفصلة ل 2WD و 4WD جنبا إلى جنب مع سمات محددة فقط لتلك الجداول. فمثلا

ثم يمكنك استعلام تلك الجداول باستخدام سكل ينضم





entity-relationship