قاعدة بيانات مكتبة المدرسة
الهدف: تصميم قاعدة بيانات لإعارة الكتب: جداول مترابطة بمفاتيح، إدخال بيانات، واستعلامات حقيقية (من استعار ماذا؟ ما الكتب المتأخرة؟).
ستتعلّم: تصميم الجداول والمفاتيح الأساسية والأجنبيةINSERT و UPDATE و DELETESELECT مع WHERE و ORDER BYربط الجداول JOIN والتجميع GROUP BY
-
ثلاثة جداول: الكتب Books، والطلاب Students، والإعارات Loans التي تربط الطالب بالكتاب وتاريخ الإعارة والإرجاع.
-
SQL
CREATE TABLE Books ( BookID INTEGER PRIMARY KEY, Title TEXT NOT NULL, Author TEXT, Copies INTEGER DEFAULT 1 ); CREATE TABLE Students ( StudentID INTEGER PRIMARY KEY, Name TEXT NOT NULL, Class TEXT ); CREATE TABLE Loans ( LoanID INTEGER PRIMARY KEY, BookID INTEGER REFERENCES Books(BookID), StudentID INTEGER REFERENCES Students(StudentID), LoanDate TEXT, ReturnDate TEXT ); -
SQL
INSERT INTO Books (BookID, Title, Author, Copies) VALUES (1, 'أساسيات الشبكات', 'وزارة التربية', 3), (2, 'البرمجة بلغة C#', 'وزارة التربية', 2), (3, 'صيانة الحاسوب', 'وزارة التربية', 1); INSERT INTO Students (StudentID, Name, Class) VALUES (1, 'أحمد', 'الثالث 1'), (2, 'سارة', 'الثالث 2'); INSERT INTO Loans (LoanID, BookID, StudentID, LoanDate, ReturnDate) VALUES (1, 1, 1, '2026-10-01', NULL), (2, 2, 2, '2026-10-03', '2026-10-08'); -
ربط الجداول الثلاثة بـ JOIN:
SQLSELECT Students.Name, Books.Title, Loans.LoanDate FROM Loans JOIN Students ON Loans.StudentID = Students.StudentID JOIN Books ON Loans.BookID = Books.BookID ORDER BY Loans.LoanDate DESC; -
الإعارة التي ليس لها تاريخ إرجاع:
SQLSELECT Books.Title, Students.Name FROM Loans JOIN Books ON Loans.BookID = Books.BookID JOIN Students ON Loans.StudentID = Students.StudentID WHERE Loans.ReturnDate IS NULL; -
SQL
UPDATE Loans SET ReturnDate = '2026-10-10' WHERE LoanID = 1; -
SQL
SELECT Books.Title, COUNT(*) AS Times FROM Loans JOIN Books ON Loans.BookID = Books.BookID GROUP BY Books.Title ORDER BY Times DESC;
تحدّيات إضافية
- اكتب استعلاماً يعرض الطلاب الذين لم يستعيروا أي كتاب (LEFT JOIN مع IS NULL).
- أضف عموداً للغرامة واحسبها لكل يوم تأخير بعد 7 أيام.
- اربط برنامج علامات الطلاب بقاعدة بيانات بدل الملف النصي.
أنجزت مشروع «قاعدة بيانات مكتبة المدرسة»!
أضفه إلى ملفك الشخصي، وجرّب التحدّيات لتطوّره أكثر.