Bài 1. CSDL Tour du lịch
Bài 1. CSDL Tour du lịch.
Một công ty X chuyên tổ chức các Tour du lịch (Hà Nội, Huế, Nha Trang,...). Để quản lí dữ liệu trong cơ sở dữ liệu của công ty X có ba bảng như sau:
Bảng KHACHHANG (Khách hàng)
MA_KH | HO_TEN | DIA_CHI | SO_DT |
MS001 | Lý Anh Du | Mỹ Xuyên | 076845777 |
MS002 | Hoàng Nam Lịch | My Long | 076845888 |
MS003 | Lê Đức An | My Long | 076845999 |
MS004 | Tử Văn Giang | Mỹ Bình | 076845000 |
Bảng TOUR DU LICH (Tour du lịch)
MA_TOUR | TOUR | DON_GIA |
T01 | Hà Nội | 700000 |
T02 | Huế | 500000 |
T03 | Nha Trang | 350000 |
Bảng DATHANG (Đặt hàng)
MA_KH | MA_TOUR | SO_LUONG | NGAY_DI |
MS001 | T03 | 20 | 20/11/2008 |
MS002 | T02 | 30 | 15/12/2008 |
MS003 | T01 | 25 | 20/12/2008 |
MS004 | T01 | 30 | 08/12/2008 |
Câu 1: Em hãy chọn khóa chính cho mỗi bảng trong cơ sở dữ liệu trên và giải thích lí do lựa chọn đó.
Câu2: Em hãy chỉ ra mối liên kết cần thiết giữa ba bảng
Câu3: Hãy làm các việc sau:
+ Tạo lập cơ sở dữ liệu nói trên và lưu lưu với tên TOURDULICH trong thư mục KIEM TRA trong ổ đĩa D:
+ Tạo mẫu hỏi với tên: CHIPHIDULICH gồm các trưởng sau: HO_TEN; DIA_CHI; TOUR; DON_GIA
SO_LUONG; THANH_TIEN (THANH TIEN – SO LUONG * DON GIA) và dữ liệu được sắp xếp trên trường DON_GIA theo chiều từ cao đến thấp.
+ Tạo báo cáo với tiêu đề BANGTHANHTOANCHIPHIDULICH gồm các trường trong mẫu hỏi.
Bài làm:
Câu 1: Bảng KHACHHANG: Khóa chính là trường MA_KH vì nó định danh duy nhất mỗi khách hàng trong hệ thống.
Bảng TOUR DU LỊCH: Khóa chính là trường MA_TOUR vì nó định danh duy nhất mỗi tour du lịch trong hệ thống.
Bảng ĐẶT HÀNG: Khóa chính là sự kết hợp giữa MA_KH và MA_TOUR vì mỗi đặt hàng cần phải liên kết với một khách hàng cụ thể và một tour du lịch cụ thể.
Câu 2: Bảng ĐẶT HÀNG có mối liên kết với bảng KHACHHANG thông qua trường MA_KH.
Bảng ĐẶT HÀNG cũng có mối liên kết với bảng TOUR DU LỊCH thông qua trường MA_TOUR.
Câu 3: Sử dụng câu lệnh SQL
Bước 1. Tạo cơ sở dữ liệu và các bảng
CREATE DATABASE DBDULICH;
USE DBDULICH;
CREATE TABLE KHACHHANG (
MA_KH CHAR(5) PRIMARY KEY,
HO_TEN VARCHAR(50),
DIA_CHI VARCHAR(100),
SO_DT VARCHAR(20));
CREATE TABLE TOUR_DU_LICH (
MA_TOUR CHAR(3) PRIMARY KEY,
TOUR VARCHAR(50),
DON_GIA INT);
CREATE TABLE DAT_HANG (
MA_KH CHAR(5),
MA_TOUR CHAR(3),
SO_LUONG INT,
NGAY_DI DATE,
PRIMARY KEY (MA_KH, MA_TOUR),
FOREIGN KEY (MA_KH) REFERENCES KHACHHANG(MA_KH),
FOREIGN KEY (MA_TOUR) REFERENCES TOUR_DU_LICH(MA_TOUR));
2. Đưa dữ liệu vào các bảng
INSERT INTO KHACHHANG (MA_KH, HO_TEN, DIA_CHI, SO_DT) VALUES
('MS001', 'Lý Anh Du', 'Mỹ Xuyên', '076845777'),
('MS002', 'Hoàng Nam Lịch', 'My Long', '076845888'),
('MS003', 'Lê Đức An', 'My Long', '076845999'),
('MS004', 'Tử Văn Giang', 'Mỹ Bình', '076845000');
INSERT INTO TOUR_DU_LICH (MA_TOUR, TOUR, DON_GIA) VALUES
('T01', 'Hà Nội', 700000),
('T02', 'Huế', 500000),
('T03', 'Nha Trang', 350000);
INSERT INTO DAT_HANG (MA_KH, MA_TOUR, SO_LUONG, NGAY_DI) VALUES
('MS001', 'T03', 20, '2008-11-20'),
('MS002', 'T02', 30, '2008-12-15'),
('MS003', 'T01', 25, '2008-12-20'),
('MS004', 'T01', 30, '2008-12-08');
Bước 3. Tạo view CHIPHIDULICH
Lệnh SQL:
SELECT KHACHHANG.HO_TEN, KHACHHANG.DIA_CHI, TOURDULICH.TOUR, TOURDULICH.DON_GIA, DATHANG.SO_LUONG, [DON_GIA]*[SO_LUONG] AS THANHTIEN
FROM TOURDULICH INNER JOIN (KHACHHANG INNER JOIN DATHANG ON KHACHHANG.MA_KH = DATHANG.MA_KH) ON TOURDULICH.MA_TOUR = DATHANG.MA_TOUR ORDER BY TOURDULICH.DON_GIA DESC;
Sơ đồ thiết kế:
Kết quả:
Bước 4. Report Bảng thanh toán chi phí du lịch.
- Thiết kế:
+ Cột TT chọn Data Control Source =1
- Kết quả:
Cần file Cơ sở dữ liệu Access (liên hệ với tác giả)
Tác giả: Vàng Văn Quyn
Những tin cũ hơn
- Click vào nút hiển thị ngày trong tuần hoặc tháng âm lịch để xem chi tiết
- Màu đỏ: Ngày tốt
- Xanh lá: Đầu tháng âm lịch
- Màu vàng: Ngày hiện tại