MySQL + SQL · Lesson 118
Library Database Project
Project
Library database एक पसंदीदा DBMS project है क्योंकि यह साफ़ many-to-many संबंध दिखाता है: members books borrow करते हैं, और हर book समय के साथ कई members द्वारा borrow हो सकती है। Design का दिल एक borrowings link table है।
💡 members ↔ books many-to-many है, दोनों keys वाली borrowings link table से हल।
Tables design करना
- members — id, name, phone।
- books — id, title, author।
- borrowings — id, member_id (FK), book_id (FK), issue_date, due_date, return_date।
Members और books सिर्फ़ borrowings से जुड़ते हैं, जो हर loan record करती है।
Schema बनाना
CREATE TABLE members (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
phone VARCHAR(15)
);
CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(50)
);
CREATE TABLE borrowings (
id INT PRIMARY KEY AUTO_INCREMENT,
member_id INT, book_id INT,
issue_date DATE, due_date DATE, return_date DATE,
FOREIGN KEY (member_id) REFERENCES members(id),
FOREIGN KEY (book_id) REFERENCES books(id)
);
Borrowing link table
borrowings table many-to-many link है। हर row एक loan है: कौन member ने कौन book ली, कब issue हुई, कब due है, और कब लौटी। NULL return_date मतलब book अब भी बाहर है।
Sample data
INSERT INTO members (name, phone) VALUES ('Aman', '9990001'), ('Diya', '9990002');
INSERT INTO books (title, author) VALUES ('SQL Basics', 'R. Roy'), ('PHP Guide', 'S. Iyer');
INSERT INTO borrowings (member_id, book_id, issue_date, due_date, return_date) VALUES
(1, 1, '2026-09-01', '2026-09-15', NULL),
(2, 2, '2026-08-20', '2026-09-03', '2026-09-02');
उपयोगी queries
-- अभी issued books (नहीं लौटीं) SELECT m.name, b.title, br.due_date FROM borrowings br JOIN members m ON br.member_id = m.id JOIN books b ON br.book_id = b.id WHERE br.return_date IS NULL; -- overdue books SELECT m.name, b.title, br.due_date FROM borrowings br JOIN members m ON br.member_id = m.id JOIN books b ON br.book_id = b.id WHERE br.return_date IS NULL AND br.due_date < CURDATE(); -- हर member ने कितनी books borrow कीं SELECT m.name, COUNT(*) AS total_borrowed FROM borrowings br JOIN members m ON br.member_id = m.id GROUP BY m.id;
आम गलतियाँ
- member_id सीधे books में डालना। यह many-to-many model नहीं कर सकता; link table इस्तेमाल कीजिए।
- कोई return_date column नहीं। issued को returned से बताने को यह चाहिए।
- borrowings वाली book delete करना। Foreign key संभालिए (RESTRICT या archive)।
- due_date और return_date मिलाना। Due deadline है; return जब वापस आई।
सारांश
- Library database में members, books और borrowings link table होती है।
- members ↔ books many-to-many है, borrowings से हल।
- हर borrowing issue, due और return dates record करती है।
- NULL return_date मतलब book अब भी issued है।
- Issued, overdue और प्रति-member counts JOIN और WHERE से query कीजिए।
आगे, many-to-many दोहराइए ER diagram examples में, या school database बनाइए।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में library database कैसे design करूँ?
एक members table और एक books table बनाइए, फिर एक borrowings table जो उन्हें member_id और book_id से जोड़े, साथ में issue और return dates। Members और books का many-to-many संबंध है, borrowings link table से हल।
Library database को borrowing table क्यों चाहिए?
एक member कई books borrow कर सकता है और एक book (समय के साथ) कई members द्वारा borrow हो सकती है — many-to-many संबंध। आप इसे एक foreign key से model नहीं कर सकते, तो दोनों keys वाली borrowings link table ज़रूरी है।
कौन-सी books अभी issued हैं कैसे ढूँढूँ?
borrowings table को उन rows को query कीजिए जहाँ return_date NULL है:
SELECT * FROM borrowings WHERE return_date IS NULL;। गायब return date मतलब book अब भी member के पास है।Overdue books कैसे ढूँढूँ?
उन borrowings को filter कीजिए जो return नहीं हुईं और जिनकी due date बीत गई:
WHERE return_date IS NULL AND due_date < CURDATE()। यह उन books को list करता है जो अब तक लौटनी चाहिए थीं।क्या library database एक अच्छा DBMS project है?
हाँ। Library database एक classic project है क्योंकि यह link table से many-to-many संबंध साफ़ दिखाता है, साथ में issued, returned और overdue books जैसी उपयोगी असल-दुनिया queries।
💻 लाइव कोड एडिटर
इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
