تصميم قاعدة البيانات
مُقدَّم| English | المعنى |
|---|---|
| relational database/rɪˈleɪʃənl ˈdeɪtəbeɪs/ | قاعدة بيانات علائقية |
| tables/ˈteɪblz/ | جداول |
| entities/ˈentɪtiz/ | كائنات |
| primary key/ˈpraɪməri kiː/ | المفتاح الأساسي |
| foreign key/ˈfɒrən kiː/ | المفتاح الأجنبي |
| normalisation/ˌnɔːməlaɪˈzeɪʃn/ | التطبيع |
تم إعادة تسمية مساق واحد ولهُ الآن عنوانان
- تنسخ المدرسة عنوان المساق إلى كل صف تسجيل. يؤدي إعادة تسمية بعض النسخ إلى وجود عنوانين متعارضين لنفس المساق.
- تخزن قاعدة بيانات علاقية الصفوف في جداول. أولاً حدد الكائنات، مثل الطلاب والمساقات، والعلاقات بينها.
افصل الهوية عن التسمية القابلة للتغيير
- يُميِّز المفتاح الأساسي صفًا بشكل فريد ولا يمكن أن يكون فارغًا. يسمح معرّف الطالب الثابت بتغيير الاسم دون تغيير هوية الطالب.
- يمكن للمفتاح الطبيعي أن يعمل عندما تكون وحيديته وثباته مضمونين. يعد الاسم مفتاحًا سيئًا هنا لأن طلابًا مختلفين قد يشاركون فيه؛ كما قد يتغير البريد الإلكتروني أيضًا.
يمكن للطلاب مشاركة الأسماء وتغيير عناوين البريد الإلكتروني. ما هو المفتاح الأفضل لهذا التصميم؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
اختر هوية مستقرة بدلاً من علامة متكررة أو متغيرة.
مثّل العلاقة بين الكثير والكثير
- يمكن لطالب واحد أخذ العديد من المساقات؛ ويمكن لمساق واحد أن يحتوي على许多طلاب. استخدم جدول تسجيلات بصف واحد لكل زوج طالب-مساق.
- يرتبط المفتاح الأجنبي كل تسجيل بمفتاح طالب أو مساق صالح. يمنع المفتاح الأساسي المركب
(student_id, course_id)تكرار نفس الزوج مرتين.
أي تصميم يمثل طلاباً يدرسون دورات عديدة ودورات تحتوي على طلاب عديد؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
يسجل كل تسجيل طالب-دورة واحد.
ما نوع المفتاح الذي يربط التسجيل بمفتاح مسار موجود؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
يمثل المفتاح الأجنبي ويقيّد هذا المرجع عند تفعيل الإلزام.
أي قيد يمنع ظهور نفس ثنائي طالب–مسار مرتين؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
يحدد المفتاح الأساسي المركب الثنائي.
احفظ حقيقة المساق مع المساق نفسه
- ينظم التطبيع الجداول بناءً على اعتماداتها لتقليل التكرار غير المتسق. في هذا التصميم، يحدد معرّف المساق عنوانه، لذا احفظ العنوان في جدول المساقات.
- تُعتبر قيم المفاتيح الأجنبية المكررة أمرًا متوقعًا: يمكن للعديد من التسجيلات الإشارة إلى مساق واحد. "لا تكرر أي قيمة أبدًا" ليست قاعدة مفيدة لتصميم قواعد البيانات.
تكرار نفس معرف المسار في صفوف تسجيل متعددة هو دائمًا خطأ في تطبيع البيانات.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
المراجع المكررة متوقعة. إن نسخ عنوان المسار إلى كل صف علاقة يخلق مشكلة التحديث هنا.
فعّل واختبر القيود
- في SQLite، فعّل فرض المفاتيح الأجنبية في كل اتصال باستخدام
PRAGMA foreign_keys = ONقبل بدء العمل. إن الإعلان عن العلاقة وحده لا يكفي. - اختبر تسجيلًا صالحًا، وزوجًا مكررًا، وتسجيلًا يشير إلى دورة مفقودة. يجب أن ترفض القيود الحالتين الأخيرتين؛ فهما لا يحددان أي من المتصلين يمتلك الصلاحية.
PRAGMA foreign_keys = ON;
CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
CREATE TABLE courses (id INTEGER PRIMARY KEY, title TEXT NOT NULL);
CREATE TABLE enrolments (
student_id INTEGER REFERENCES students(id),
course_id INTEGER REFERENCES courses(id),
PRIMARY KEY (student_id, course_id),
CHECK (student_id IS NOT NULL AND course_id IS NOT NULL)
);
إعلان المفاتيح الأجنبية في SQLite يعني أنها مُلزمة على كل اتصال دون الحاجة لتفعيلها.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
فعّل PRAGMA foreign_keys = ON على كل اتصال وتحقق من السلوك.
تحقق من التصميم ضد حالة جديدة
- في قروض المكتبة، ليس عنوان الكتاب بالضرورة نسخة مادية فريدة. حدد المقترض، والنسخة، وحevent القرض قبل اختيار المفاتيح.
- حدد ما إذا كانت الأحداث المكررة مسموحة. يمكن لزوج طالب-دورة تحديد تسجيل واحد هنا، لكن زوج مقترض-نسخة لا يمكنه التمييز بين القروض المكررة في تواريخ مختلفة.
اختر مفاتيح للهوية التي تحتاجها. افصل حقائق الكيانات عن صفوف العلاقات، ثم تحقق من التميز وقيود المرجع باستخدام حالات محددة.
اقتترح كيانات ومفاتيح لمكتبة حيث قد يستعار الم borrowing نفس النسخة المادية أكثر من مرة.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
استخدم معرف الم borrowing، ومعرف النسخة، وهوية منفصلة لحدث القرض مع تفاصيل الحدث المطلوبة.
لماذا يعد الم borrowing–النسخة وحدها غير كافية كمفتاح للقروض المتكررة؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
يجب أن يميز المفتاح الأحداث الفعلية التي ترغب في تسجيلها.