[Báo cáo] Bài tập lớn Hệ quản trị CSDL - Quản lý thư viện (ĐH Mở Hà Nội)

Tài liệu nghiên cứu Bài tập lớn môn hệ quản trị cơ sở dữ liệu quản lý thư viện, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về kinh tế.

Trường đại học

Trường Đại Học Mở Hà Nội

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Bài Tập Lớn

2024

43
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng dẫn bài tập lớn hệ quản trị CSDL quản lý thư viện

Bài tập lớn môn Hệ quản trị Cơ sở dữ liệu (HQTCSDL) với chủ đề quản lý thư viện là một trong những đề tài phổ biến và thiết thực nhất. Đề tài này không chỉ giúp sinh viên củng cố kiến thức về thiết kế cơ sở dữ liệu thư viện mà còn rèn luyện kỹ năng triển khai thực tế trên các hệ quản trị như SQL Server hoặc MySQL quản lý thư viện. Một hệ thống thông tin quản lý thư viện hoàn chỉnh đòi hỏi việc phân tích yêu cầu, xác định thực thể, thiết kế mô hình quan hệ và cài đặt các ràng buộc, thủ tục để đảm bảo tính toàn vẹn dữ liệu. Báo cáo này sẽ trình bày chi tiết các bước thực hiện một đồ án môn học quản lý thư viện, dựa trên tài liệu nghiên cứu của sinh viên Đại học Mở Hà Nội, cung cấp một cái nhìn tổng quan từ khâu phát biểu bài toán đến triển khai các đối tượng cơ sở dữ liệu nâng cao.

1.1. Tổng quan về đề tài quản lý thư viện cho sinh viên

Mục tiêu chính của đề tài quản lý thư viện là xây dựng một database thư viện có khả năng lưu trữ và xử lý các nghiệp vụ cốt lõi. Các nghiệp vụ này bao gồm quản lý mượn trả sách, theo dõi thông tin độc giả, quản lý danh mục sách, tác giả và nhà xuất bản. Việc hoàn thành tốt đề tài này yêu cầu sinh viên phải nắm vững lý thuyết về mô hình dữ liệu, các dạng chuẩn hóa và ngôn ngữ truy vấn SQL. Đây là nền tảng quan trọng để phát triển các phần mềm quản lý thư viện phức tạp hơn trong tương lai, giúp tự động hóa các quy trình thủ công, giảm thiểu sai sót và nâng cao hiệu quả hoạt động cho bất kỳ thư viện nào, từ quy mô nhỏ đến lớn.

1.2. Vai trò của HQTCSDL trong việc vận hành thư viện số

Hệ quản trị cơ sở dữ liệu (HQTCSDL) đóng vai trò xương sống cho mọi hệ thống quản lý thư viện hiện đại. Nó cung cấp một nền tảng an toàn, hiệu quả và có cấu trúc để lưu trữ hàng triệu bản ghi dữ liệu. Thông qua việc sử dụng SQL Server quản lý thư viện, các chức năng như tìm kiếm sách, kiểm tra tình trạng mượn, quản lý thành viên, và lập báo cáo thống kê trở nên nhanh chóng và chính xác. Hơn nữa, các tính năng nâng cao như trigger trong SQLstored procedure cho phép tự động hóa nhiều tác vụ, ví dụ như tự động cập nhật số lượng sách khi có hoạt động mượn/trả, đảm bảo dữ liệu luôn nhất quán và chính xác.

II. Phân tích bài toán quản lý thư viện Từ yêu cầu đến mô hình

Giai đoạn phân tích và thiết kế là bước quan trọng nhất, quyết định sự thành công của toàn bộ dự án. Một bản phân tích tốt sẽ giúp xác định chính xác các yêu cầu nghiệp vụ, từ đó xây dựng được một mô hình dữ liệu tối ưu. Trong bài tập lớn môn hệ quản trị cơ sở dữ liệu quản lý thư viện, việc đầu tiên là phát biểu bài toán một cách rõ ràng. Bài toán cần mô tả các hoạt động chính như độc giả mượn sách, trả sách, đánh giá sách và xử lý vi phạm. Từ đó, các thực thể chính và mối quan hệ giữa chúng sẽ được xác định. Giai đoạn này đặt nền móng cho việc thiết kế cơ sở dữ liệu thư viện và xây dựng sơ đồ ERD quản lý thư viện một cách logic và chặt chẽ, tránh được các rủi ro về cấu trúc dữ liệu sau này.

2.1. Xác định các thực thể và thuộc tính cốt lõi

Dựa trên phát biểu bài toán từ tài liệu tham khảo, hệ thống cần quản lý các thực thể chính sau: Sach, DocGia, NhanVien, TacGia, và NhaXuatBan. Mỗi thực thể có các thuộc tính đặc trưng. Ví dụ, thực thể Sach bao gồm MaSach, TenSach, SoLuong, TheLoai. Các thực thể nghiệp vụ như MuonSach, TraSach, và PhieuPhat được tạo ra để ghi lại các giao dịch. MuonSach lưu thông tin về mã độc giả, nhân viên thực hiện, ngày mượn. ChiTietMuonSach mô tả sách nào được mượn với số lượng bao nhiêu. Việc xác định đầy đủ và chính xác các thực thể này là tiền đề cho việc xây dựng một database thư viện hoàn chỉnh.

2.2. Xây dựng sơ đồ ERD quản lý thư viện chi tiết

Sau khi xác định thực thể, bước tiếp theo là trực quan hóa mối quan hệ giữa chúng thông qua sơ đồ ERD quản lý thư viện (Entity-Relationship Diagram). Sơ đồ này minh họa rõ ràng các mối quan hệ như: Một NhaXuatBan có thể xuất bản nhiều Sach (quan hệ 1-nhiều). Một DocGia có thể thực hiện nhiều lần MuonSach (quan hệ 1-nhiều). Một lần MuonSach có thể bao gồm nhiều Sach khác nhau, và một Sach có thể xuất hiện trong nhiều lần mượn (quan hệ nhiều-nhiều), do đó cần một bảng trung gian là ChiTietMuonSach. Sơ đồ ERD giúp đội ngũ phát triển có cái nhìn tổng thể về cấu trúc dữ liệu trước khi bắt tay vào cài đặt vật lý.

III. Cách thiết kế cơ sở dữ liệu thư viện chuẩn 3NF trên SQL Server

Từ sơ đồ ERD, bước tiếp theo là chuyển đổi sang mô hình vật lý, tức là tạo ra các bảng dữ liệu thực tế. Quá trình này không chỉ đơn thuần là tạo bảng mà còn bao gồm việc chuẩn hóa cơ sở dữ liệu để loại bỏ sự dư thừa và đảm bảo tính nhất quán. Chuẩn hóa, đặc biệt là đạt đến Dạng chuẩn thứ ba (3NF), là yêu cầu bắt buộc trong hầu hết các bài tập lớn môn hệ quản trị cơ sở dữ liệu quản lý thư viện. Tài liệu gốc đã thực hiện rất tốt việc này bằng cách chuyển đổi mô hình quan hệ CSDL thư viện từ ERD, xác định khóa chính (PK) và khóa ngoại (FK) cho từng bảng. Việc này đảm bảo rằng mỗi thuộc tính không khóa đều phụ thuộc hoàn toàn vào khóa chính, giúp cấu trúc dữ liệu trở nên chặt chẽ và logic.

3.1. Chuyển đổi ERD sang mô hình quan hệ CSDL thư viện

Quá trình chuyển đổi từ sơ đồ ERD quản lý thư viện sang mô hình quan hệ CSDL thư viện tuân theo các quy tắc cụ thể. Mỗi thực thể trong ERD sẽ trở thành một bảng trong cơ sở dữ liệu. Các thuộc tính của thực thể trở thành các cột của bảng. Khóa chính của thực thể được chọn làm khóa chính của bảng. Đối với các mối quan hệ 1-nhiều, khóa chính của bảng bên 'một' sẽ được thêm vào bảng bên 'nhiều' làm khóa ngoại. Đối với mối quan hệ nhiều-nhiều, một bảng trung gian mới được tạo ra, chứa khóa chính từ cả hai bảng tham gia làm khóa ngoại và đồng thời là khóa chính phức hợp của bảng mới. Ví dụ điển hình là bảng ChiTietMuonSach được tạo từ mối quan hệ giữa MuonSachSach.

3.2. Áp dụng chuẩn hóa cơ sở dữ liệu đến dạng 3NF

Việc chuẩn hóa cơ sở dữ liệu là tối quan trọng để tránh các dị thường dữ liệu (thêm, xóa, sửa). Mục tiêu là đạt được ít nhất Dạng chuẩn 3 (3NF). Điều này có nghĩa là: (1) Bảng không chứa các nhóm thuộc tính lặp lại (1NF). (2) Mọi thuộc tính không khóa phải phụ thuộc hoàn toàn vào toàn bộ khóa chính (2NF). (3) Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào khóa chính (3NF). Trong đề tài quản lý thư viện này, các bảng như TacGia, NhaXuatBan được tách riêng khỏi bảng Sach chính là một ví dụ điển hình của việc chuẩn hóa, tránh lặp lại thông tin tác giả và nhà xuất bản cho mỗi đầu sách.

3.3. Cài đặt các bảng và ràng buộc bằng lệnh T SQL

Sau khi có mô hình quan hệ đã được chuẩn hóa, bước cuối cùng là cài đặt cơ sở dữ liệu bằng các lệnh T-SQL trên SQL Server. Các lệnh CREATE TABLE được sử dụng để định nghĩa cấu trúc cho từng bảng, bao gồm tên cột, kiểu dữ liệu và các ràng buộc. Các ràng buộc quan trọng bao gồm PRIMARY KEY (khóa chính), FOREIGN KEY (khóa ngoại để liên kết các bảng), NOT NULL (không được để trống), UNIQUE (giá trị duy nhất), và CHECK (kiểm tra điều kiện giá trị). Ví dụ, trong bảng DocGia, ràng buộc CHECK được dùng để đảm bảo cột sGioiTinh chỉ nhận giá trị 'nam' hoặc 'nữ'. Các ràng buộc này là công cụ mạnh mẽ để duy trì sự toàn vẹn của database thư viện.

IV. Bí quyết viết Trigger và Stored Procedure cho đồ án thư viện

Để hệ thống thông tin quản lý thư viện hoạt động một cách thông minh và tự động, việc sử dụng các đối tượng cơ sở dữ liệu nâng cao như View, Stored Procedure và Trigger là không thể thiếu. Đây là phần thể hiện chiều sâu kỹ thuật trong một báo cáo hệ quản trị CSDL. Trong khi các truy vấn SQL cho thư viện cơ bản giúp lấy dữ liệu, các đối tượng này lại giúp đóng gói logic nghiệp vụ phức tạp, tái sử dụng mã và tự động hóa các quy trình. Ví dụ, một trigger trong SQL có thể tự động cập nhật số lượng sách trong kho mỗi khi có giao dịch mượn hoặc trả, đảm bảo dữ liệu luôn chính xác mà không cần sự can thiệp thủ công từ nhân viên.

4.1. Tự động hóa nghiệp vụ với Trigger trong SQL

Trigger là các thủ tục đặc biệt được tự động thực thi khi có một sự kiện DML (INSERT, UPDATE, DELETE) xảy ra trên một bảng. Trong đồ án này, các trigger được ứng dụng rất hiệu quả. Ví dụ, trigger trg_SL_sachmuon sẽ tự động giảm số lượng sách trong bảng Sach khi một bản ghi mới được thêm vào ChiTietMuonSach. Ngược lại, trigger trg_SL_sachtra sẽ tăng số lượng sách khi có giao dịch trả sách. Một trigger hữu ích khác là trg_phieuphat, tự động tạo phiếu phạt khi ngày trả sách thực tế muộn hơn ngày hẹn trả, giúp việc quản lý mượn trả sách và xử lý vi phạm trở nên công bằng và minh bạch.

4.2. Tối ưu hóa hiệu năng bằng Stored Procedure

Stored Procedure là một tập hợp các câu lệnh SQL được biên dịch sẵn và lưu trữ trong cơ sở dữ liệu. Việc sử dụng chúng mang lại nhiều lợi ích: tăng hiệu năng (do đã được biên dịch sẵn), giảm lưu lượng mạng, tăng tính bảo mật (bằng cách cấp quyền thực thi thay vì quyền truy cập trực tiếp vào bảng) và cho phép tái sử dụng mã. Trong báo cáo, nhiều thủ tục đã được xây dựng, chẳng hạn như proc maNV để lấy thông tin nhân viên theo mã, hay proc Sach_NXB để liệt kê các sách của một nhà xuất bản cụ thể. Điều này giúp các ứng dụng tương tác với database thư viện một cách hiệu quả và có tổ chức.

4.3. Đơn giản hóa truy vấn phức tạp bằng Views

View là một bảng ảo được tạo ra từ kết quả của một câu lệnh SELECT. Nó giúp đơn giản hóa các truy vấn SQL cho thư viện phức tạp, che giấu độ phức tạp của các phép nối (JOIN) nhiều bảng và cung cấp một lớp bảo mật bổ sung bằng cách giới hạn dữ liệu mà người dùng có thể xem. Ví dụ, view vwtongtienphatcuatungnguoi được tạo ra để tính tổng số tiền phạt của mỗi độc giả mà không cần phải viết lại câu lệnh JOIN phức tạp giữa các bảng DocGia, MuonSach, TraSachPhieuPhat mỗi lần cần truy vấn. Tương tự, vw3sach giúp nhanh chóng tìm ra 3 cuốn sách được mượn nhiều nhất trong tháng.

V. Top source code quản lý thư viện và báo cáo HQTCSDL đầy đủ

Một sản phẩm hoàn chỉnh của bài tập lớn không chỉ là một cơ sở dữ liệu hoạt động tốt mà còn bao gồm tài liệu báo cáo chi tiết và bộ mã nguồn rõ ràng. Phần này tổng hợp các thành phần chính tạo nên một đồ án môn học quản lý thư viện chất lượng, giúp sinh viên tham khảo và hoàn thiện sản phẩm của mình. Việc cung cấp full code và báo cáo quản lý thư viện là một nguồn tài liệu quý giá, cho phép người học đối chiếu, học hỏi từ cách giải quyết vấn đề của người khác và rút kinh nghiệm cho bản thân. Một bộ source code quản lý thư viện tốt phải được tổ chức thành các file script riêng biệt: tạo bảng, tạo view, tạo thủ tục, và tạo trigger để dễ dàng quản lý và triển khai.

5.1. Cấu trúc một báo cáo hệ quản trị CSDL chuyên nghiệp

Một báo cáo hệ quản trị CSDL chuyên nghiệp cần có cấu trúc rõ ràng, logic. Báo cáo nên bắt đầu bằng phần đặt vấn đề, xác định mục tiêu và phạm vi của đề tài. Tiếp theo là chương phân tích và thiết kế, trình bày chi tiết về các thực thể, thuộc tính và sơ đồ ERD quản lý thư viện. Chương cài đặt cơ sở dữ liệu sẽ mô tả các bảng, mô hình quan hệ CSDL thư viện và các ràng buộc. Phần quan trọng nhất là chương triển khai các chức năng nâng cao, nơi trình bày chi tiết về các View, Stored Procedure, và Trigger trong SQL kèm theo các ca kiểm thử (test case) để chứng minh tính đúng đắn. Cuối cùng là phần kết luận, tóm tắt kết quả đạt được và đề xuất hướng phát triển trong tương lai.

5.2. Tham khảo source code quản lý thư viện trên SQL Server

Bộ source code quản lý thư viện cung cấp trong tài liệu gốc là một ví dụ điển hình. Nó bao gồm các đoạn mã T-SQL để: (1) Tạo database và các bảng với đầy đủ khóa chính, khóa ngoại và ràng buộc. (2) Chèn dữ liệu mẫu để kiểm thử. (3) Tạo các View để đơn giản hóa truy vấn. (4) Xây dựng các Stored Procedure để thực thi các tác vụ lặp đi lặp lại. (5) Viết các Trigger để tự động hóa các quy trình nghiệp vụ quan trọng như cập nhật số lượng sách và tạo phiếu phạt. Sinh viên có thể dựa vào bộ mã nguồn này để hiểu rõ hơn về cách triển khai các khái niệm lý thuyết vào thực tế trên môi trường SQL Server.

11/09/2025

Trích đoạn nội dung tài liệu

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN Khoa Công nghệ Thông tin BAO CÁO BÀI TẬP LỚN MÔN: Hệ quản trị CSDL (SQL Server) ĐÈ TÀI: Quản lý thư viện Sinh viên thực hiện: -Dao Duy Binh - 2310A05 -Nguyén Van Duy - 2310A05 -Tran Van Hoang - 2310A05 -Pham Van Khang - 2310A05 Giảng viên hướng dẫn: Nguyễn Thị Tâm Hà Nội - 2024 Mục lục MU HC. sees e scene seen cee se eect eee eee ne eee sees bere G0 6G 0 6 0 6060060 6 6 696 1 PhAn cOng VieC MHOM.ccsccscccccceucsssveseescescescescescesceses esses soessessees 3 D7) ---. Phát biểu bài toán. Phân tích và thiết kê cơ sở dữ liệu.

Xác định các thực thỂ. Mô hình ERD. C12222 22 n1 111 cv ky Tàn by ky sàn Hy nese) 2. Chuyên đổi mô hình ERD sang mô hình quan hệ (chuân 3NF).

Mô hình diagram. Mô tả các bảng. c0 0 0n 0n nh nh nh nrn nàn kh rác các các VÕ 3. Cài đặt cơ sở dữ liệu.- non HS SH KH ni Hi KH i8 tiên 8 3.

ccc cc cee cen vee nee ceecnsuevrenvnenevsentvevaserrnsnverteness® 3. Cài đặt các bảng. 002002002 112 211 cnn nh nhe kh kh xxx v. an nổ ẽerẽaä.

Tạo bảng NhgHT€H. cà Sàn Sàn nhn nh ch cày xxx xxx v9 3. Tao bảng NhaXuatBQH. sào cà cà nh kh se esssessessx sex.

Tạo bảng TaCỚIA. tet eeee LO ri.nn nen he e«an. tiers ce LO 3. Tao bang DanhGid.

cà cà se se se sesssessecse. Tạo bảng MIUOHSQCỈ. kì kh nàn nề KH kh hy Hy ke sa xsxxexssve. Tạo bảng ChhỉTietMUOHSQCH.

cà cà kh kh nh He essssessve L2 3. Tạo bảng TraSqCh. Tạo bảng PhieMPlđqE. kh kh nh KH kesarssssexssxsve T3 4.

Một số test case trên cơ sở dữ liệu. Lệnh Select lẫy dữ liệu.Ặ cà cà cà nén sen 4 4. Xây dựng các VI€W. 0n cn nh nh nh nhe nhe sxxxsxsxsesee LỘ 4.

Xây dựng các Stored Procedure (thủ tục). Xây dựng các TTIĐĐ€T. cà cà cà cà cán cá sec eee ere ZO) 5. Cac cau lémlh nan e.LOGIN VA PHAN TÁN.

c1 21 212112111112111111 22115 111 1n ryey 36 Phân công việc nhóm Họ và tên Công việc Mức độ hoàn thành(%) Dao Duy Binh Viết các câu lệnh truy vấn, view, | 100% procedure. Nguyễn Van Duy Viết báo cáo, các view, tạo login và | 100% phân quyền. Trần Văn Hoàng Xác định bài toán, các thực thẻ, xây | 100% dựng trigger, phân tán dữ liệu. Phạm Văn Khang Thiết kế cơ sở dữ liệu, xây dựng | 100% các trigger, phân tán, viết báo cáo.

Phát biểu bài toán: - Thư viện có nhiều sách để cho độc giả mượn, sách trong thư viện được quản lý thông qua bảng Sach, với thông tin về tên sách, thê loại, nhà xuất bản, tác giả, ngày xuất bản, 36 lượng và mô tả. - Thông tin về nhà xuất bản, và tác giả được quản lý riêng biệt trong các bảng NhaXuatBan và TacGia. Mỗi sách sẽ được liên kết với nhà xuất bản, và một tác giả thông qua các khóa ngoại. - Khi một độc giả muốn mượn sách, một bản ghi mượn sách mới sẽ được tạo trong bảng MuonSach, bao gồm mã độc giả mượn sách, nhân viên quản lý quá trình mượn, ngày mượn và ngày hẹn trả.

- Chi tiết về các cuốn sách được mượn trong mỗi lần mượn được lưu trong bảng ChiTietMuonSach, bao gồm mã mượn sách, mã sách, và số lượng mỗi sách. - Khi sách được trả, thông tim trả sách được cập nhật vào bảng TraSach, bao gồm mã mượn sách, nhân viên quản lý quá trình trả, ngày trả thực tế, và tình trạng sách khi trả. - Độc giả có thê đánh giá và bình luận về sách mà họ đã đọc qua bảng DanhGia, bao gồm mã sách, mã độc giả, điểm đánh giá, bình luận, và ngày đánh giả. - Nếu có vi phạm quy định của thư viện, như trả sách muộn hoặc sách bị hỏng khi trả, độc giá sẽ được ghi vào bảng PhieuPhat, với thông tin về lần trả sách vi phạm, số tiền phạt, lý do phạt, và ngày phạt.

Phân tích và thiết kế cơ sở dữ liệu: 2. Xác định các thực thể: - Thực thé TacGia: iMaTacGia, sTenTacGia, sQuocTich, sMoTa. - Thực thé NhaXuatBan: iMaNXB, sTenNXB, sDiaChi, sEmail. ~ Thực thé Sach: iMaSach, sTenSach, iMaTacGia, iMaNXB, dNgayXuatBan, iSoLuong, sMoTa, sTheLoaiSach.

- Thue thé DocGia: iMaDocGia, sTenDocGia, dNgaySinh, sDiaChi, sDienThoai, bGioiTinh. - Thye thé NhanVien: iMaNV, sTenNV, sDiaChi, dNgaySinh, dNgayVaoLam, fLuongCoBan, fHeSoLuong, fPhuCap. - Thuc thé MuonSach: iMaMuonSach, iMaDocGia, iMaNV, dNgayMuon, dNgayTra. - Thuc thé TraSach: iMaTraSach, iMaMuonSach, iMaNV, dNgayTra, sTinhTrang.

~ Thực thé PhieuPhat: iMaPhieuPhat, iMaTraSach, pSoTienPhat, sLyDo, dNgayP hat. Xây dựng mô hình liên kết thực thể (E-R): 2. Chuyển đổi mô hình E-R sang mô hình quan hệ (chuẩn 3NF): Quy ước: - Khoa chính: chữ gạch chân. - _ Khóa ngoại: chữ im nghiêng.

- _ Vừa khóa chính vừa khóa ngoại: chữ nghiêng gạch chân. - NhaXuatBanGMaNXB, sTenNXB, sDiaChi, sEmail). - DocGiaGMaDocGia, sTenDocGia, dNgaySinh, sDiaChi, sDienThoai, bGioiTinh). - NhanVienGMaNV, sTenNV, sDiaChi, dNgaySinh, dNgayVaoLam, fLuongCoBan, fHeSoLuong, fPhuCap) - DanhGiaGiMaSach, iMaDocGia, fDiemDanhGia, sBinhLuan, dNgayDanhGia).

- TraSachGiMaTraSach, iMaMuonSach, iMaNV, dNgayTra, sTmhTrang).4, M6 hinh diagram: DanhGia Sach TacGia DocGia 3 iMaDocGie $ iMaSach 9 iMaSah 9 iMaTacGia Đo: § ) sTenDocGia ke. oc # iMaDocGia — sTenSach Manxe sTenTacGia dNgaySinh fOiemDanhGia sQuocTich sBinhLuan MaTacGia sMoTa sDiaChi sDienThoai dNgayDanhGia dNoyXuatBan iSeLueng sGioiTinh w sMola sTheLoaiSach So: ' NhaXuatBan % ¡iMaNXB NhanVien se ° 8 " sTenNXB 9 iMaNV MuonSach ChiTietMuonSach sDiaChi sTenNV W iMaMuonSach 9 iMaMucnSach sEmail sDiaChi MaDccGia % iMaSach fluongCoBan IMaNV iSoLuong #HeSoLueng dNgayMuo dNgay Tra | Q a PhieuPhat TraSach — 9 iMaPhieuPhat % iMaTraSach iMalraSach iiMaMuonSact h SSoTionPrat iMaNV slyDo dNgayÏra Ngay?) đNgayPhat sTinhTrang cô: | 2. Mô tả các bảng: TacGia Tên trường Kiểu dữ liệu Rang budéc T 1 iMaTacGia Int PK 2 sTenTacGia Nvarchar 200 Not null 3 sQuocTich Nvarchar 50 4 sMoTa Nvarchar 200 O NhaXuatban STT | Tén truong Kiêu dữ liệu Độ dài Rằng buộc 1 iMaNXB Int PK 2 sTenNXB Nvarchar 200 Not null 3 sDiaChi Nvarchar 200 4 sEmail Nvarchar 200 O Sach Tên trường Kiéu dữ liệu Rằng buộc 1MaSach Int PK 2 sTenSach Nvarchar 200 Not null 3 iMaNXB Int FK 4 iMaTacGia Int FK 5 dNgayXuatBan Date 6 150Luong Int Not null, >0 7 sMoTa Nvarchar 225 8 sTheLoaiSach Nvarchar 30 O DocGia STT | Tén truong Kiểu dữ liệu | Độ dài Rằng buộc 1 iMaDocGia Int PK 2 sTenDocGia Nvarchar 200 Not null 3 dNgaySinh Date 4 sDiaChi Nvarchar 200 5 sDienThoai Nvarchar 15 unique 6 sGioiTinh Nvarchar 30 Chỉ nhận “nam” hoặc “nữ” O DanhGia STT | Tên trường Kiểu dữ liệu | Độ dài Rằng buộc 1 iMaSach Int FK 2 iMaDocGia Int FK 3 fDiemDanhGia Float Not null, chi nhan tir 0 dén 5 4 sBinhLuan Nvarchar 200 5 dNgayDanhGia Date Not null O NhanVien ST | Tên trường Kiểu dữ liệu | Độ dài Ràng buộc T 1 iMaNV Int PK 2 sTenNV Nvarchar 200 Not null 3 sDiaChi Nvarchar 200 4 fLuongCoBan Float Not null, >0 5 fHeSoLuong Float Not null, >0 O MuonSach STT | Tén truong Kiểu dữ liệu | Độ dài Rằng buộc 1 iMaMuonSach Int PK 2 iMaDocGia Int FK 3 iMaNV Int FK 4 dNgayMuon Date Not null 5 dNgayTra Date Ngay tra phai sau ngay muon O ChiTietMuonSach STT | Tén truong Kiêu dữ liệu | Độ dài Rằng buộc 1 iMaMuonSach Int PK 2 iMaSach Int PK 3 iSoLuong Int Not null, >0 O TraSach STT | Tén truong Kiểu dữ liệu | Độ dài Rằng buộc 1 iMaTraSach Int PK 2 iMaMuonSach Int FK 3 iMaNV Int FK 4 dNgayTra Date Not null 5 sTinhTrang Nvarchar 200 Not null O PhieuPhat STT | Tén truong Kiểu dữ liệu | Độ dài Ràằng buộc 1 iMaPhieuPhat Int PK 2 iMaTraSach Int FK 3 fSoTienPhat Float Not null, >0 4 sLyDo Nvarchar 200 Not null 5 dNgayPhat Date 3. Cài đặt cơ sở dữ liệu: 3.

Tạo database: create database quanlythuvien on(name ='quanlythuvien', filename ='D:\SQL SERVER\BTL_quanlythuvien\quanlythuvien.mdf, size = 5MB, maxsize = unlimited, filegrowth = 10%), 3.2, Cai dat cac bang: 3. Tao bang DocGia: -Lénh tao: create table DocGia ( 10 1MaDocGia Int identifty( 1000, L) primary key, sTenDocGia nvarchar(200) not null, dNgaySinh date, sDiaChi nvarchar(200), sDienThoai nvarchar(15) } alter table docgia add sGioiTinh nvarchar(30) constraint CK_gioitinh check(sgioitinh in (nam’, N’ni’)); alter table DocGia add constraint UQ_SDT unique(sDienthoai); -Dữ liệu bảng: 3. Tao bang NhanVien: - Lénh tao: create table Nhan Vien ( iMaNV int identity( 1000, 1) primary key, sTenNV nvarchar(200) not null, sDiaChi nvarchar(200), fLuongCoBan float not null, fHeSoLuong float not null ); alter table Nhan Vien add constraint CK_NhanVien_LuongCoBan check (fLuongCoBan > 0), constraint CK_NhanVien_HeSoLuong check (fHeSoLuong > 0); - - Dữ liệu bảng: II IMaNV sTenNV sDiaChi fLuongCoBan Ï Ề x 3. Tao bang NhaXuatBan: -Lénh tao: create table NhaXuatBan ( iMaNXB int identity(1000, 1) primary key, sTenNXB nvarchar(200) not null, sDiaChi nvarchar(200), sEmail nvarchar(200)); -Dữ liệu bảng: 3.

Tao bang TacGia: -Lénh tao: create table TacGia ( iMaTacGia int identity( 1000, 1) primary key, sTenTacGia nvarchar(200) not null, sQuocTich nvarchar(50), sMoTa nvarchar(200) ); -Dữ liệu bang: 3. Tao bang Sach: -Lénh tao: create table Sach ( iMaSach int identity(1000, 1) primary key, sTenSach nvarchar(200) not null, iMaNXB int not null, iMaTacGia int not null, dNgayXuatBan date, 1SoLuong int not null, sMoTa nvarchar(225), constraint FK_ NhaXuatBan_Sach foreign key ({MaNXB) references NhaXuatBan(iMaNXB), constraint FK_TacGia_ Sach foreign key (i{MaTacGia) references TacGia(iMaTacGia) ); -Dữ liệu bảng: 3. Tao bang DanhGia: -Lénh tao: create table DanhGia ( iMaSach int not null, iMaDocGia int not null, fDiemDanhGia float not null, sBinhLuan nvarchar(200), dNgayDanhGia date not null, 13 constraint FK_ Sach DanhGia foreign key (IMaSach) references Sach(MaSach), constraint FK_ DocGia_DanhGia foreign key(iMalocGia) references DocGia(iMaDocGia), primary key ((MaSach, iMaDocGia) ); alter table DanhGia add constraint CK DanhGia Diem check (fDiemDanhGia >= 0 and fDiemDanhGia <=5); -Dữ liệu bảng: iMaSach — iMaDocGia fDiemDanhGia sBinhLuan dNgayDanhGia 3. Tao bang MuonSach: -Lénh tao: create table MuonSach ( iMaMuonSach int identity(10000, 1) primary key, iMaDocGia int not null, iMaNV int not null, dNgayMuon date not null, dNgayTra date, constraint FK_DocGia_MuonSach foreign key(iMaDocGia) references DocGia(iMaDocGia) constraint FK_Nhan Vien _MuonSach foreign key (MaNV) references Nhan Vien(iMaNV) } alter table MuonSach add constraint CK_MuonSach _NgayTra check (dNgayTra is null or dNgay Tra > dNgayMuon); -Dữ liệu bảng: 14 3.

Tao bang ChiTietMuonSach: -Lénh tao: create table ChiTietMuonSach ( iMaMuonSach int not null, iMaSach int not null, 1SoLuong int not null, primary key (MaMuonSach, iMaSach), constraint FK_ MuonSach_ChiTiet foreign key (({MaMuonSach) references MuonSach(MaMuonSach), consfraint FK_ Sach_ ChiTiet foreien key (iMaSach) references Sach(iMaSach) ); alter table ChiTietMuonSach add constraint CK_ChiTietMuonSach_SoLuong check (iSoLuong > 0); -Dữ liệu bảng: 3. Tao bang TraSach: -Lénh tao: create table TraSach ( iMaTraSach int identity(20000, 1) primary key, iMaMuonSach int not null, iMaNV int not null, dNgayTra date not null, sTinhTrang nvarchar(200) not null, 15 constraint FK_MuonSach_TraSach foreign key (({MaMuonSach) references MuonSach(MaMuonSach), constraint FK_NhanVien_ TraSach foreign key (UMaNV) references Nhan Vien(iMaNV) ); -Dtr liéu bang: iMaTraSach iMaMuonSach ¡iMaNV dNgayTra sTinhTrang 3. Tao bang PhieuPhat: -Lénh tao: create table PhieuPhat ( iMaPhieuPhat int identity(30000, 1) primary key, iMaTraSach int not null, fSoTienPhat float not null, sLyDo nvarchar(200) not null, dNgayPhat date, constraint FK_TraSach_ PhieuPhat foreign key (({MaTraSach) references TraSach(iMaTraSach) ); -Dữ liệu bảng: 16 4. Một số test case trên cơ sở dữ liệu: 4.

Lệnh select lấy dữ liệu: 4. Cho biết mã đọc giả , mã sách mượn và 36 lượng sách mượn select iMaDocGia,iMaSach,iSoLuong from MuonSach join ChiTietMuonSach on MuonSach.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ