مشروع عملي متكامل: نظام إدارة مكتبة
مشروع عملي متكامل: نظام إدارة مكتبة
إنشاء نظام إدارة بيانات متكامل (إدارة مكتبة)
في هذا المشروع، سيتم إنشاء نظام لإدارة مكتبة يحتوي على ميزات لتسجيل الكتب والمستخدمين وإدارة عمليات الإعارة والإرجاع. الهدف هو تطبيق جميع المفاهيم المكتسبة مثل تصميم الجداول، الاستعلامات، تحسين الأداء، واستخدام الفهارس.
تصميم الجداول
يتضمن المشروع ثلاثة جداول رئيسية. جدول الكتب (Books) الذي يحتوي على بيانات الكتب مثل العنوان، المؤلف، سنة النشر، النوع وعدد النسخ المتاحة. يتم إنشاء هذا الجدول باستخدام استعلام SQL كما يلي:
CREATE TABLE Books ( book_id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, author VARCHAR(255) NOT NULL, published_year YEAR, genre VARCHAR(50), available_copies INT DEFAULT 0 );
جدول المستخدمين (Users) يتضمن معلومات عن المستخدمين مثل الاسم، البريد الإلكتروني، الهاتف وتاريخ التسجيل. يتم إنشاؤه باستخدام:
CREATE TABLE Users ( user_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE, phone VARCHAR(15), registration_date DATE DEFAULT CURRENT_DATE );
جدول عمليات الإعارة (BorrowedBooks) يحتوي على تفاصيل الإعارة مثل المستخدم، الكتاب، تاريخ الإعارة وتاريخ الإرجاع. يتم إنشاؤه كالتالي:
CREATE TABLE BorrowedBooks ( borrow_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, book_id INT, borrow_date DATE DEFAULT CURRENT_DATE, return_date DATE, FOREIGN KEY (user_id) REFERENCES Users(user_id), FOREIGN KEY (book_id) REFERENCES Books(book_id) );
تطبيق المفاهيم المكتسبة لتصميم الجداول وتنفيذ الاستعلامات
يمكن إدخال بيانات مبدئية إلى الجداول باستخدام أوامر INSERT. لإضافة كتب جديدة يمكن استخدام:
INSERT INTO Books (title, author, published_year, genre, available_copies) VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 1925, 'Fiction', 5), ('1984', 'George Orwell', 1949, 'Dystopian', 3);
لتسجيل المستخدمين الجدد، يتم استخدام الأمر:
INSERT INTO Users (name, email, phone) VALUES ('Ahmed Ali', '[email protected]', '0123456789'), ('Sara Mohamed', '[email protected]', '0987654321');
لاسترجاع قائمة الكتب المتاحة يمكن تنفيذ الاستعلام:
SELECT * FROM Books WHERE available_copies > 0;
للحصول على سجل الإعارة لكل مستخدم، يمكن استخدام الاستعلام:
SELECT Users.name AS User_Name, Books.title AS Book_Title, BorrowedBooks.borrow_date, BorrowedBooks.return_date FROM BorrowedBooks INNER JOIN Users ON BorrowedBooks.user_id = Users.user_id INNER JOIN Books ON BorrowedBooks.book_id = Books.book_id;
يمكن تسجيل إعارة كتاب عن طريق تحديث عدد النسخ المتاحة ثم إضافة سجل الإعارة كما يلي:
UPDATE Books SET available_copies = available_copies - 1 WHERE book_id = 1; INSERT INTO BorrowedBooks (user_id, book_id) VALUES (1, 1);
لتسجيل إرجاع كتاب، يتم تحديث عدد النسخ المتاحة وتاريخ الإرجاع باستخدام:
UPDATE Books SET available_copies = available_copies + 1 WHERE book_id = 1; UPDATE BorrowedBooks SET return_date = CURRENT_DATE WHERE borrow_id = 1;
تحسين النظام لضمان الأداء الفعال
يمكن تحسين الأداء باستخدام الفهارس لتحسين سرعة البحث والاستعلام. يتم إنشاء فهرس لتحسين البحث عن الكتب كالتالي:
CREATE INDEX idx_title ON Books (title);
كما يمكن تحليل أداء الاستعلامات باستخدام EXPLAIN لتحليل خطة التنفيذ ومعرفة عدد الصفوف التي يتم فحصها والفهارس المستخدمة:
EXPLAIN SELECT Users.name, Books.title FROM BorrowedBooks INNER JOIN Users ON BorrowedBooks.user_id = Users.user_id INNER JOIN Books ON BorrowedBooks.book_id = Books.book_id;
لضمان استمرارية البيانات، يُفضل جدولة نسخ احتياطي دوري للبيانات باستخدام mysqldump مثل:
mysqldump -u root -p library > library_backup.sql
ملخص المشروع
يهدف المشروع إلى بناء نظام إدارة مكتبة يشمل جميع الوظائف الأساسية مثل تسجيل الكتب والمستخدمين، إدارة الإعارة والإرجاع، وتحليل الأداء لضمان الكفاءة والاستمرارية.