MySQL: Practical 7
Giải phóng thời gian, khai phóng năng lực
1. Tạo một file có tên dạng: Họ_và_tên_Lab7.sql, ví dụ: DangTranLongLab7.sql.
2. Tạo một Cơ sở dữ liệu tên trùng với tên file, ví dụ: DangTranLongLab7.
3. Tạo ba bảng và chèn dữ liệu như sau:
Customer (lưu trữ Khách hàng)
CustomerID (int) |
Name (varchar (30)) |
Birth (date) |
Gender (bit) |
---|---|---|---|
1 |
Jonny Owen |
10/10/1980 |
1 |
2 |
Christina Tiny |
10/03/1989 |
0 |
3 |
Garry Kelley |
16/03/1990 |
Null |
4 |
Tammy Beckham |
17/05/1980 |
0 |
5 |
David Phantom |
30/12/1987 |
1 |
Product (Lưu trữ Sản phẩm)
ProductID (int) |
Name (varchar (30)) |
Pdesc (text) |
Pimage (varchar(200)) |
PStatus (bit) |
---|---|---|---|---|
1 |
Nokia N90 |
Mobile Nokia |
image1.jpg |
1 |
2 |
HP DV6000 |
Laptop |
image2.jpg |
NULL |
3 |
HP DV2000 |
Laptop |
image3.jpg |
1 |
4 |
SamSung G488 |
Mobile SamSung |
image4.jpg |
0 |
5 |
LCD Plasma |
TV LCD |
image5.jpg |
0 |
Comment (lưu trữ bình luận của Khách đối với Sản phẩm). Ví dụ: bản ghi đầu tiên của bảng dưới thể hiện rằng ‘Jonny Owen’ (mã là 1 ở bảng Customer) đã bình luận cho sản phẩm ‘Nokia N90’ (mã là 1 ở bảng Product) vào ngày ‘15/03/09’).
ComID(int identity(1,1)) |
ProductID (int) |
CustomerID (int) |
Date (datetime) |
Title (varchar(200) |
Content (text) |
Status (bit) |
---|---|---|---|---|---|---|
1 |
1 |
1 |
15/03/09 |
Hot product |
null |
1 |
2 |
2 |
2 |
14/03/09 |
Hot price |
Very much |
0 |
3 |
3 |
2 |
20/03/09 |
Cheapest |
Unlimited |
0 |
4 |
4 |
2 |
16/04/09 |
Sale off |
50% |
1 |
- Ràng buộc Default cho cột Date của bảng Comment với giá trị mặc định là ngày hiện tại.
Các ràng buộc phải tạo:
- Ràng buộc khóa chính trên cột: CustomerID của bảng Customer, ProductID của bảng Product và ComID của bảng Comment.
- Ràng buộc khóa ngoại trên cột: ProductID của bảng Comment tham chiếu đến bảng Product và CustomerID cũng của bảng Comment tham chiếu đến bảng Customer.
- Ràng buộc Unique cho cột Pimage trên bảng Product.
4. Hiển thị những sản phẩm có PStatus là null hoặc 0.
5. Hiển thị những sản phẩm không có bình luận nào.
6. Hiển thị những Khách có nhiều bình luận nhất.
7. Tạo View có tên ‘vwFull_Information’ để xem tất cả các bình luận gồm các cột sau:
Mã bình luận, tên Khách, tên Sản phẩm, ngày bình luận, tiêu đề bình luận, nội dung bình luận và trạng thái bình luận, trong đó trạng thái bình luận hiển thị là ‘Accept’ thay cho 1 và ‘Not Accept’ thay cho 0.
8. Tạo View có tên ‘vwCustomerList’ để liệt kê thông tin của tất cả các Khách hàng gồm tất cả các cột của bảng Customer và cột Status, trong đó cột Gender hiển thị là ‘Male’ thay cho 1, ‘Female’ thay cho 0 và ‘Unknow’ thay cho Null, cột Status hiển thị là ‘Old’ nếu tuổi của khách>=30 và ‘Young’ nếu tuổi của khách<30.
9. Sửa View ‘vwCustomerList’ để nó chỉ chứa các cột CustomerID, Customer Name, Birth, Gender của bảng Customer và tạo chỉ mục (index) có tên ixCustomerName trên cột [Customer Name] của view này.
10. Tạo thủ tục lưu trữ có tên ‘spStudent’ có một tham số tên @Name.
- Nếu tìm thấy @Name trong cột Name của bảng Product thì sẽ liệt kê tất cả những bình luận cho những Sản phẩm có tên tương tự (like) @Name.
- Nếu không thì kiểm tra @Name nếu tìm thấy trong Name của bảng Customer thì sẽ liệt kệ tất cả những bình luận của những Khách có tên tương tự (like) @Name
- Còn nếu @Name nhận giá trị ‘*’ thì sẽ liệt kê tất cả các bình luận đang có.
11. Tạo Trigger có tên ‘tgUpdateProduct’ trên bảng Product để khi cập nhật giá trị trên cột ProductID của bảng Product thì trigger sẽ tự cập nhật giá trị tương ứng lên trên cột ProductID của bảng Comment.
12. Tạo thủ tục lưu trữ có tên ‘spDropOut’ có một tham số là tên của Khách hàng, nếu tìm thấy tên này trong cột Name của bảng Customer thì sẽ xóa tất cả những thông tin của tất cả những Khách hàng có tên tương ứng đó trên tất cả các bảng liên quan của Cơ sở dữ liệu.
Giải phóng thời gian, khai phóng năng lực