1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn thực hành môn hệ cơ sở dữ liệu báo cáo thực hành sinh viên tự viết Đặc tả cho một nghiệp vụ nào Đó thỏa mãn các yêu cầu về mối quan hệ, vẽ mô hình erd cho Đặc tả, chuyển mô hình erd sang mô hình quan hệ

22 113 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Lớn Thực Hành Môn Hệ Cơ Sở Dữ Liệu
Tác giả Lê Thị Hiếu Ngân
Người hướng dẫn Ths. Lê Anh Khoa
Trường học Trường Đại Học Tôn Đức Thắng
Chuyên ngành Hệ Cơ Sở Dữ Liệu
Thể loại báo cáo thực hành
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 233,21 KB

Nội dung

TÓM TẮTAssigment môn hệ cơ sở dữ liệu sẽ được trình bày thành 2 phần chính: Phần thứ nhất: Sinh viên tự viết đặc tả cho một nghiệp vụ nào đó thỏa mãn cácyêu cầu về mối quan hệ, vẽ mô hìn

Trang 1

BÀI TẬP LỚN THỰC HÀNH MÔN HỆ CƠ SỞ DỮ LIỆU

Trang 2

BÀI TẬP LỚN THỰC HÀNH MÔN HỆ CƠ SỞ DỮ LIỆU

Trang 3

LỜI CẢM ƠN

Đầu tiên, tôi xin gửi lời cảm ơn chân thành đến Ban giám hiệu trường Đại HọcTôn Đức Thắng vì đã tạo điều kiện tối ưu về mặt vật chất, cung cấp một môi trườnghọc tập năng động, sáng tạo cũng như hệ thống thư viện hiện đại, đa dạng các loại tàiliệu giấy và điện từ cung cấp đầy đủ nhất tất cả các thông tin cần thiết tạo điều kiệngiúp tôi hoàn thành bài tiểu luận

Tôi xin chân thành cảm ơn ThS Doãn Xuân Thanh và ThS Lê Anh Khoa, giảngviên bộ môn Hệ Cơ Sở Dữ Liệu cho Công nghệ thông tin, đã truyền đạt kiến thức rấttận tình, giúp tôi xây dựng đủ nền tảng kiến thức để áp dụng vào việc viết bài tiểu luậnnày; do chưa có nhiều kinh nghiệm nên khó tránh khỏi sai sót, mong sẽ nhận đượcnhững góp ý quý giá của thầy để tôi có thể khắc phục, hoàn thiện và rút kinh nghiệmtrong tương lai

Một lần nữa, tôi xin chân thành cảm ơn và gửi đến trường và quý thầy cô nhữnglời chúc tốt đẹp nhất

Trang 4

ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi và được sự hướng dẫn củaThs Lê Anh Khoa Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực vàchưa công bố dưới bất kỳ hình thức nào trước đây

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến

những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh, ngày 28 tháng 11 năm 2023

Tác giả (ký tên và ghi rõ họ tên)

Lê Thị Hiếu Ngân

Trang 5

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm

(kí và ghi họ tên)

Phần đánh giá của GV chấm bài

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm

(kí và ghi họ tên)

Trang 6

TÓM TẮT

Assigment môn hệ cơ sở dữ liệu sẽ được trình bày thành 2 phần chính:

Phần thứ nhất: Sinh viên tự viết đặc tả cho một nghiệp vụ nào đó thỏa mãn cácyêu cầu về mối quan hệ, vẽ mô hình ERD cho đặc tả, chuyển mô hình ERD sang môhình quan hệ, Sử dụng câu lệnh SQL để thực hiện các thao tác theo yêu cầu

Phần 2 sử dụng java để thực hiện các yêu cầu cài đặt các chức năng sau:

- Yêu cầu thứ hai:

Input: File Input2.txt chứa lược đồ CSDL bao gồm các bảng, các thuộctính và các phụ thuộc hàm

Output: File Output2.txt chứa bao đóng của tập thuộc tính X (Tập thuộctính X do người dùng truyền vào); các khoá của lược đồ

Trang 7

MỤC LỤC

LỜI CẢM ƠN i

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN iii

TÓM TẮT iv

MỤC LỤC 1

PHẦN 1 : 2

1 Đặc tả 2

2 Mô hình ERD cho đặc tả 2

3 Chuyển mô hình ERD sang mô hình quan hệ 2

4 Sử dụng câu lệnh SQL và thực hiện yêu cầu 3

4.1 Tạo các bảng cho các mô hình quan hệ trên 3

4.2 Tạo ít nhất hai function để thêm dữ liệu vào bảng trên 8

4.3 Tạo ít nhất một trigger để kiểm tra ràng buộc khóa ngoại, ràng buộc miền giá trị 9

PHẦN 2 12

1 Câu 1 12

2 Câu 2 13

TÀI LIỆU THAM KHẢO 15

Trang 8

CHƯƠNG 1 :

1 Đặc tả:

Sự kiện quyên góp được tổ chức cho các bạn sinh viên của trường đại học Tôn Đức Thắng, biết mỗi sinh viên có mssv, họ tên, khoa, số điện thoại Thông tin về khoa bao gồm mã khoa và tên khoa Mỗi sinh viên chỉ thuộc một khoa nhưng mỗi khoa có thể có nhiều sinh viên

Khi sinh viên quyên góp sách sẽ lưu lại ngày quyên góp Mỗi sinh viên có quyên góp một hoặc nhiều quyển sách Mỗi quyển sách bao gồm mã sách, tên nhà xuấtbản, tác giả Sách được chia làm hai loại là tài liệu giáo trình và sách khác Tài liệu giáo trình tương ứng với môn học nhất định; còn sách khác cần được bổ sung thể loại sách Một quyển sách có thể có một hoặc nhiều tác giả, một tác giả có thể có một hoặc nhiều sách Thông tin tác giả bao gồm họ và tên, năm sinh, năm mất

Mỗi quyển sách có thể có được đính kèm một ghi chú về cảm nhận - review từ người quyên góp Ghi chú có thể có mã sách, mssv người quyên góp, mức độ đánh giá trên thang 5, và bình luận từ người quyên góp

2 Mô hình ERD cho đặc tả

3 Chuyển mô hình ERD sang mô hình quan hệ

Trang 9

4 Sử dụng câu lệnh SQL và thực hiện yêu cầu 4.1 Tạo các bảng cho các mô hình quan hệ trên

-Tạo database CONGTYMON:

CREATE DATABASE BAITAPLON

hoten nvarchar(50) NOT NULL,

namsinh INT NOT NULL,

nammat INT NOT NULL,

PRIMARY KEY (hoten)

);

Trang 10

CREATE TABLE Sinhvien

(

mssv int NOT NULL,

hoten nvarchar(50) NOT NULL,

sdt varchar(10) NOT NULL,

makhoa varchar(7) NOT NULL,

masach int NOT NULL,

nhaxuatban nvarchar(20) NOT NULL,

mssv int NOT NULL,

PRIMARY KEY (masach),

FOREIGN KEY (mssv) REFERENCES Sinhvien(mssv));

CREATE TABLE tailieugiaotrinh

(

monhoc nvarchar(20) NOT NULL,

masach int NOT NULL,

PRIMARY KEY (masach),

FOREIGN KEY (masach) REFERENCES Sach(masach));

Trang 11

CREATE TABLE sachkhac

(

theloai nvarchar(15) NOT NULL,

masach int NOT NULL,

PRIMARY KEY (masach),

FOREIGN KEY (masach) REFERENCES Sach(masach));

CREATE TABLE Ghichu

(

diem FLOAT NOT NULL,

binhluan varchar(50) NOT NULL,

masach int NOT NULL,

PRIMARY KEY (masach),

FOREIGN KEY (masach) REFERENCES Sach(masach));

CREATE TABLE ghichuboi

(

mssv int NOT NULL,

masach int NOT NULL,

PRIMARY KEY (mssv, masach),

FOREIGN KEY (mssv) REFERENCES Sinhvien(mssv), FOREIGN KEY (masach) REFERENCES Ghichu(masach));

CREATE TABLE duocvietboi

Trang 12

masach int NOT NULL,

hoten nvarchar(50) NOT NULL,

PRIMARY KEY (masach, hoten),

FOREIGN KEY (masach) REFERENCES Sach(masach), FOREIGN KEY (hoten) REFERENCES tacgia(hoten));

-Thêm một số dữ liệu mẫu để tiện xử lí ở những yêu cầu sau:

Sample data for Khoa table

INSERT INTO Khoa VALUES

('CNTT', N'Công nghệ thông tin'),

('LDCD', N'Lao động công đoàn'),

('NNA', N'Ngôn ngữ Anh'),

('D', N'Dược'),

('TCNH', N'Tài chính ngân hàng');

Sample data for Tacgia table

INSERT INTO Tacgia VALUES

(N'Tác Giả 1', 1980, 2010),

(N'Tác Giả 2', 1975, 2005),

(N'Tác Giả 3', 1990, 2020);

Sample data for Sinhvien table

INSERT INTO Sinhvien VALUES

('123456', N'Nguyễn Văn A', '1234567890', 'CNTT'),('789012', N'Trần Thị B', '0987654321', 'LDCD'),

('345678', N'Lê Văn C', '1122334455', 'NNA');

Trang 13

Sample data for Sach table

INSERT INTO Sach VALUES

Sample data for sachkhac table

INSERT INTO sachkhac VALUES(N'Thể loại C', '12'),

(N'Thể loại B', '89');

Sample data for Ghichu table

INSERT INTO Ghichu VALUES

(9.0, 'Interesting content', '12'),

(7.5, 'Helpful for exams', '2');

Sample data for ghichuboi table

INSERT INTO ghichuboi VALUES

Trang 14

DECLARE @NextID INT;

Lấy mã sách lớn nhất hiện tại

SELECT @NextID = ISNULL(MAX(CAST(masach AS INT)), 0) + 1 FROM Sach;

RETURN @NextID;

END;

-Insert dữ liệu vào để kiểm tra function 1:

INSERT INTO Sach (masach, nhaxuatban, mssv)

VALUES (dbo.GenerateBookID(), 'NXB ABC', 123456);

-Kiểm tra lại kết quả thực hiện:

SELECT * FROM Sach;

-Kết quả (function1):

Trang 15

-Function 2: tự động tăng các mã số sinh viên:

Function để phát sinh tự động mã sinh viên dạng số nguyên

CREATE FUNCTION dbo.GenerateStudentID()

RETURNS INT

AS

BEGIN

DECLARE @NextID INT;

Lấy mã sinh viên lớn nhất hiện tại

SELECT @NextID = ISNULL(MAX(CAST(mssv AS INT)), 0) + 1

FROM Sinhvien;

RETURN @NextID;

END;

-Insert dữ liệu vào để kiểm tra function 2:

INSERT INTO Sinhvien (mssv, hoten, sdt, makhoa)

VALUES (dbo.GenerateStudentID(), 'Nguyen Van B', '987654321', 'CNTT');-Kiểm tra lại kết quả thực hiện:

SELECT * FROM Sinhvien;

-Kết quả (function 2):

4.3 Tạo ít nhất một trigger để kiểm tra ràng buộc khóa ngoại, ràng buộc miền giá trị:

Trang 16

-Trigger kiểm tra ràng buộc khóa ngoại giữa Sinh viên và mã khoa:

CREATE TRIGGER CheckSinhvienMakhoa

ON Sinhvien

INSTEAD OF INSERT, UPDATE

AS

BEGIN

DECLARE @InvalidMakhoa TABLE (makhoa varchar(7));

INSERT INTO @InvalidMakhoa (makhoa)

SELECT i.makhoa

FROM inserted i

LEFT JOIN Khoa k ON i.makhoa = k.makhoa

WHERE k.makhoa IS NULL;

IF EXISTS (SELECT 1 FROM @InvalidMakhoa)

INSERT INTO Sinhvien (mssv, hoten, sdt, makhoa)

SELECT mssv, hoten, sdt, makhoa

FROM inserted;

END

Trang 17

-Kiểm tra tính đúng sai của trigger:

INSERT INTO Sinhvien VALUES ('189331', 'Lê Văn D', '0987654321', 'HI'); This should raise an error

-Trigger kiểm tra ràng buộc miền giá trị cho cột điểm trong bảng Ghichu

CREATE TRIGGER CheckDiemRange

INSERT INTO Ghichu (diem, binhluan, masach)

SELECT diem, binhluan, masach

FROM inserted;

END

END;

-Kiểm tra sự đúng sai của trigger:

INSERT INTO Sach (masach, nhaxuatban, mssv) VALUES

('6', 'PublisherA', '123456'),

Trang 18

('4', 'PublisherB', '789012'),

('64', 'PublisherC', '345678');

INSERT INTO Ghichu VALUES (15, 'Invalid diem value', '4'); This shouldraise an error

Trang 19

PHẦN 2

1.Câu 1

Input: File txt chứa các thực thể và mối quan hệ giữa các thực thể của mô hìnhERD Output: File txt chứa các bảng dữ liệu và mối quan hệ giữa các bảng Định dạngcủa file Input.txt do sinh viên tự thiết lập

Định dạng file Input1.txt và Output1.txt:

Trang 20

Code : được thể hiện trong file đính kèm

2.Câu 2

Input: File Input2.txt chứa lược đồ CSDL bao gồm các bảng, các thuộc tính và các phụ thuộc hàm Output: File Output2.txt chứa bao đóng của tập thuộc tính X (Tập thuộc tính X do người dùng truyền vào); các khoá của lược đồ quan hệ Định dạng của file Input2.txt và Output2.txt do sinh viên tự thiết lập.

Định dạng file Input2.txt và Output2.txt:

Trang 22

TÀI LIỆU THAM KHẢO

1 John Russel (2020), “Begginer’s Guide & 7-Day Crash Course”, Monticello

Solutions Limited

2 Allen G.Tayler (2019), “SQL All-in-One For Dummies(3rd edition)”, Wiley

Ngày đăng: 29/11/2024, 12:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w