Tải bản đầy đủ (.pdf) (22 trang)

ASSIGNMENT CƠ SỞ DỮ LIỆU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.89 MB, 22 trang )

ASSIGNMENT
CƠ SỞ DỮ LIỆU


Câu 1. Phân tích bài toán, xác định các thực thể và các thuộc tính của
chúng.
Các thực thể:






Thư Viện.
Thủ thư.
Sách.
Sinh Viên.
Phiếu mượn sách.

Thuộc tính của thực thể:
 Thư Viện:
o Sách
o Thủ thư
o Sinh viên mượn sách
 Thủ thư:
o Tên thủ thư
 Sách:
o Mã sách.
o Tiêu đề.
o Nhà xuất bản .
o Tác giả.


o Số trang.
o Số lượng.
o Bản sao.
o Giá tiền.
o Ngày nhập kho.
o Vị trí đặc sách.
o Loại sách.
 Sinh Viên:


o Tên sinh viên.
o Mã sinh viên.
o Giới tính.
o Chuyên nghành học.
o Ngày sinh.
o Email .
o Số điện thoại.
 Phiếu mượn sách:
o Số phiếu.
o Tên sinh viên
o Ngày mượn
o Mã sinh viên
o Mã lớp
o Ghi chú
o Nhà xuất bản
o Mã sách
Mô tả mối quan hệ thực thể:
SINH VIEN

1


Mượn

N
1

PHIEUMUONSACH

N

SÁCH

Trả
SINH VIEN

1

Mượn
Trả

THỦ THƯ

1

Quản lý

N

SÁCH


Thông tin
THỦ THƯ

THỦ THƯ

1
N

1
N

Quản lý

N

PHIEUMUONSACH

Thông tin
Quản lý
Thông tin

N

SINH VIÊN


Câu 2: Thiết kế sơ đồ ERD:

Thẻ sinh
viên

Họ
Email

Họ
Tên

Chuyen
nghanh hoc

MSV

Tên
Ho ten
Ho ten

Số điện
thoại

THỦ THƯ

SINH VIÊN

Quản lý

Thông tin
Thông tin


Quản lý


Mã sách

Ghi chú

Tiêu đề

Số lượng

PHIẾU MƯỢN
SÁCH

SÁCH
Tác giả

Nhà xuất
bản

Thông tin
sách

Số trang
Loại sách

Số phiếu
Mã sách

Nhà xuất
bản

Vịt rí


Ngày mượn
Mã lớp

Số lượng

Ngày nhập
Bản sao

Giá tiền

Tên sinh
viên

MSV


Sinh viên:
Tên cột

Hovatenlot
Ten
Masinhvien
Ngaysinh
Gioitinh
chuyennghanhhoc
Email
Sodienthoai
SÁCH:


Kiểu dữ liệu

Text(50)
Text(50)
Int
Date
bit
Text(100)
Text(50)
number

Tên cột

Masach
Tieude
Nhaxuatban
Tacgia
Soluong
Bansao
Giatien
Ngaynhapkho
Loaisach
Vitridatsach

Kiểu dữ liệu

Int
Text(50)
Text(50)
Text(50)

Number
Number
Money
Data
Text(100)
number

Mô Tả

Họ và tên lót
Tên sinh viên
Khóa chính
Ngày sinh của sinh viên
Giới tính của sinh viên
Chuyên ngành học
Email sinh viên
Số điện thoại sinh viên
Mô tả

Khóa chính, tự sinh
Tiêu đề sách
Nhà xuất bản sách
Tác giả sách
Số lượng sách
Bản sao sách
Giá tiền sách
Ngày nhập sách
Loại sách
Vị trí đặc sách


PHIẾU MƯỢN SÁCH:
Tên cột

Sophieu
hosinhvien
Tensinhvien
Ngaymuon
Ngaytra
Masinhvien
STT
Malop

Kiểu dữ liệu

Number
Text(50)
Text(50)
Date
Date
Number
Nchar(1)
Number

Mô tả

Khóa chính, tự sinh
Họ và tên lót sinh viên
Tên sinh viên
Ngày mượn sách
Ngày trả sách

Mã sinh viên, khóa ngoại
Mã lớp sinh viên


Ghichu
Nhaxuatban
Masach
Soluong

Text(255)
Text(50)
number
int

Ghi chú
Nhà xuất bản
Mã sách, Khóa ngoại
Số lượng sách

Câu 3. Tạo các bảng trong CSDL, tạo các ràng buộc: khoá chính, khoá ngoại,
ràng buộc duy nhất, ràng buộc kiểm tra …

Tạo bảng SINHVIEN, khóa chính;
CREATE TABLE SINHVIEN(
tenSV nvarchar(50),
hovatenlotSV nvarchar(50),
maSV nchar(7) not null,
Ngaysinh date,
Gioitinh bit,
Chuyennghanhhoc nvarchar(50),

Email nvarchar(50),
Sodienthoai nchar(11)
)
--Khóa chính


ALTER TABLE SINHVIEN
ADD CONSTRAINT SINHVIEN_FK_maSV
PRIMARY KEY(maSV);
Tạo bảng SACH, khóa chính:
CREATE TABLE SACH(
maSach nchar(5) not null,
Tieude nvarchar(50),
Nhaxuatban nvarchar(50),
Tacgia nvarchar(50),
Soluong int,
Bansao nchar(10),
Giatien float,
Ngaynhap date,
Loaisach nvarchar(50),
Vitridacasach int,
)
--Khóa chính
ALTER TABLE SACH
ADD CONSTRAINT SACH_PK_maSach
PRIMARY KEY(maSach);
Tạo bảng PHIEUMUONSACH khóa chính, khóa ngoại:
CREATE TABLE PHIEUMUONSACH(
Sophieu int identity not null,
ngaymuon date,

ngaytra date,
tenSV nvarchar(50),
hovatenlotSV nvarchar(50),
maSV nchar(7),
maLop nchar(10),
STT nchar(1),
maSach nchar(5),
soluongsachmuon int,
tenSach nvarchar(50),
nhaxuatban nvarchar(50),
ghichu nvarchar(255)
)


/*Khóa chính*/
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_PK_Sophieu
PRIMARY KEY(Sophieu);
/*Khóa ngoại*/
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_FK_maSV
FOREIGN KEY(maSV)
REFERENCES SINHVIEN(maSV);
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_FK_maSach
FOREIGN KEY(maSach)
REFERENCES SACH(maSach);

Tạo ràng buộc kiểm tra cho bảng sách:
ALTER TABLE SACH ADD CONSTRAINT soluong check(soluong>=1);

ALTER TABLE SACH ADD CONSTRAINT giatien check(giatien>=1);
ALTER TABLE SACH ADD CONSTRAINT bansao check(bansao>=1)


Câu 5: Nhập dữ liệu cho bảng ghi;
*Bảng SINHVIEN:
insert into SINHVIEN
(tenSV,hovatenlotSV,maSV,Ngaysinh,Gioitinh ,Chuyennghanhhoc,Email,Sodient
hoai)
values
('Nhat','Pham Phu','PD02142','10/10/1998','true' ,'Lập
trình','','01672189397'),
('Thach','Nguyen Van','PD02151','05/12/1998','true' ,'Lập
trình','','0903125468'),
('Phuoc','Nguyen Thien Hong','PD02154','06/02/1998','true' ,'Lập
trình','','0165123654'),
('Duc','Nguyen Kong','PD02132','01/01/1998','true' ,'Lập
trình','','0168521564'),
('Hung','Nguyen Van','PD02521','08/05/1998','true' ,'Lập
trình','','0931526412')


*Bảng SACH
insert into SACH
(maSach,Tieude,Nhaxuatban,Tacgia,Soluong,Bansao,Giatien,Ngay
nhap,Loaisach,Vitridacasach)
values ('IT001','SQL sever','NXB Ha Noi','Herbert
Schildt','30' ,'4','500000','11/12/2017','Cong nghe thong
tin','1'),('IT002','Lap trinh huong doi tuong','NXB Ha
Noi','Herbert Schildt','20' ,'4','400000','11/20/2017','Cong

nghe thong tin','1'), ('IT003','Tin hoc co so','NXB Ha
Noi','Herbert Schildt','15' ,'4','200000','11/22/2017','Cong
nghe thong tin','1'), ('IT004','Photoshop','NXB Ha
Noi','Herbert Schildt','25' ,'4','350000','11/25/2017','Cong
nghe thong tin','2'), ('IT005','Photoshop nang cao','NXB Ha
Noi','Herbert Schildt','20' ,'4','500000','11/25/2017','Cong
nghe thong tin','2')

*Bảng PHIEUMUONSACH
insert into PHIEUMUONSACH
(Sophieu,ngaymuon,ngaytra,tenSV,hovatenlotSV,maSV,maLop,STT,
maSach,soluongsachmuon,tenSach,nhaxuatban,ghichu)


values ('12/11/2017', '12/18/2017', 'Nhat', 'Pham Phu',
'PD02142', 'PT13303', '1', 'IT001', '3', 'SQL sever', 'NXB
Ha Noi', 'Chua tra sach'),('12/13/2017', '12/20/2017',
'Thach', 'Nguyen Van', 'PD02151', 'PT13303', '1', 'IT001',
'2', 'SQL sever', 'NXB Ha Noi', 'Chua tra
sach'),('12/15/2017', '12/22/2017', 'Phuoc', 'Nguyen Thien
Hong', 'PD02154', 'PT13303', '1', 'IT002', '2', 'Lap trinh
huong doi tuong', 'NXB Ha Noi', 'Chua tra sach'),
('12/20/2017', '12/27/2017', 'Duc', 'Nguyen Kong',
'PD02132', 'PT13303', '1', 'IT003', '3', 'Tin hoc co so',
'NXB Ha Noi', 'Da tra sach'),
('12/20/2017', '12/27/2017', 'Hung','Nguyen Van',
'PD02521', 'PT13303', '1', 'IT005', '2', 'Photoshop nang
cao', 'NXB Ha Noi', 'Da tra sach')

Câu 6: Viết câu truy vấn:

Viết câu sử dụng dữ liệu để có thể truy vẫn đến các bảng;
use Assignemnt2;
6.1: Liệt kê tất cả thông tin của các đầu sách gồm tên sách, mã sách, giá tiền , tác
giả thuộc loại sách có mã “IT”.


SELECT
Tieude, maSach, Giatien, Tacgia
FROM
SACH
where SACH.maSach like 'IT%';

6.2: Liệt kê các phiếu mượn gồm các thông tin mã phiếu mượn, mã sách , ngày
mượn, mã sinh viên có ngày mượn trong tháng 01/2017
SELECT
sophieu, maSach, ngaymuon, maSV
FROM
PHIEUMUONSACH
WHERE PHIEUMUONSACH.ngaymuon like '%2017-12%'


6.3: Liệt kê các phiếu mượn chưa trả sách cho thư viên theo thứ tự tăng dần của
ngày mượn sách
SELECT
*FROM
PHIEUMUONSACH
WHERE PHIEUMUONSACH.ghichu LIKE 'Chua tra sach' ORDER BY
PHIEUMUONSACH.ngaymuon asc



6.4: Liệt kê tổng số đầu sách của mỗi loại sách ( gồm mã loại sách, tên loại sách,
tổng số lượng sách mỗi loại).
SELECT
FROM

maSach, Tieude, Soluong
SACH

6.5: Đếm xem có bao nhiêu lượt sinh viên đã mượn sách.
select COUNT(STT) as 'Số sinh viên mượn sách' from PHIEUMUONSACH;


6.6: Hiển thị tất cả các quyển sách có tiêu đề chứa từ khoá “SQL”
SELECT *FROM SACH
where Tieude like '%SQL%';


6.7: Hiển thị thông tin mượn sách gồm các thông tin: mã sinh viên, tên sinh viên,
mã phiếu mượn, tiêu đề sách, ngày mượn, ngày trả. Sắp xếp thứ tự theo ngày mượn
sách.
SELECT
SINHVIEN.maSV, SINHVIEN.tenSV,
PHIEUMUONSACH.sophieu, SACH.Tieude, PHIEUMUONSACH.ngaymuon
FROM
PHIEUMUONSACH INNER JOIN
SACH ON PHIEUMUONSACH.maSach = SACH.maSach INNER
JOIN
SINHVIEN ON PHIEUMUONSACH.maSV = SINHVIEN.maSV
ORDER BY PHIEUMUONSACH.ngaymuon;


6.8: Liệt kê các đầu sách có lượt mượn lớn hơn 20 lần
select tieude, maSach from SACH
WHERE (select count(soluongsachmuon) from PHIEUMUONSACH)>20


--Vì không có sách nào có lượt mượn lớn 20 nên không thể
xuất bảng.

6.9: Viết câu lệnh cập nhật lại giá tiền của các quyển sách có ngày nhập kho trước
năm 2014 giảm 30%.
update Sach set Giatien=Giatien-(Giatien*0.3) where YEAR(Ngaynhap)<2014
--Không có sách nào được nhập dưới năm 2014.


6.10: Viết câu lệnh cập nhật lại trạng thái đã trả sách cho phiếu mượn của sinh viên
có mã sinh viên PD12301
UPDATE PHIEUMUONSACH
SET ghichu='Da tra sach'
WHERE maSV='PD02142'


6.11: 1 Lập danh sách các phiếu mượn quá hạn chưa trả gồm các thông tin: mã
phiếu mượn, tên sinh viên, email, danh sách các sách đã mượn, ngày mượn
SELECT
PHIEUMUONSACH.sophieu, SINHVIEN.tenSV,
SINHVIEN.Email, SACH.Tieude, PHIEUMUONSACH.ngaymuon
FROM
PHIEUMUONSACH INNER JOIN
SACH ON PHIEUMUONSACH.maSach = SACH.maSach
INNER JOIN

SINHVIEN ON PHIEUMUONSACH.maSV = SINHVIEN.maSV
where PHIEUMUONSACH.ghichu='chua tra sach'

6.12; Viết câu lệnh cập nhật lại số lượng bản sao tăng lên 5 đơn vị đối với các đầu
sách có lượt mượn lớn hơn 10
update SACH set Bansao=BanSao+5 where SoLuong>10


6.13: Viết câu lệnh xoá các phiếu mượn có ngày mượn và ngày trả trước ‘1/1/2010’
DELETE FROM PHIEUMUONSACH
WHERE YEAR(ngaymuon)<2010
AND YEAR(ngaytra)<2010
--Không có bảng nào có ngày mượn dưới năm 2010


Câu 7: Tổ chức sao lưu dự phòng cho cơ sở dữ liệu




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×