كل المشاريع

قاعدة بيانات مكتبة المدرسة

البرمجةمتوسط ساعتان

الهدف: تصميم قاعدة بيانات لإعارة الكتب: جداول مترابطة بمفاتيح، إدخال بيانات، واستعلامات حقيقية (من استعار ماذا؟ ما الكتب المتأخرة؟).

ستتعلّم: تصميم الجداول والمفاتيح الأساسية والأجنبيةINSERT و UPDATE و DELETESELECT مع WHERE و ORDER BYربط الجداول JOIN والتجميع GROUP BY

جرّب على المنصة: مختبر SQL

0 من 7
  1. ثلاثة جداول: الكتب Books، والطلاب Students، والإعارات Loans التي تربط الطالب بالكتاب وتاريخ الإعارة والإرجاع.

  2. 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
    );
  3. 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');
  4. ربط الجداول الثلاثة بـ JOIN:

    SQL
    SELECT 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;
  5. الإعارة التي ليس لها تاريخ إرجاع:

    SQL
    SELECT 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;
  6. SQL
    UPDATE Loans SET ReturnDate = '2026-10-10' WHERE LoanID = 1;
  7. 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 أيام.
  • اربط برنامج علامات الطلاب بقاعدة بيانات بدل الملف النصي.
هل أفادتك هذه الصفحة؟
تطبيق السلطان

المنصة في جيبك — حتى بدون إنترنت

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

  • فتح فوري كتطبيق
  • يعمل دون اتصال
  • إشعارات فورية
تطبيق أندرويد (APK)