مثال على علاقة one to many
شرح العلاقة One-to-Many في قواعد البيانات مع مثال
في تصميم قواعد البيانات، تعتبر العلاقات بين الجداول أحد العناصر الأساسية لتنظيم البيانات وتحديد كيفية تفاعل الجداول مع بعضها البعض. إحدى أهم العلاقات المستخدمة هي علاقة One-to-Many (واحد إلى متعدد). في هذه العلاقة، يمكن أن يرتبط سجل واحد من جدول معين بعدة سجلات من جدول آخر. سنتعرف في هذا المقال على مفهوم العلاقة One-to-Many، وكيفية تطبيقها في قواعد البيانات، مع مثال عملي.
ما هي علاقة One-to-Many؟
العلاقة One-to-Many هي نوع من العلاقات بين جداول قاعدة البيانات حيث يرتبط سجل واحد في الجدول الأول بعدة سجلات في الجدول الثاني. بمعنى آخر، يمكن أن يحتوي سجل واحد على عدة مرجعيات من جدول آخر، ولكن العكس ليس صحيحًا؛ أي أن كل سجل في الجدول الثاني يمكن أن يكون مرتبطًا بسجل واحد فقط من الجدول الأول.
لنأخذ مثالاً بسيطًا لتوضيح المفهوم. افترض أن لدينا قاعدة بيانات تدير نظام مدرسة. يمكن أن يكون لدينا جدولان رئيسيان:
- جدول الفصول (Classes): يحتوي على معلومات حول الفصول الدراسية المختلفة.
- جدول الطلاب (Students): يحتوي على معلومات عن الطلاب.
في هذه الحالة، العلاقة One-to-Many بين الفصول والطلاب تكون على النحو التالي: يمكن أن يحتوي الفصل الواحد على عدة طلاب، ولكن الطالب الواحد لا ينتمي إلا إلى فصل واحد فقط.
تطبيق العلاقة One-to-Many
لتطبيق العلاقة One-to-Many بين جدولين، نحتاج إلى إنشاء “مفتاح أساسي (Primary Key)” في الجدول الذي يمثل الطرف “One” من العلاقة، و”مفتاح خارجي (Foreign Key)” في الجدول الذي يمثل الطرف “Many” من العلاقة.
دعنا نرى كيف يمكن تطبيق هذه العلاقة باستخدام قاعدة بيانات MySQL مع مثال يوضح العلاقة بين الفصول والطلاب.
مثال على علاقة One-to-Many
سنقوم أولاً بإنشاء جدولين: جدول الفصول وجدول الطلاب. في جدول الفصول، سنستخدم العمود id
كمفتاح أساسي، وفي جدول الطلاب، سنستخدم العمود class_id
كمفتاح خارجي لربط كل طالب بفصل معين.
1. إنشاء جدول الفصول (Classes)
نبدأ بإنشاء جدول الفصول باستخدام SQL:
CREATE TABLE Classes (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
teacher VARCHAR(100) NOT NULL
);
في هذا الجدول، لدينا ثلاثة أعمدة:
- id: معرف فريد للفصل، وهو المفتاح الأساسي.
- name: اسم الفصل الدراسي.
- teacher: اسم المعلم المسؤول عن الفصل.
2. إنشاء جدول الطلاب (Students)
بعد ذلك، سنقوم بإنشاء جدول الطلاب، والذي يحتوي على العمود class_id
كمفتاح خارجي للإشارة إلى الفصل الذي ينتمي إليه الطالب:
CREATE TABLE Students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT NOT NULL,
class_id INT,
FOREIGN KEY (class_id) REFERENCES Classes(id)
);
في هذا الجدول، لدينا الأعمدة التالية:
- id: معرف فريد لكل طالب، وهو المفتاح الأساسي.
- name: اسم الطالب.
- age: عمر الطالب.
- class_id: مفتاح خارجي يشير إلى الفصل الذي ينتمي إليه الطالب. هذا هو المكان الذي نحدد فيه العلاقة One-to-Many مع جدول الفصول.
3. إدخال بيانات في الجداول
بعد إنشاء الجداول، سنقوم بإدخال بعض البيانات. أولاً، سنضيف بعض الفصول إلى جدول Classes:
INSERT INTO Classes (name, teacher) VALUES
('Math', 'Mr. Ahmed'),
('Science', 'Mrs. Fatima'),
('History', 'Mr. Ali');
الآن، سنقوم بإضافة بعض الطلاب إلى جدول Students، مع ربط كل طالب بفصل معين عبر class_id
:
INSERT INTO Students (name, age, class_id) VALUES
('Khalid', 15, 1),
('Sara', 16, 2),
('Hassan', 14, 1),
('Lina', 15, 3),
('Mona', 14, 2);
هنا نلاحظ أن الطلاب مرتبطون بفصولهم من خلال العمود class_id
، فمثلًا الطالب “Khalid” مرتبط بالفصل الأول (Math).
4. استعلام لعرض العلاقة One-to-Many
لإظهار البيانات وعرض العلاقة بين الفصول والطلاب، يمكننا استخدام استعلام JOIN لدمج الجداول معًا:
SELECT Students.name AS StudentName, Classes.name AS ClassName
FROM Students
JOIN Classes ON Students.class_id = Classes.id;
سيعرض هذا الاستعلام أسماء الطلاب والفصول المرتبطين بها، وسيظهر العلاقة One-to-Many بين الطلاب والفصول:
النتيجة:
StudentName | ClassName |
Khalid | Math |
Sara | Science |
Hassan | Math |
Lina | History |
Mona | Science |
أهمية العلاقة One-to-Many
العلاقة One-to-Many تلعب دورًا هامًا في تصميم قواعد البيانات المتقدمة. من خلال هذه العلاقة، يمكنك تنظيم البيانات بكفاءة وتحسين الاستعلامات المعقدة. في الأنظمة الكبيرة، تُستخدم العلاقات One-to-Many لتنظيم البيانات وتحديد كيفية تفاعل الكيانات المختلفة مع بعضها البعض، مثل العلاقة بين العملاء والطلبات في نظام إدارة مبيعات أو العلاقة بين المؤلفين والكتب في نظام مكتبة.
باستخدام هذه العلاقات، يمكنك تقليل التكرار في البيانات وتحسين إدارة المعلومات بطريقة تسهل الوصول إليها وتحليلها.
الخلاصة
في هذا المقال، تعرفنا على العلاقة One-to-Many في قواعد البيانات، وفهمنا كيفية تطبيقها بين جداول مثل الفصول والطلاب. من خلال إنشاء المفاتيح الأساسية والخارجية، يمكننا بناء علاقات قوية تتيح تنظيم البيانات بشكل فعال. سواء كنت تعمل على نظام بسيط مثل إدارة مدرسة أو نظام معقد كإدارة مبيعات، فإن فهم كيفية تطبيق العلاقات بين الجداول يعد أمرًا أساسيًا لضمان تصميم قاعدة بيانات فعالة وقابلة للتوسع.
اترك تعليقاً