Nhom 9.baocaodean

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 49

TRƯỜNG ĐẠI HỌC KINH TẾ TP.

HCM

KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

BÁO CÁO ĐỒ ÁN KẾT THÚC HỌC PHẦN


Bộ môn : Cơ sở dữ liệu
Đề tài : QUẢN LÝ KHÁCH HÀNG CHUYẾN TÀU SẮT
BẮC NAM
Giảng viên hướng dẫn : ThS. Hồ Thị Thanh Tuyến

Mã lớp học phần : 23D1INF50900604

Nhóm thực hiện : 9

Danh sách sinh viên thực hiện

Họ và tên sinh viên MSSV Tỷ lệ đóng góp

Sơn Hồng Đức 31211026003 100%

Đặng Thanh Huy 31211026749 100%

Nguyễn Trung Nguyên 31211026558 100%

Võ Thị Yến Oanh 31211021161 100%

Lê Vũ Thanh Trúc 31211022368 100%

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


LỜI CẢM ƠN

Chúng em muốn gửi lời cảm ơn chân thành đến cô Hồ Thị Thanh Tuyến - giảng viên bộ
môn Cơ Sở Dữ Liệu, vì đã giảng dạy và hướng dẫn chúng em trong học phần này. Cô đã
truyền đạt kiến thức và kinh nghiệm của mình một cách chân thành và tận tâm, giúp chúng
em có thể nghiên cứu và tự xây dựng một cơ sở dữ liệu riêng cho mình. Qua đó, chúng em
đã hiểu rõ hơn về cách xây dựng và phát triển một cơ sở dữ liệu. Chúng em– hy vọng rằng
những kiến thức và kỹ năng mà cô đã truyền đạt sẽ giúp chúng em chuẩn bị tốt hơn cho
các học phần tiếp theo và trong tương lai. Chúng em rất trân trọng và cảm kích sự hỗ trợ
của cô. Chúc cô luôn thành công và hạnh phúc.

LỜI MỞ ĐẦU

Môn học cơ sở dữ liệu là một trong những môn học quan trọng trong ngành công nghệ
thông tin. Cơ sở dữ liệu là một hệ thống lưu trữ thông tin và cho phép truy xuất thông tin
một cách dễ dàng và hiệu quả. Việc sử dụng cơ sở dữ liệu đã trở thành một phần không
thể thiếu trong các ứng dụng và hệ thống thông tin hiện đại.

Với tốc độ phát triển của công nghệ thông tin, việc số hóa và hệ thống hóa, phát triển mọi
thứ theo hướng công nghệ số là điều tất yếu khách quan mà các ngành hàng phải thực
hiện nếu không muốn bị bỏ lại phía sau.

Việc quản lý khách hàng trong hệ thống đường sắt Bắc Nam là một thách thức lớn đối
với các nhà quản lý và chuyên gia trong lĩnh vực công nghệ thông tin. Hệ thống đường
sắt Bắc Nam bao gồm nhiều yếu tố phức tạp như các tuyến đường, ga tàu, lịch trình chạy
tàu và các thông tin liên quan khác. Do đó, việc sử dụng cơ sở dữ liệu là một giải pháp
hiệu quả và bắt kịp thời đại giúp cho việc quản lý khách hàng được hiệu quả và nhanh
chóng hơn.

Với bài toán thực tế đã được nêu như trên, chúng em xin đưa ra một hệ thống ứng dụng
cơ sở dữ liệu trong việc quản lý khách hàng trong hệ thống đường sắt Bắc Nam của Việt
Nam. Cuối bài, chúng ta sẽ đánh giá ưu điểm và hạn chế của hệ thống kèm theo đó là giải
pháp để khắc phục hoặc hoàn thiện những hạn chế trên.
MỤC LỤC
NỘI DUNG CHÍNH BÁO CÁO ĐỒ ÁN
CHƯƠNG I. GIỚI THIỆU ĐỀ TÀI ............................................................................................................1
1. MÔ TẢ HỆ THỐNG ............................................................................................................................1
2. YÊU CẦU CỦA HỆ THỐNG ..............................................................................................................2
Chương II. THIẾT KẾ HỆ THỐNG ..........................................................................................................3
1. THIẾT KẾ VÀ MÔ TẢ DỮ LIỆU ...................................................................................................3
2. MÔ HÌNH THỰC THỂ .....................................................................................................................10
2.1. Mô hình thực thể kết hợp ...........................................................................................................10
2.2. Mô hình cơ sở dữ liệu .................................................................................................................11
2.3.Mô hình quan hệ ..........................................................................................................................12
3.RÀNG BUỘC TOÀN VẸN .................................................................................................................12
3.1.Ràng buộc giới tính khách hàng, nhân viên...............................................................................12
3.2. Ràng buộc họ tên khách hàng và nhân viên..............................................................................13
3.3. Ràng buộc mã khách hàng .........................................................................................................13
3.4. Ràng buộc mã nhân viên ............................................................................................................13
3.5. Ràng buộc mã khách hàng và mã nhân viên.............................................................................14
3.6. Ràng buộc số điện thoại của khách hàng và nhân viên ............................................................14
3.7. Ràng buộc số căn cước công dân của khách hàng ...................................................................14
3.8. Ràng buộc giờ đi và giờ đến của chuyến tàu .............................................................................15
3.9. Ràng buộc giá vé .........................................................................................................................15
3.10. Ràng buộc số điện thoại khách hàng .......................................................................................15
3.11.Ràng buộc tuổi nhân viên ..........................................................................................................15
3.12. Ràng buộc mã đặt chỗ...............................................................................................................16
CHƯƠNG III. THỰC HIỆN CÁC THAO TÁC TRÊN MICROSOFT SQL SERVER MANAGEMENT
....................................................................................................................................................................17
1. MÔ TẢ DỮ LIỆU ..............................................................................................................................17
1.1.Tạo database .................................................................................................................................17
1.2.Tạo các bảng ................................................................................................................................17
1.2.1.Tạo bảng Khách hàng...........................................................................................................17
1.2.2.Tạo bảng Nhân viên ..............................................................................................................17
1.2.3.Tạo bảng Tàu ........................................................................................................................17
1.2.4.Tạo bảng Vé tàu ....................................................................................................................18
1.2.5.Tạo bảng Nhà ga ...................................................................................................................18
1.2.6.Tạo bảng Chuyến tàu ............................................................................................................18
1.2.7.Tạo bảng Tuyến tàu ..............................................................................................................18
1.2.8.Tạo bảng Phản hồi ................................................................................................................18
2.TẠO KHÓA NGOẠI ...........................................................................................................................19
3.THAO TÁC TRÊN DỮ LIỆU.............................................................................................................19
3.1. Thêm dữ liệu vào các table bằng lệnh SQL ...............................................................................19
3.1.1.Thêm dữ liệu vào bảng Khách hàng ....................................................................................19
3.1.2.Thêm dữ liệu vào bảng Nhân viên .......................................................................................21
3.1.3.Thêm dữ liệu vào bảng Nhà ga ............................................................................................22
3.1.4. Thêm dữ liệu vào bảng Vé tàu .............................................................................................22
3.1.5. Thêm dữ liệu vào bảng Chuyến tàu ....................................................................................23
3.1.6. Thêm dữ liệu vào bảng Tuyến tàu .......................................................................................23
3.1.7. Thêm dữ liệu vào bảng Tàu .................................................................................................24
3.1.8. Thêm dữ liệu vào bảng Phản hồi ........................................................................................24
3.2. Update dữ liệu vào các table bằng lệnh SQL .............................................................................24
3.3. Xóa dữ liệu ở các bảng table bằng lệnh SQL ............................................................................24
4. LỆNH TRUY VẤN DỮ LIỆU ...........................................................................................................25
4.1.Truy vấn 1 bảng ...........................................................................................................................25
4.2. Truy vấn nhiều bảng (Phép kết) .................................................................................................25
4.3. Truy vấn có điều kiện (and, or, like, between,....) ......................................................................26
4.4. Truy vấn tính toán.......................................................................................................................27
4.5. Truy vấn có gom nhóm (group by) .............................................................................................28
4.6.Truy vấn gom nhóm có điều kiện (having) .................................................................................29
4.7. Truy vấn có sử dụng phép giao, hội, trừ. ...................................................................................30
4.8. Truy vấn con................................................................................................................................31
5. VIẾT STORE PROCEDURE, FUNCTION VÀ RÀNG BUỘC .......................................................31
5.1 Viết Function................................................................................................................................31
5.2.Viết store procedure .....................................................................................................................34
5.3. Viết ràng buộc .............................................................................................................................37
CHƯƠNG IV. NHẬN XÉT VÀ ĐÁNH GIÁ HỆ THỐNG .......................................................................40
CHƯƠNG V. PHỤ LỤC ............................................................................................................................41
NỘI DUNG CHÍNH BÁO CÁO ĐỒ ÁN

CHƯƠNG I. GIỚI THIỆU ĐỀ TÀI


1. MÔ TẢ HỆ THỐNG

Hệ thống quản lý khách hàng mua vé tại ga và đi trên tuyến đường sắt Bắc Nam, dữ liệu
được mô tả cụ thể như sau:

• Khách hàng sẽ mua vé trực tiếp tại các quầy bán vé được đặt ở các ga tàu. Khi mua
vé, khách hàng sẽ cung cấp đầy đủ Họ tên, Tuổi, Giới tính, Căn cước công dân, Số
điện thoại, Địa chỉ. Các thông tin này sẽ được lưu trữ lại trong hệ thống. Mỗi khách
hàng sẽ có một Mã Khách hàng duy nhất để phân biệt.
• Khi mua vé, Khách hàng sẽ lựa chọn mua loại vé của chuyến tàu mà mình muốn đi
và phù hợp với nhu cầu của bản thân. Khách hàng có thể thanh toán tiền vé bằng
nhiều hình thức thanh toán như: tiền mặt, chuyển khoản, quẹt thẻ. Các thông tin
được thể hiện trên Vé gồm có Mã vé, Loại vé (dành cho từng đối tượng khác nhau
như Người lớn, Trẻ em, Sinh viên, Người ..) Giá vé, Trạng thái và Phương thức
thanh toán. Tùy vào từng loại vé sẽ có các mức giá khác nhau tùy theo dịch vụ mà
khách hàng chọn lựa. Mỗi vé xuất ra chỉ thuộc duy nhất một Chuyến tàu cụ thể. Mỗi
chuyến tàu sẽ có một thời gian xuất phát và kết thúc nhất định. Thông tin trên
Chuyến tàu sẽ cho Khách hàng biết về Mã chuyến tàu, Giờ đi, Giờ đến và Trạng
thái của chuyến tàu.
• Khách hàng sẽ mua vé tại ga tàu. Mỗi Ga tàu sẽ gồm có các thông tin về Mã ga,
Tên ga và Địa điểm của ga đó. Ga tàu sẽ quản lý thông tin của các Chuyến tàu,
Tuyến tàu và Tàu. Mỗi tàu trong một khoảng thời gian nhất định sẽ chỉ thuộc 1
chuyến tàu và 1 tuyến tàu nhất định. Tàu gồm có: Mã tàu, Số toa, Số buồng, Loại
buồng, Số chỗ, Loại toa.
• Các Chuyến tàu sẽ thuộc các Tuyến tàu. Bảng Tuyến tàu sẽ gồm các thông tin về
Mã tuyến, Ga đi và ga đến. Giả sử mỗi tàu chỉ chạy trên một tuyến tàu cố định.
• Nhân viên làm việc tại ga và chuyến tàu. Nhân viên gồm có Mã nhân viên, Họ
tên, Tuổi, Giới tính, Số điện thoại, Chức vụ. Chức vụ của nhân viên sẽ quyết định
việc họ làm việc ở ga tàu để bán vé hay làm việc trên chuyến tàu để phục vụ hành
khách. Mỗi nhân viên sẽ có một mã khác nhau để dễ dàng phân biệt.
• Khách hàng sau khi đi trên Chuyến tàu sẽ để lại phản hồi của mình về chuyến tàu
đó. Thông tin về Phản hồi gồm có Loại phản hồi, Trạng thái xử lý. Phản hồi của
Khách hàng sẽ được lưu trữ để phục vụ cho việc đánh giá chất lượng của các
chuyến tàu.

1
2. YÊU CẦU CỦA HỆ THỐNG
• Cung cấp thông tin đầy đủ, chính xác và dễ hiểu để giúp cho việc quản lý và theo
dõi thông tin được dễ dàng và thuận tiện hơn.
• Đảm bảo tính bảo mật cao để bảo vệ thông tin khách hàng tránh khỏi các nguy cơ
bị lộ thông tin hoặc tấn công từ bên ngoài.
• Thông tin cần thỏa các ràng buộc toàn vẹn và liên kết với nhau để đảm bảo tính
logic và chính xác của dữ liệu.
• Thao tác nhập dữ liệu nhanh chóng, dễ dàng và hiệu quả để giảm thiểu các sai sót
và tăng tính chính xác của thông tin được lưu trữ.

2
Chương II. THIẾT KẾ HỆ THỐNG
1. THIẾT KẾ VÀ MÔ TẢ DỮ LIỆU
STT BẢNG THUỘC TÍNH KIỂU DỮ LIỆU MÔ TẢ DỮ
LIỆU

Mã khách hàng
có dạng KH+’Số’
(ví dụ như KH01)
dùng để xác định
MAKH NVARCHAR(4) khách hàng sử
(Mã khách hàng) dụng dịch vụ.
Mỗi mã khách
hàng là duy nhất.

Họ tên khách
HOTEN hàng là chuỗi ký
(Họ tên của Khách NVARCHAR(50) tự có dấu và được
hàng) giới hạn bởi 50 kí
tự.

Ngày sinh được


nhập liệu theo
NGAYSINH DATE định dạng
(Ngày sinh) mm/dd/yyyy.
Ngày sinh có thể
trùng nhau.

Giới tính được


1 GIOITINH NVARCHAR(3) ràng buộc trong
KHACHHANG (Giới tính) hai lựa chọn là
‘Nam’ và ‘Nữ’.
Số căn cước công
dân của khách
hàng, là chuỗi ký
tự được nhập
CCCD VARCHAR(12) bằng số và được
(Căn cước công dân) giới hạn bởi 12
ký tự và số căn
cước công dân
của mỗi người là
duy nhất.

SDT VARCHAR(15) Số điện thoại là


(Số điện thoại) chuỗi ký tự được
nhập bằng số và
không được
trùng nhau.

3
Là chuỗi ký tự có
DIACHI NVARCHAR(100) dấu và có thể
(Địa chỉ) trùng nhau giữa
các khách hàng.

Mã chuyến tàu có
dạng ‘CT’+’Số”,
MA_CHUYEN_TAU NVARCHAR(4) ví dụ như CT01,
(Mã chuyến tàu) dùng để phân biệt
các chuyến tàu
với nhau.

Mã nhân viên có
dạng ‘NV’+’Số’
(ví dụ như NV01)
MANV VARCHAR(4) dùng để xác định
(Mã nhân viên) các nhân viên.
Mỗi mã nhân
viên là duy nhất.

Họ tên nhân viên


HOTEN NVARCHAR(50) là chuỗi ký tự có
(Họ tên nhân viên) dấu và được giới
hạn bởi 50 kí tự
Ngày sinh được
2 NHANVIEN
nhập liệu theo
NGAYSINH DATE định dạng
(Ngày sinh) mm/dd/yyyy.
Ngày sinh có thể
trùng nhau.
Giới tính được
GIOITINH NVARCHAR(3) ràng buộc trong
(Giới tính) hai lựa chọn là
‘Nam’ và ‘Nữ’.
Số điện thoại là
SDT chuỗi ký tự được
(Số điện thoại) VARCHAR(15) nhập bằng số và
không được
trùng nhau.
Chức vụ của
CHUCVU nhân viên thể
(Chức vụ) NVARCHAR(50) hiện công việc
của họ, là một
chuỗi gồm các ký
tự có dấu và được
4
giới hạn trong 50
ký tự.

Mã ga là một
chuỗi các ký tự
dùng để phân biệt
MAGA NVARCHAR(5) các ga với nhau,
(Mã ga) mỗi mã ga là duy
nhất. Ví dụ như
HN, VIN, SG,..

Mã chuyến tàu có
dạng ‘CT’+’Số”,
MA_CHUYEN_TAU NVARCHAR(4) ví dụ như CT01,
(Mã chuyến tàu) dùng để phân biệt
các chuyến tàu
với nhau.

Mã chuyến tàu có
dạng ‘CT’+’Số”,
MA_CHUYEN_TAU NVARCHAR(4) ví dụ như CT01,
(Mã chuyến tàu) dùng để phân biệt
các chuyến tàu
với nhau.
Giờ đi được nhập
theo định dạng
GIODI DATETIME yyyy/mm/dd
(Giờ đi) hh:mm:ss

Giờ đến được


nhập theo định
3 CHUYENTAU GIODEN DATETIME dạng
(Giờ đến) yyyy/mm/dd
hh:mm:ss
Là một chuỗi các
TRANGTHAI NVARCHAR(50) ký tự có dấu thể
(Trạng thái) hiện trạng thái
của chuyến tàu.

Mã tuyến tàu là
một chuỗi các kí
MA_TUYEN_TAU NVARCHAR(10) tự dùng để phân
(Mã tuyến tàu) biệt các tuyến tàu
với nhau và được
giới hạn trong 10
ký tự.

5
Mã tàu thể hiện
số hiệu của tàu, là
một chuỗi kí tự
MATAU VARCHAR(3) dùng để phân biệt
(Mã tàu) các tàu với nhau
và giới hạn trong
3 kí tự.

SOTOA INT Tổng số toa của


(Số toa) tàu.

SOCHO INT Tổng số ghế của


(Số chỗ) tàu.
SOBUONG INT Tổng số buồng
4 TAU (Số buồng) của tàu
Mã ga là một
chuỗi các ký tự
dùng để phân biệt
MAGA NVARCHAR(5) các ga với nhau,
(Mã ga) mỗi mã ga là duy
nhất. Ví dụ như
HN, VIN, SG,..
Mã tuyến tàu là
một chuỗi các kí
tự dùng để phân
MA_TUYEN_TAU NVARCHAR(10) biệt các tuyến tàu
(Mã tuyến tàu) với nhau và được
giới hạn trong 10
ký tự.

Mã tuyến tàu là
một chuỗi các kí
tự dùng để phân
MA_TUYEN_TAU NVARCHAR(10) biệt các tuyến tàu
(Mã tuyến tàu) với nhau và được
TUYENTAU giới hạn trong 10
5 ký tự.

Ga đi là một
GADI NVARCHAR(50) chuỗi kí tự có
(Ga đi) dấu.

Ga đến là một
GADEN NVARCHAR(50) chuỗi kí tự có
(Ga đến) dấu.

6
Mã ga là một
chuỗi các ký tự
dùng để phân biệt
MAGA NVARCHAR(5) các ga với nhau,
(Mã ga) mỗi mã ga là duy
6 NHAGA nhất. Ví dụ như
HN, VIN, SG,..

Tên ga là một
TENGA NVARCHAR(50) chuỗi kí tự có
(Tên ga) dấu.

Địa điểm là một


DIADIEM NVARCHAR(100) chuỗi kí tự có
(Địa điểm) dấu.

Mã vé là một
chuỗi kí tự gồm
các số dùng để
phân biệt các vé
MAVE VARCHAR(8) với nhau. Mỗi mã
(Mã vé) vé là duy nhất và
được giới hạn
trong 8 kí tự.
Mã khách hàng
có dạng KH+’Số’
VETAU
7 (ví dụ như KH01)
dùng để xác định
MAKH NVARCHAR(4) khách hàng sử
(Mã khách hàng) dụng dịch vụ.
Mỗi mã khách
hàng là duy nhất.

Loại vé là một
LOAIVE chuỗi ký tự có
(Loại vé) NVARCHAR(30) dấu và có thể
trùng nhau.

GIAVE MONEY Là chuỗi ký tự số


(Giá vé) và có thể trùng
nhau giữa các vé.
Là chuỗi được
giới hạn trong 6
ký tự và có dạng:
‘Mã
tàu’+’A’+’xx’:
nếu KH đi toa
7
ngồi mềm điều
hòa
MA_DAT_CHO VARCHAR(6) ‘Mã
(Mã đặt chỗ) tàu’+’B’+’xx’:
nếu KH đi toa
giường nằm điều
hòa.
‘xx’ là số thứ tự
của chỗ trong toa
KH đi.
Ví dụ: SE2A09,
TN4B14,...

Mã tuyến tàu là
một chuỗi các kí
MA_TUYEN_TAU NVARCHAR(10) tự dùng để phân
(Mã tuyến tàu) biệt các tuyến tàu
với nhau và được
giới hạn trong 10
ký tự.
Mã chuyến tàu có
dạng ‘CT’+’Số”,
MA_CHUYEN_TAU NVARCHAR(10) ví dụ như CT01,
(Mã chuyến tàu) dùng để phân biệt
các chuyến tàu
với nhau.

Mã khách hàng
có dạng KH+’Số’
(ví dụ như KH01)
dùng để xác định
khách hàng sử
MAKH, NVARCHAR(4) dụng dịch vụ.
MA_CHUYEN_TAU Mỗi mã khách
hàng là duy nhất.
8 PHANHOI Mã chuyến tàu có
dạng ‘CT’+’Số”,
ví dụ như CT01,
dùng để phân biệt
các chuyến tàu
với nhau.

Là một chuỗi ký
LOAIPHANHOI NVARCHAR(50) tự có dấu thể hiện
(Loại phản hồi) phản hồi của
khách hàng.

8
Là một chuỗi ký
TRANGTHAIXULY NVARCHAR(50) tự có dấu thể hiện
(Trạng thái xử lý) trạng thái xử lý
phản hồi.

Hình 1. Bảng tóm tắt các mô tả thuộc tính

• Chú thích:

Khung màu hồng; Khóa chính


Khung màu xanh: Khóa ngoại
Khung màu tím: Vừa là khóa chính vừa là khóa ngoại
Giải thích khóa ngoại

- Mối quan hệ “Đi” giữa KHACHHANG - CHUYENTAU là mối quan hệ một-


nhiều: một bên KHACHHANG và nhiều bên CHUYENTAU. Nên chúng ta sẽ thêm
thuộc tính khóa của bên nhiều vào bên một, cụ thể là đưa thuộc tính
MA_CHUYEN_TAU của CHUYENTAU bỏ vào quan hệ KHACHHANG để làm khóa
ngoại

- Mối quan hệ “Mua” giữa KHACHHANG - VETAU là mối quan hệ một-nhiều:


một bên VETAU và nhiều bên KHACHHANG. Nên chúng ta sẽ thêm thuộc tính khóa
của bên nhiều vào bên một, cụ thể là đưa thuộc tính MAKH của KHACHHANG vào
quan hệ VETAU để làm khóa ngoại.

- Mối quan hệ “Thuộc” giữa VETAU – CHUYENTAU là mối quan hệ một-


nhiều: một bên VETAU và nhiều bên CHUYENTAU. Nên chúng ta sẽ thêm thuộc tính
khóa của bên nhiều vào bên một, cụ thể là đưa thuộc tính MA_CHUYEN_TAU của
CHUYENTAU vào quan hệ VETAU để làm khóa ngoại.

- Mối quan hệ “Làm việc” giữa NHANVIEN – CHUYENTAU là quan hệ một-


nhiều: một bên NHANVIEN và nhiều bên CHUYENTAU. Nên chúng ta sẽ thêm thuộc
tính khóa của bên nhiều vào bên một, cụ thể là đưa thuộc tính MA_CHUYEN_TAU của
CHUYENTAU vào quan hệ NHANVIEN để làm khóa ngoại.

- Mối quan hệ “Thuộc” giữa TUYENTAU – CHUYENTAU là mối quan hệ


một-nhiều: một bên CHUYENTAU và nhiều bên TUYENTAU. Nên chúng ta sẽ thêm
thuộc tính khóa của bên nhiều vào bên một, cụ thể là đưa thuộc tính MA_TUYEN_TAU
của TUYENTAU vào quan hệ CHUYENTAU để làm khóa ngoại.

- Mối quan hệ “Có” giữa TAU – TUYENTAU là mối quan hệ một-nhiều: một
bên TAU và nhiều bên TUYENTAU. Nên chúng ta sẽ thêm thuộc tính khóa của bên

9
nhiều vào bên một, cụ thể là đưa thuộc tính MA_TUYEN_TAU của TUYENTAU vào
quan hệ TAU để làm khóa ngoại.

- Mối quan hệ “Quản lí” giữa GA – TAU là mối quan hệ một-nhiều: một bên
TAU và nhiều bên GA. Nên chúng ta sẽ đem thuộc tính khóa của bên nhiều bỏ vào bên
một, cụ thể là đưa MAGA của GA bỏ vào quan hệ TAU để làm khóa ngoại

- Mối quan hệ “Làm việc” giữa NHANVIEN – GA là mối quan hệ một-nhiều:


một bên NHANVIEN và nhiều bên GA. Nên chúng ta sẽ đem thuộc tính khóa của bên
nhiều vào bên một, cụ thể là đưa MAGA của GA bỏ vào quan hệ NHANVIEN để làm
khóa ngoại.

- Mối quan hệ “Phản hồi” giữa KHACHHANG – CHUYENTAU là mối quan hệ nhiều-
nhiều. Nên chúng ta sẽ tạo một quan hệ mới có tên là PHANHOI có khóa chính là khóa
của các thuộc tính liên quan, cụ thể ở đây là KHACH HANG và CHUYENTAU.
2. MÔ HÌNH THỰC THỂ
2.1. Mô hình thực thể kết hợp

Hình 2. Mô hình thực thể kết hợp

10
2.2. Mô hình cơ sở dữ liệu

Hình 3. Mô hình cơ sở dữ liệu

11
2.3.Mô hình quan hệ

Hình 4. Mô hình quan hệ

3.RÀNG BUỘC TOÀN VẸN


3.1.Ràng buộc giới tính khách hàng, nhân viên
Ngôn ngữ tự nhiên : Giới tính phải thuộc nam hoặc nữ
Bối cảnh : KHACHHANG, NHANVIEN
Biểu diễn : (∀(t)(KHACHHANG(t) ∧ (t.GIOITINH=’Nam’ v
t.GIOITINH=’Nữ’))) ∧ (∀(n)(NHANVIEN(n) ∧ (n.GIOITINH=’Nam’ v
n.GIOITINH=’Nữ’)))
Bảng tầm ảnh hưởng :

R1 Thêm Xóa Sửa

KHACHHANG + - +(GIOITINH)

NHANVIEN + - +(GIOITINH)

12
3.2. Ràng buộc họ tên khách hàng và nhân viên

Ngôn ngữ tự nhiên : Họ tên của khách hàng và nhân viên không được để trống
Bối cảnh : KHACHHANG, NHANVIEN
Biểu diễn : (∀(t)(KHACHHANG(t) ∧ (t.HOTEN ≠ NULL))) ∧
(∀(n)(NHANVIEN(n) ∧ (n.HOTEN ≠ NULL)))
Bảng tầm ảnh hưởng:

R2 Thêm Xóa Sửa

KHACHHANG + - +(HOTEN)

3.3. Ràng buộc mã khách hàng

Ngôn ngữ tự nhiên : Mã khách hàng phải có định dạng KH


Bối cảnh : KHACHHANG
Biểu diễn : ∀(t)(KHACHHANG(t) ∧ (t.MAKH LIKE (KH%)))
Bảng tầm ảnh hưởng :

R3 Thêm Xóa Sửa

KHACHHANG + - +(MAKH)

3.4. Ràng buộc mã nhân viên


Ngôn ngữ tự nhiên : Mã nhân viên phải có định dạng NV
Bối cảnh : NHANVIEN
Biểu diễn : ∀(t)(NHANVIEN(t) ∧ (t.MANV LIKE (NV%)))
Bảng tầm ảnh hưởng :

R4 Thêm Xóa Sửa


NHANVIEN + - +(MANV)

13
3.5. Ràng buộc mã khách hàng và mã nhân viên
Ngôn ngữ tự nhiên : Mã khách hàng và mã nhân viên là duy nhất
Bối cảnh : KHACHHANG, NHANVIEN
Biểu diễn : (∀t1, t2 ∊ KHACHHANG(t1 ≠ t2 ∧ t1.MAKH ≠ t2.MAKH))
∧ (∀n1,n2 ∊ NHANVIEN(n1 ≠ n2 ∧ n1.MANV ≠ n2.MANV))
Bảng tầm ảnh hưởng :

R5 Thêm Xóa Sửa

KHACHHANG + - +(MAKH)
NHANVIEN + - +(MANV)

3.6. Ràng buộc số điện thoại của khách hàng và nhân viên
Ngôn ngữ tự nhiên : Số điện thoại của khách hàng và nhân viên là duy nhất
Bối cảnh : KHACHHANG, NHANVIEN
Biểu diễn : (∀t1, t2 ∊ KHACHHANG(t1 ≠ t2 ∧ t1.SDT ≠ t2.SDT)) ∧ (∀n1,n2
∊ NHANVIEN(n1 ≠ n2 ∧ n1.MANV ≠ n2.MANV))
Bảng tầm ảnh hưởng :

R6 Thêm Xóa Sửa

KHACHHANG + - +(SDT)

NHANVIEN + - +(SDT)

3.7. Ràng buộc số căn cước công dân của khách hàng
Ngôn ngữ tự nhiên : Số căn cước công dân của khách hàng là duy nhất
Bối cảnh : KHACHHANG
Biểu diễn : (∀t1, t2 ∊ KHACHHANG(t1 ≠ t2 ∧ t1.CCCD ≠ t2.CCCD))
Bảng tầm ảnh hưởng :

R7 Thêm Xóa Sửa

KHACHHANG + - +(CCCD)

14
3.8. Ràng buộc giờ đi và giờ đến của chuyến tàu
Ngôn ngữ tự nhiên : Giờ đi phải nhỏ hơn giờ đến của chuyến tàu
Bối cảnh : CHUYENTAU
Biểu diễn : ∀(t)(CHUYENTAU(t) ∧ (t.GIODI < t.GIODEN))
Bảng tầm ảnh hưởng :

R8 Thêm Xóa Sửa


CHUYENTAU + - +(GIODI,GIODEN)

3.9. Ràng buộc giá vé


Ngôn ngữ tự nhiên : Giá vé phải lớn hơn 146,000 VND
Bối cảnh : VETAU
Biểu diễn : ∀(t)(VETAU(t) ∧ (t.GIAVE ≥ 146,000))
Bảng tầm ảnh hưởng :

R9 Thêm Xóa Sửa


VETAU + - +(GIAVE)

3.10. Ràng buộc số điện thoại khách hàng


Ngôn ngữ tự nhiên : Ràng buộc số điện thoại của khách hàng lớn hơn hoặc bằng 10 số
Bối cảnh : KHACHHANG
Biểu diễn : ∀(t)(KHACHHANG(t) ∧ (LEN(t.SDT) ≥ 10))
Bảng tầm ảnh hưởng :

R10 Thêm Xóa Sửa

KHACHHANG + - +(SDT)

3.11.Ràng buộc tuổi nhân viên


Ngôn ngữ tự nhiên : Nhân viên phải trên 18 tuổi
Bối cảnh : NHANVIEN
Biểu diễn : ∀(t)NHANVIEN(t) ∧ ((2023 - YEAR(NGAYSINHNV)) ≥ 18)
Bảng tầm ảnh hưởng :

15
R11 Thêm Xóa Sửa

NHANVIEN + - +(2023 - YEAR(NGAYSINH))

3.12. Ràng buộc mã đặt chỗ


Ngôn ngữ tự nhiên : Mã đặt chỗ phải gồm 6 ký tự
Bối cảnh : VETAU
Biểu diễn : ∀(t)(VETAU(t) ∧ (|t.MADATCHO| = 6))
Bảng tầm ảnh hưởng :

R12 Thêm Xóa Sửa

VETAU + - +(MADATCHO)

16
CHƯƠNG III. THỰC HIỆN CÁC THAO TÁC TRÊN
MICROSOFT SQL SERVER MANAGEMENT
1. MÔ TẢ DỮ LIỆU
1.1.Tạo database
CREATE DATABASE TAUSAT

1.2.Tạo các bảng


1.2.1.Tạo bảng Khách hàng
CREATE TABLE KHACHHANG (
MAKH NVARCHAR(4),
HOTEN NVARCHAR(50) ,
NGAYSINH DATE,
GIOITINH NVARCHAR(3),
CCCD VARCHAR(12),
SDT VARCHAR(15) ,
DIACHI NVARCHAR(100),
MA_CHUYEN_TAU NVARCHAR(4)
CONSTRAINT PK_MAKH PRIMARY KEY (MAKH)
)

1.2.2.Tạo bảng Nhân viên


CREATE TABLE NHANVIEN (
MANV VARCHAR(4),
HOTEN NVARCHAR(50) ,
NGAYSINH DATE,
GIOITINH NVARCHAR(3),
SDT VARCHAR(15),
CHUCVU NVARCHAR(50),
MAGA NVARCHAR(5),
MA_CHUYEN_TAU NVARCHAR(4)
CONSTRAINT PK_MANV PRIMARY KEY (MANV)
)
1.2.3.Tạo bảng Tàu
CREATE TABLE TAU (
MATAU VARCHAR(3),
SOTOA INT,
SOCHO INT,
SOBUONG INT,
MAGA NVARCHAR(5),
MA_TUYEN_TAU NVARCHAR(10) ,
CONSTRAINT PK_MATAU PRIMARY KEY (MATAU)
)

17
1.2.4.Tạo bảng Vé tàu
CREATE TABLE VETAU (
MAVE VARCHAR(8),
MAKH NVARCHAR(4) ,
LOAIVE NVARCHAR(30),
GIAVE MONEY,
MA_DAT_CHO VARCHAR(6),
MA_TUYEN_TAU NVARCHAR(10)
CONSTRAINT PK_MAVE PRIMARY KEY (MAVE)
)
1.2.5.Tạo bảng Nhà ga
CREATE TABLE NHAGA (
MAGA NVARCHAR(5),
TENGA NVARCHAR(50) ,
DIADIEM NVARCHAR(100)
CONSTRAINT PK_MAGA PRIMARY KEY (MAGA)
)
1.2.6.Tạo bảng Chuyến tàu
CREATE TABLE CHUYENTAU (
MA_CHUYEN_TAU NVARCHAR(4),
GIODI DATETIME,
GIODEN DATETIME,
TRANGTHAI NVARCHAR(50),
MA_TUYEN_TAU NVARCHAR(10) ,
CONSTRAINT PK_MA_CHUYEN_TAU PRIMARY KEY (MA_CHUYEN_TAU)
)
1.2.7.Tạo bảng Tuyến tàu
CREATE TABLE TUYENTAU (
MA_TUYEN_TAU NVARCHAR(10) ,
GADI NVARCHAR(50),
GADEN NVARCHAR(50)
CONSTRAINT PK_MA_TUYEN_TAU PRIMARY KEY (MA_TUYEN_TAU)
)
1.2.8.Tạo bảng Phản hồi
CREATE TABLE PHANHOI (
MAKH NVARCHAR(4) ,
LOAIPHANHOI NVARCHAR(50),
TRANGTHAIXULI NVARCHAR(50),
MA_CHUYEN_TAU NVARCHAR(4)
CONSTRAINT PK_MAKH_MA_CHUYEN_TAU PRIMARY KEY
(MAKH,MA_CHUYEN_TAU ))

18
2.TẠO KHÓA NGOẠI

ALTER TABLE KHACHHANG ADD CONSTRAINT


FK_KHACHHANG_MACHUYENTAU FOREIGN KEY (MA_CHUYEN_TAU)
REFERENCES CHUYENTAU(MA_CHUYEN_TAU)

ALTER TABLE NHANVIEN ADD CONSTRAINT


FK_NHANVIEN_MACHUYENTAU FOREIGN KEY (MA_CHUYEN_TAU)
REFERENCES CHUYENTAU(MA_CHUYEN_TAU)

ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NHANVIEN_MAGA


FOREIGN KEY (MAGA) REFERENCES NHAGA(MAGA)

ALTER TABLE TAU ADD CONSTRAINT FK_TAU_MAGA FOREIGN KEY


(MAGA) REFERENCES NHAGA(MAGA)

ALTER TABLE TAU ADD CONSTRAINT FK_TAU_MATUYENTAU FOREIGN


KEY (MA_TUYEN_TAU) REFERENCES TUYENTAU(MA_TUYEN_TAU)

ALTER TABLE CHUYENTAU ADD CONSTRAINT


FK_CHUYENTAU_MATUYENTAU FOREIGN KEY (MA_TUYEN_TAU)
REFERENCES TUYENTAU(MA_TUYEN_TAU)

ALTER TABLE VETAU ADD CONSTRAINT FK_VETAU_MAKH FOREIGN KEY


(MAKH) REFERENCES KHACHHANG(MAKH)

ALTER TABLE VETAU ADD CONSTRAINT FK_VETAU_MACHUYENTAU


FOREIGN KEY (MA_CHUYEN_TAU) REFERENCES
CHUYENTAU(MA_CHUYEN_TAU)

3.THAO TÁC TRÊN DỮ LIỆU


3.1. Thêm dữ liệu vào các table bằng lệnh SQL
3.1.1.Thêm dữ liệu vào bảng Khách hàng

INSERT INTO KHACHHANG VALUES ('KH01', N'Nguyễn Văn Anh Quốc',


'06/12/1995', N'Nam', '079195015539', '0901 234 567', N'123 Nguyễn Văn Cừ, Quận 5,
TP.HCM', 'CT01')

INSERT INTO KHACHHANG VALUES('KH02', N'Nguyễn Thị Thanh Bình',


'09/08/1987', N'Nữ', '079093038628', '0978 653 321', N'567 Lê Lợi, Quận 1, TP.HCM',
'CT01')

INSERT INTO KHACHHANG VALUES('KH03', N'Trần Văn Chiến', '03/27/2001',


N'Nam', '080302001503', '0357 656 789',N'456 Trần Hưng Đạo, Quận 1, TP.HCM',
'CT02')

INSERT INTO KHACHHANG VALUES ('KH04', N'Lê Nguyễn Hoàng Thư',


'01/19/2014', N'Nữ', '097649399332', '0780 344 248', N'789 Lý Thường Kiệt, Quận 10,
TP.HCM', 'CT03')
19
INSERT INTO KHACHHANG VALUES ('KH05', N'Phạm Hoàng Quốc Bảo', '1992-11-
14', N'Nam', '078251294226', '0167 894 561', N'147 Bùi Thị Xuân, Quận 1, TP.HCM',
'CT03')

INSERT INTO KHACHHANG VALUES ('KH06', N'Đặng Ngân Giang', '1985-05-01',


N'Nữ', '085312498543', '0908 597 999', N'Ấp Trà Tro,Hàm Giang, Trà Cú, Trà Vinh',
'CT05')

INSERT INTO KHACHHANG VALUES ('KH07', N'Phan Thị Minh Châu', '1961-02-
22', N'Nữ', '042301722155', '0913 755 333', N'Ấp Thạnh Điền, Xã Lý Văn Lâm, Thành
phố Cà Mau', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH08', N'Nguyễn Hoàng Nhật Nam', '1976-
08-17', N'Nam', '025352838420', '0947 255 788', N'Khóm 3, Thị Trấn Mỹ An, Huyện
Tháp Mười, Tỉnh Đồng Tháp', 'CT04')

INSERT INTO KHACHHANG VALUES ('KH09', N'Tạ Bích Ngân', '2003-04-09',


N'Nữ', '015125954814', '0918 119 623', N'Khóm 6, Thị trấn Đầm Dơi, Huyện Đầm Dơi,
Cà Mau', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH10', N'Đinh Hải Huyền', '1989-12-03',


N'Nữ', '026352638430', '0903 246 878', N'20/4 - Lưu Khánh Đức - Khóm 3, Phường 2,
Thành phố Sóc Trăng', 'CT05')

INSERT INTO KHACHHANG VALUES ('KH11', N'Nguyễn Hoàng Minh An', '1990-
07-16', N'Nam', '089523563286', '0934 578 676', N'Xã Lưu Nghiệp Anh, , Huyện Trà Cú,
Tỉnh Trà Vinh', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH12', N'Lâm Tịnh Như', '1983-10-25',


N'Nữ', '025525626636', '0657 907 976', N'Xã Kim Sơn, , Huyện Trà Cú, Tỉnh Trà Vinh',
'CT03')

INSERT INTO KHACHHANG VALUES ('KH13', N'Giang Quốc Dũng', '2000-06-07',


N'Nam', '056525636663', '0978 987 098', N'Thị Trấn Đại Ngãi, Huyện Long Phú, tỉnh
Sóc Trăng', 'CT05')

INSERT INTO KHACHHANG VALUES ('KH14', N'Nguyễn Hồng Lộc', '1972-01-09',


N'Nam', '045859937246', '0256 369 636', N'Xã Bù Gia Mập, Huyện Bù Gia Mập, Tỉnh
Bình Phước', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH15', N'Tống Thị Ngọc Tuyền', '2015-03-
30', N'Nữ', '092874793253', '0978 234 564', N'Xã An Nhơn Tây, Huyện Củ Chi,
TP.HCM', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH16', N'Trần Ngọc Thảo', '1997-01-11',


'Nam', '032246653325', '0789 125 636', N'Xã Thiện Mỹ,Huyện Trà Ôn, Tỉnh Vĩnh Long',
'CT05')

20
INSERT INTO KHACHHANG VALUES ('KH17', N'Hà Quốc Thảo', '1979-11-05',
N'Nam', '031552255454', '0967 232 345', N'Xã Thạnh Ngãi,Huyện Mỏ Cày Bắc, Tỉnh
Bến Tre', 'CT03')

INSERT INTO KHACHHANG VALUES ('KH18', N'Lâm Hải Triều', '1993-05-18',


N'Nam', '023569840345', '0857 964 789', N'Xã An Thạnh Nam ,Huyện Cù Lao Dung,
Tỉnh Sóc Trăng', 'CT05')

INSERT INTO KHACHHANG VALUES ('KH19', N'Trang Thanh Phong', '2002-02-


13', N'Nam', '056379270645', '0598 654 258', N'Xã Tân Bửu, Huyện Bến Lức, Tỉnh Long
An', 'CT05')

INSERT INTO KHACHHANG VALUES ('KH20', N'Dương Thúy Hằng', '1981-08-29',


N'Nữ', '056478355096', '0789 363 589', N'Xã Bình Đức,Huyện Bến Lức, Tỉnh Long An',
'CT05')

3.1.2.Thêm dữ liệu vào bảng Nhân viên

INSERT INTO NHANVIEN VALUES ('NV01', N'Nguyễn Văn Huy', '1998-02-25',


N'Nam', '0357624898', N'Nhân viên bán vé', N'HN', 'CT01')

INSERT INTO NHANVIEN VALUES ('NV02', N'Trần Thị Oanh Thư', '1975-07-02',
N'Nữ', '0375675989', N'Nhân viên bán vé', N'TC', 'CT02')

INSERT INTO NHANVIEN VALUES ('NV03', N'Phạm Văn Toàn', '1986-11-11',


N'Nam', '0978217936', N'Nhân viên soát vé', N'ĐN', 'CT03')

INSERT INTO NHANVIEN VALUES ('NV04', N'Lê Ngọc Hoàng Trúc', '2001-04-05',
N'Nữ', '0965345676', N'Nhân viên phục vụ khách hàng', N'SG', 'CT04')

INSERT INTO NHANVIEN VALUES ('NV05', N'Đỗ Nguyễn Quang Phú', '1991-09-
20', N'Nam', '0782345879', N'Nhân viên phục vụ khách hàng', N'TH', 'CT05')

INSERT INTO NHANVIEN VALUES ('NV06', N'Trần Vũ Như Uyên', '1979-12-08',


N'Nữ', '0678234564', N'Nhân viên bán vé', N'VIN', 'CT03')

INSERT INTO NHANVIEN VALUES ('NV07', N'Lê Thị Trà My', '2002-06-13', N'Nữ',
'0987254656', N'Nhân viên phục vụ khách hàng', N'SG', 'CT03')

INSERT INTO NHANVIEN VALUES ('NV08', N'Nguyễn Hữu Hoàng', '1984-01-17',


N'Nam', '0358696721', N'Nhân viên soát vé', N'HN', 'CT02')

INSERT INTO NHANVIEN VALUES ('NV09', N'Bùi Dương Gia Huy', '1996-08-30',
N'Nam', '0967232898', N'Nhân viên soát vé', N'SG', 'CT02')
INSERT INTO NHANVIEN VALUES ('NV10', N'Lưu Trần Uyên Ngọc', '1977-03-22',
N'Nữ', '0969217939', N'Nhân viên phục vụ khách hàng', N'HN', 'CT02')

21
3.1.3.Thêm dữ liệu vào bảng Nhà ga

INSERT INTO NHAGA VALUES (N'HN', N'HÀ NỘI', N'Hà Nội')

INSERT INTO NHAGA VALUES (N'VIN', N'VINH', N'Nghệ An')

INSERT INTO NHAGA VALUES (N'ĐN', N'ĐÀ NẴNG', N'Đà Nẵng')

INSERT INTO NHAGA VALUES (N'TH', N'TUY HÒA', N'Phú Yên')

INSERT INTO NHAGA VALUES (N'TC', N'THÁP CHÀM', N'Ninh Thuận')


INSERT INTO NHAGA VALUES (N'SG', N'SÀI GÒN', N'Tp. Hồ Chí Minh')
3.1.4. Thêm dữ liệu vào bảng Vé tàu

INSERT INTO VETAU VALUES ('90874920', 'KH01', N'Đoàn viên công đoàn',
N'243,000', 'SE2A09', 'CT01')

INSERT INTO VETAU VALUES ('90874921', 'KH02', N'Người lớn', N'256,000',


'SE2A17', 'CT01')

INSERT INTO VETAU VALUES ('90874922', 'KH03', N'Sinh viên', N'339,000',


'SE4A15', 'CT02')

INSERT INTO VETAU VALUES ('90874923', 'KH04', N'Trẻ em', N'234,000',


'SE6B05', 'CT03')

INSERT INTO VETAU VALUES ('90874924', 'KH05', N'Người lớn', N'311,000',


'SE6B06', 'CT03')

INSERT INTO VETAU VALUES ('90874925', 'KH06', N'Người lớn', N'344,000',


'TN4A24', 'CT05')

INSERT INTO VETAU VALUES ('90874926', 'KH07', N'Người cao tuổi', N'265,000',
'SE6B07', 'CT03')

INSERT INTO VETAU VALUES ('90874927', 'KH08', N'Người lớn', N'146,000',


'TN2B01', 'CT04')

INSERT INTO VETAU VALUES ('90874928', 'KH09', N'Sinh viên', N'235,000',


'SE6A10', 'CT03')

INSERT INTO VETAU VALUES ('90874929', 'KH10', N'Người lớn', N'468,000',


'TN4B14', 'CT05')

INSERT INTO VETAU VALUES ('90874930', 'KH11', N'Người lớn', N'261,000',


'SE6A09', 'CT03')

INSERT INTO VETAU VALUES ('90874931', 'KH12', N'Đoàn viên công đoàn',
N'296,000', 'SE6B15', 'CT03')

22
INSERT INTO VETAU VALUES ('90874932', 'KH13', N'Sinh viên', N'310,000',
'TN4A12', 'CT05')

INSERT INTO VETAU VALUES ('90874933', 'KH14', N'Người lớn', N'311,000',


'SE6B01', 'CT03')

INSERT INTO VETAU VALUES ('90874934', 'KH15', N'Trẻ em', N'234,000',


'SE6B02', 'CT03')

INSERT INTO VETAU VALUES ('90874935', 'KH16', N'Người lớn', N'468,000',


'TN4B03', 'CT05')

INSERT INTO VETAU VALUES ('90874936', 'KH17', N'Người lớn', N'311,000',


'SE6B10', 'CT03')

INSERT INTO VETAU VALUES ('90874937', 'KH18', N'Đoàn viên công đoàn',
N'445,000', 'TN4B04', 'CT05')

INSERT INTO VETAU VALUES ('90874938', 'KH19', N'Sinh viên', N'421,000',


'TN4B10', 'CT05')
INSERT INTO VETAU VALUES ('90874939', 'KH20', N'Người lớn', N'468,000',
'TN4B11', 'CT05')

3.1.5. Thêm dữ liệu vào bảng Chuyến tàu

INSERT INTO CHUYENTAU VALUES ('CT01', '2023-03-15 13:00:00', '2023-03-16


14:00:00', N'Đã hoàn thành', N'HN-VIN')

INSERT INTO CHUYENTAU VALUES ('CT02', '2023-03-15 13:00:00', '2023-03-16


14:30:00', N'Đã hoàn thành', N'VIN-ĐN')

INSERT INTO CHUYENTAU VALUES ('CT03', '2023-03-26 12:00:00', '2023-03-26


15:00:00', N'Đang hoạt động', N'ĐN-TH')

INSERT INTO CHUYENTAU VALUES ('CT04', '2023-03-15 14:00:00', '2023-03-15


21:00:00', N'Chưa khởi hành', N'TH-TC')
INSERT INTO CHUYENTAU VALUES ('CT05', '2023-03-29 16:00:00', '2023-03-29
18:30:00', N'Chưa khởi hành', N'TC-SG')
3.1.6. Thêm dữ liệu vào bảng Tuyến tàu

INSERT INTO TUYENTAU VALUES (N'HN-VIN', N'HÀ NỘI', N'VINH')

INSERT INTO TUYENTAU VALUES (N'VIN-ĐN', N'VINH', N'ĐÀ NẴNG')

INSERT INTO TUYENTAU VALUES (N'ĐN-TH', N'ĐÀ NẴNG', N'TUY HÒA')

INSERT INTO TUYENTAU VALUES (N'TH-TC', N'TUY HÒA', N'THÁP CHÀM')


INSERT INTO TUYENTAU VALUES (N'TC-SG', N'THÁP CHÀM', N'SÀI GÒN')

23
3.1.7. Thêm dữ liệu vào bảng Tàu

INSERT INTO TAU VALUES ('SE2', '12', '768', '10', N'HN', N'HN-VIN')

INSERT INTO TAU VALUES('SE4', '12', '768', '9', N'VIN', N'VIN-ĐN')

INSERT INTO TAU VALUES('SE6', '11', '704', '8', N'ĐN', N'ĐN-TH')

INSERT INTO TAU VALUES('TN2', '13', '805', '9', N'TH', N'TH-TC')


INSERT INTO TAU VALUES('TN4', '13', '821', '10', N'TC', N'TC-SG')
3.1.8. Thêm dữ liệu vào bảng Phản hồi
INSERT INTO PHANHOI VALUES ('KH01','CT01', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH02','CT01', N'Tiêu cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH03','CT02', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH04','CT03', N'Trung tính', N'Chưa hoàn
thành')
INSERT INTO PHANHOI VALUES ('KH05','CT03', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH06','CT05', N'Trung tính', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH07','CT03', N'Trung tính', N'Chưa hoàn
thành')
INSERT INTO PHANHOI VALUES ('KH08','CT04', N'Tiêu cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH09','CT03', N'Tích cực', N'Chưa hoàn thành')
INSERT INTO PHANHOI VALUES ('KH10','CT05', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH11','CT03', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH12','CT03', N'Tiêu cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH13','CT05', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH14','CT03', N'Trung tính', N'Chưa hoàn
thành')
INSERT INTO PHANHOI VALUES ('KH15','CT03', N'Tích cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH16','CT05', N'Trung tính', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH17','CT03', N'Trung tính', N'Chưa hoàn
thành')
INSERT INTO PHANHOI VALUES ('KH18','CT05', N'Tiêu cực', N'Đã hoàn thành')
INSERT INTO PHANHOI VALUES ('KH19','CT05', N'Tích cực', N'Chưa hoàn thành')
INSERT INTO PHANHOI VALUES ('KH20','CT05', N'Tích cực', N'Đã hoàn thành')

3.2. Update dữ liệu vào các table bằng lệnh SQL


--Với những dòng có phản hồi là tiêu cực, đổi thành tích cực

update PHANHOI
set LOAIPHANHOI=N'Tích cực'
WHERE LOAIPHANHOI=N'Tiêu cực'
3.3. Xóa dữ liệu ở các bảng table bằng lệnh SQL
--Xóa toàn bộ dữ liệu trong bảng Nhân viên

delete from NHANVIEN


24
--Xóa toàn bộ dữ liệu trong bảng Khách hàng
delete from KHACHHANG

4. LỆNH TRUY VẤN DỮ LIỆU


4.1.Truy vấn 1 bảng
--Xuất thông tin những khách hàng có giới tính ‘Nữ’, hiển thị Mã KH, Tên KH, Địa
chỉ và SĐT.

SELECT K.MAKH, K.HOTEN, K.DIACHI, K.SDT


FROM KHACHHANG K
WHERE K.GIOITINH=N'Nữ'
Kết quả hiển thị:

-- Xuất thông tin những nhân viên phụ trách việc bán vé

SELECT N.MANV, N.HOTEN


FROM NHANVIEN N
WHERE N.CHUCVU=N'Nhân viên bán vé'

Kết quả hiển thị:

4.2. Truy vấn nhiều bảng (Phép kết)


-- Tìm thông tin của Khách hàng có loại vé là Sinh viên

SELECT KHACHHANG.MAKH, KHACHHANG.HOTEN


FROM KHACHHANG
25
INNER JOIN VETAU ON KHACHHANG.MAKH = VETAU.MAKH
WHERE VETAU.LOAIVE = N'sinh viên'
Kết quả hiển thị:

--Tìm khách hàng đánh giá tiêu cực

SELECT KHACHHANG.HOTEN, PHANHOI.LOAIPHANHOI


FROM KHACHHANG
INNER JOIN PHANHOI ON KHACHHANG.MAKH =
PHANHOI.MAKH
WHERE PHANHOI.LOAIPHANHOI = N'Tiêu cực'
Kết quả hiển thị:

4.3. Truy vấn có điều kiện (and, or, like, between,....)


--In ra danh sách khách hàng và mã khách hàng tương ứng nằm trong độ tuổi gen Z. Biết
Gen Z là nhóm người có năm sinh từ 1997 đến 2012

SELECT *
FROM KHACHHANG K
WHERE K.NGAYSINH BETWEEN'1-1-1997'AND '12-31-2012'
Kết quả hiển thị:

26
-- In ra danh sách các nhân viên nam làm công việc Nhân viên bán vé

SELECT N.MANV, N.HOTEN, N.NGAYSINH, N.GIOITINH, N.SDT,


N.CHUCVU, N.MAGA
FROM NHANVIEN N
WHERE GIOITINH = 'NAM' AND CHUCVU = 'Nhân viên bán vé'
Kết quả hiển thị:

4.4. Truy vấn tính toán


-- Tính tổng doanh thu mà chuyến tàu CT05 mang lại:
SELECT SUM (GIAVE) as N'Tổng doanh thu'
FROM VETAU
WHERE MA_CHUYEN_TAU ='CT05'
Kết quả hiển thị:

-- In ra MANV, HOTEN và tuổi của tất cả các nhân viên của tuyến tàu sắt Bắc Nam
SELECT MANV, HOTEN,
DATEDIFF (year, NGAYSINH, GETDATE()) AS N'Tuổi'
FROM NHANVIEN
Kết quả hiển thị:

27
4.5. Truy vấn có gom nhóm (group by)
--Đếm số khách hàng đi trên từng chuyến tàu
select K.MA_CHUYEN_TAU as' Chuyến tàu', count(K.makh) as 'Số lượng'
from KHACHHANG K
group by K.MA_CHUYEN_TAU
Kết quả hiển thị:

--Đếm số lượng của từng loại phản hồi


select P.LOAIPHANHOI AS 'Loại phản hồi', count(p.makh) as 'Số lượng'
from PHANHOI P
group by P.LOAIPHANHOI
Kết quả hiển thị:

28
4.6.Truy vấn gom nhóm có điều kiện (having)
--Tìm mã chuyến tàu có số vé đặt nhiều hơn 5

SELECT VETAU.MA_CHUYEN_TAU, COUNT(*) AS SoVeDat


FROM VETAU
INNER JOIN CHUYENTAU ON VETAU.MA_CHUYEN_TAU =
CHUYENTAU.MA_CHUYEN_TAU
GROUP BY VETAU.MA_CHUYEN_TAU
HAVING COUNT(*) > 5
ORDER BY COUNT(*) DESC
Kết quả hiển thị:
––

--Tìm mã chuyến tàu có nhiều hơn hai nhân viên phục vụ


SELECT MA_CHUYEN_TAU
FROM NHANVIEN
GROUP BY MA_CHUYEN_TAU
HAVING COUNT(*) > 2
Kết quả hiển thị:

29
4.7. Truy vấn có sử dụng phép giao, hội, trừ.

--In ra danh sách khách hàng mua vé người lớn và có giá trên 300.000 đồng

SELECT K.MAKH, K.HOTEN, V.LOAIVE, V.GIAVE


FROM KHACHHANG K
JOIN VETAU V ON K.MAKH = V.MAKH
WHERE V.LOAIVE = N'Người lớn' AND V.GIAVE > N'300000'
Kết quả hiển thị:

– Lấy ra tất cả các khách hàng đã mua vé ngoại trừ chuyến CT03
SELECT K.MAKH, K.HOTEN, V.MAVE, V.MA_CHUYEN_TAU
FROM KHACHHANG K
JOIN VETAU V ON K.MAKH = V.MAKH
WHERE V.MA_CHUYEN_TAU NOT IN (SELECT
MA_CHUYEN_TAU FROM CHUYENTAU WHERE
MA_CHUYEN_TAU = 'CT03')

Kết quả hiển thị:

30
4.8. Truy vấn con
--In ra họ tên và địa chỉ của những khách hàng đi trên chuyến tàu có mã CT01.
SELECT HOTEN, DIACHI
FROM KHACHHANG
WHERE MAKH IN (SELECT MAKH
FROM VETAU
WHERE MA_CHUYEN_TAU = 'CT01');
Kết quả hiển thị:

5. VIẾT STORE PROCEDURE, FUNCTION VÀ RÀNG BUỘC


5.1 Viết Function

--1.Function lấy thông tin khách hàng theo mã khách hàng:

CREATE FUNCTION dbo.THONG_TIN_KHACH_HANG (@MAKH


NVARCHAR(4))
RETURNS TABLE
AS
RETURN (
SELECT *
FROM KHACHHANG
WHERE MAKH = @MAKH
)

-- Gọi hàm : Thông tin khách hàng có mã khách hàng là : KH01

SELECT * FROM dbo.THONG_TIN_KHACH_HANG('KH01');

--- 2. Function tính số lượng nhân viên trong từng nhà ga :

CREATE FUNCTION dbo.SO_LUONG_NHAN_VIEN(@MAGA NVARCHAR(5))


RETURNS INT
AS
31
BEGIN
DECLARE @SOLUONGNHANVIEN INT
SELECT @SOLUONGNHANVIEN = COUNT(*)
FROM NHANVIEN n
JOIN NHAGA g ON n.MAGA = g.MAGA
WHERE n.MAGA = @MAGA
GROUP BY n.MAGA, g.TENGA, g.DIADIEM
RETURN @SOLUONGNHANVIEN
END;

-- Gọi hàm : Tính số lượng nhân viên trong từng nhà ga


SELECT G.MAGA as 'Mã ga', G.TENGA as 'Tên ga', G.DIADIEM as 'Địa điểm',
COUNT(NHANVIEN.MANV) AS 'Số lượng nhân viên'
FROM NHAGA G
JOIN NHANVIEN ON G.MAGA = NHANVIEN.MAGA
GROUP BY G.MAGA, G.TENGA, G.DIADIEM

-- Gọi hàm : Tính số lượng nhân viên trong một nhà ga, cụ thể : Số lượng nhân viên trong
nhà ga Hà Nội

SELECT dbo.SO_LUONG_NHAN_VIEN('HN') as 'Số lượng nhân viên nhà ga Hà Nội'

--3. Function lấy danh sách nhân viên theo chức vụ:

CREATE FUNCTION dbo.DANH_SACH_NHAN_VIEN (@CHUCVU


NVARCHAR(50))
RETURNS TABLE
AS
RETURN
32
(
SELECT *
FROM NHANVIEN
WHERE CHUCVU = @CHUCVU
)

-- Gọi hàm : Danh sách nhân viên có chức vụ là : Nhân viên bán vé

SELECT * FROM dbo.DANH_SACH_NHAN_VIEN('Nhân viên bán vé');

-- 4. Function lấy danh sách các chuyến tàu trong khoảng thời gian cụ thể:

CREATE FUNCTION dbo.DANH_SACH_CHUYEN_TAU (@GIODI DATETIME,


@GIODEN DATETIME)
RETURNS TABLE
AS
RETURN
(
SELECT *
FROM CHUYENTAU
WHERE GIODI >= @GIODI AND GIODEN <= @GIODEN
)

-- Gọi hàm : Danh sách các chuyến tàu trong khoảng thời gian từ '2023-03-15 13:00:00'
đến '2023-03-16 14:00:00'

SELECT * FROM dbo.DANH_SACH_CHUYEN_TAU ('2023-03-15 13:00:00', '2023-


03-16 14:00:00')

-- 5. Function để lấy thông tin tất cả các khách hàng đặt vé trên một chuyến tàu cụ thể:

33
CREATE FUNCTION dbo.THONG_TIN_KHACH_HANG_DAT_VE
(@MA_CHUYEN_TAU NVARCHAR(4))
RETURNS TABLE
AS
RETURN
(
SELECT K.MAKH, K.HOTEN, K.NGAYSINH, K.GIOITINH, K.CCCD,
K.SDT, K.DIACHI, V.MAVE, V.LOAIVE, V.GIAVE,V.MA_DAT_CHO
FROM KHACHHANG K
INNER JOIN VETAU V ON K.MAKH = V.MAKH
INNER JOIN CHUYENTAU ON CHUYENTAU.MA_CHUYEN_TAU =
V.MA_CHUYEN_TAU
WHERE CHUYENTAU.MA_CHUYEN_TAU = @MA_CHUYEN_TAU
)

-- Gọi hàm : Thông tin tất cả các khách hàng đặt vé trên chuyến tàu CT05

SELECT * FROM dbo.THONG_TIN_KHACH_HANG_DAT_VE ('CT05')

5.2.Viết store procedure

--1. Thủ tục để lấy thông tin khách hàng theo mã khách hàng trong bảng KHACHHANG

CREATE PROCEDURE LAY_thongtinKH


@MAKH NVARCHAR(4)
AS
BEGIN
SELECT *
FROM KHACHHANG
WHERE MAKH = @MAKH
END

--Gọi hàm : Thủ tục để lấy thông tin khách hàng có mã 'KH01' trong bảng
KHACHHANG

EXEC LAY_thongtinKH 'KH01'

34
--2. Thủ tục để cập nhật thông tin khách hàng trong bảng KHACHHANG:

CREATE PROCEDURE Cap_Nhat_Khach_Hang


@MAKH NVARCHAR(4),
@HOTEN NVARCHAR(50),
@NGAYSINH DATE,
@GIOITINH NVARCHAR(3),
@CCCD VARCHAR(12),
@SDT VARCHAR(15),
@DIACHI NVARCHAR(100),
@MA_CHUYEN_TAU NVARCHAR(4)
AS
BEGIN
UPDATE KHACHHANG
SET HOTEN = @HOTEN,
NGAYSINH = @NGAYSINH,
GIOITINH = @GIOITINH,
CCCD = @CCCD,
SDT = @SDT,
DIACHI = @DIACHI,
MA_CHUYEN_TAU = @MA_CHUYEN_TAU
WHERE MAKH = @MAKH
END

-- Gọi hàm : cập nhật thông tin khách hàng có mã 'KH01' trong bảng KHACHHANG

EXEC Cap_Nhat_Khach_Hang
@MAKH = N'KH01',
@HOTEN = N'Lê Bá Học',
@NGAYSINH = '1988-07-25',
@GIOITINH = N'Nam',
@CCCD = '065988010745',
@SDT = '0985145785',
@DIACHI = N'48 Nguyễn Đình Chiểu, phường Tân Lợi, TP. Buôn Ma Thuột, tỉnh Đắk
Lắk',
@MA_CHUYEN_TAU = N'CT04'

SELECT *
FROM KHACHHANG K
35
WHERE K.MAKH = 'KH01'

-- 3. Thủ tục để thêm khách hàng mới vào bảng KHACHHANG:

CREATE PROCEDURE Them_Khach_Hang_Moi


@MAKH NVARCHAR(4),
@HOTEN NVARCHAR(50),
@NGAYSINH DATE,
@GIOITINH NVARCHAR(3),
@CCCD VARCHAR(12),
@SDT VARCHAR(15),
@DIACHI NVARCHAR(100),
@MA_CHUYEN_TAU NVARCHAR(4)
AS
BEGIN
INSERT INTO KHACHHANG (MAKH, HOTEN, NGAYSINH, GIOITINH,
CCCD, SDT, DIACHI, MA_CHUYEN_TAU)
VALUES (@MAKH, @HOTEN, @NGAYSINH, @GIOITINH, @CCCD,
@SDT, @DIACHI, @MA_CHUYEN_TAU)
END

-- Gọi hàm : Thêm thông tin khách hàng mới có mã khách hàng là 'KH21'

EXEC Them_Khach_Hang_Moi
@MAKH = N'KH21',
@HOTEN = N'Hồ Hoàng Robin',
@NGAYSINH = '2000-02-20',
@GIOITINH = N'Nam',
@CCCD = '066208060931',
@SDT = '0903554345',
@DIACHI = N'15/88A Y Ngông, Tân Tiến, TP. Buôn Ma Thuột, tỉnh Đắk Lắk',
@MA_CHUYEN_TAU = N'CT01'

SELECT * FROM KHACHHANG

36
-- 4. Thủ tục để lấy danh sách nhân viên theo chức vụ trong bảng NHANVIEN:

CREATE PROCEDURE Danh_Sach_Nhan_Vien_Theo_Chuc_Vu


@CHUCVU NVARCHAR(50)
AS
BEGIN
SELECT *
FROM NHANVIEN
WHERE CHUCVU = @CHUCVU
END

--Gọi hàm : lấy danh sách nhân viên có chức vụ là 'Nhân viên phục vụ khách hàng' trong
bảng NHANVIEN

EXEC Danh_Sach_Nhan_Vien_Theo_Chuc_Vu @CHUCVU = N'Nhân viên phục vụ


khách hàng'

5.3. Viết ràng buộc

--1. Ràng buộc giới tính khách hàng, nhân viên phải thuộc nam hoặc nữ

alter table KHACHHANG add constraint PHAI_KH

check(GIOITINH in (N'Nam', N'Nữ'));

alter table NHANVIEN add constraint PHAI_NV


37
check(GIOITINH in (N'Nam', N'Nữ'));

--2. Ràng buộc họ tên khách hàng và nhân viên không được để trống

ALTER TABLE KHACHHANG

ADD CONSTRAINT HOTEN_KH

CHECK (HOTEN IS NOT NULL);

ALTER TABLE NHANVIEN

ADD CONSTRAINT HOTEN_NV

CHECK (HOTEN IS NOT NULL);

--3. Ràng buộc mã khách hàng phải có định dạng KH

alter table KHACHHANG add constraint KT_DINHDANGKH

check (MAKH like 'KH%');

--4. Ràng buộc mã nhân viên phải có định dạng NV

alter table NHANVIEN add constraint KT_DINHDANGNV

check (MANV like 'NV%');

--5. Ràng buộc mã khách hàng và mã nhân viên là duy nhất

alter table KHACHHANG

add constraint MAKH_duynhat unique (MAKH);

alter table NHANVIEN

add constraint MANV_duynhat unique (MANV);

--6. Ràng buộc số điện thoại của khách hàng và nhân viên là duy nhất

alter table KHACHHANG

add constraint SDTKH_duynhat unique (SDT);

alter table NHANVIEN

add constraint SDTNV_duynhat unique (SDT);

--7. Ràng buộc số căn cước công dân của khách hàng là duy nhất

alter table KHACHHANG


38
add constraint CCCDKH_duynhat unique (CCCD);

--8. Ràng buộc giờ đi phải nhỏ hơn giờ đến của chuyến tàu

alter table CHUYENTAU add constraint KT_GIO

check( GIODI < GIODEN );

--9. Ràng buộc giá vé phải lớn hơn 146,000 VND

alter table VETAU add constraint KT_GIAVE check

(GIAVE >= 146000);

--10. Ràng buộc số điện thoại khách hàng lớn hơn hoặc bằng 10 số

alter table KHACHHANG add constraint KT_SDT

check (LEN(SDT) >= 10);

--11. Ràng buộc tuổi nhân viên

alter table NHANVIEN add constraint KT_TUOI check

(YEAR(GETDATE()) - YEAR(NGAYSINH) >= 18)

--12. Ràng buộc mã đặt chỗ phải gồm 6 ký tự

alter table VETAU add constraint KYTU_MADATCHO

check (LEN(MA_DAT_CHO) = 6);

39
CHƯƠNG IV. NHẬN XÉT VÀ ĐÁNH GIÁ HỆ THỐNG

Hệ thống quản lý hoạt động bán vé tàu sắt được thiết kế rất khả thi và có thể được triển
khai rộng rãi do tính quan trọng của việc quản lý trong lĩnh vực này. Hệ thống đã đáp ứng
được các yêu cầu cơ bản bao gồm cung cấp các sơ đồ dữ liệu và lược đồ quan hệ chi tiết,
cũng như các cấu trúc dữ liệu chi tiết. Nó giúp giảm thiểu công việc quản lý và tiết kiệm
thời gian và nhân lực bằng cách cập nhật dữ liệu liên tục và chính xác. Thông tin liên quan
đến hoạt động bán vé cũng được thống kê chi tiết, giúp quản lý đánh giá tình hình kinh
doanh của tàu sắt một cách dễ dàng.
Tuy nhiên, hệ thống cũng còn một số lỗi nhỏ trong quá trình nhập dữ liệu và đang dừng lại
ở mức quản lý thông tin liên quan nhất đến hoạt động bán vé. Để có thể áp dụng thực tế,
hệ thống cần được phát triển và mở rộng để quản lý các hoạt động dịch vụ khác mà khách
hàng thường sử dụng tại tàu sắt.
Dựa vào hệ thống thông tin quản lý tàu sắt,ta có thể hiểu hơn về khách hàng và những phản
hồi của khách hàng về chuyến tàu mà họ sử dụng để đưa ra cách khắc phục các mặt tiêu
cực cũng như phát huy các mặt tích cực để từ đó quản lý tàu sắt được tốt hơn và tăng doanh
thu.
Để khắc phục phản hồi tiêu cực của khách hàng về chuyến tàu khách đã đi, có một số
hướng khắc phục khách hàng có thể thực hiện như sau:
Lắng nghe và thấu hiểu: Đầu tiên, bạn cần lắng nghe và thấu hiểu những gì khách
hàng muốn truyền đạt. Hãy cho khách hàng biết rằng bạn đang nghiêm túc và quan tâm
đến ý kiến của họ.
Xác nhận vấn đề: Sau khi lắng nghe, hãy xác nhận lại vấn đề mà khách hàng đã nêu
ra. Bạn có thể hỏi thêm chi tiết để hiểu rõ hơn về tình huống mà họ đã trải qua.
Đưa ra giải pháp: Sau khi hiểu vấn đề, hãy đưa ra giải pháp để khách hàng có thể
cảm thấy hài lòng. Giải pháp có thể là thay đổi chính sách hoặc cung cấp thêm dịch vụ cho
khách hàng.
Tận tâm phục vụ: Bạn cần đảm bảo rằng khách hàng được phục vụ tận tình và chu
đáo. Hãy chắc chắn rằng họ nhận được thông tin cần thiết và được giải đáp mọi thắc mắc
của mình.
Theo dõi và cải tiến: Cuối cùng, bạn nên theo dõi lại tình trạng của khách hàng sau
khi giải quyết vấn đề. Điều này giúp bạn đảm bảo rằng khách hàng đã hài lòng với giải
pháp của bạn. Nếu vấn đề vẫn còn tồn tại, hãy cải tiến giải pháp của mình để đảm bảo
khách hàng hài lòng.

40
CHƯƠNG V. PHỤ LỤC
5.1.Các bảng sau khi được nhập liệu

Bảng Khách hàng (KHACHHANG)

Bảng Tuyến tàu (TUYENTAU)

Bảng Nhân viên (NHANVIEN)


Bảng Nhà ga (NHAGA)

Bảng Chuyến tàu (CHUYENTAU)

Bảng Vé tàu (VETAU)


Bảng Tàu (TAU)

Bảng Phản hồi (PHANHOI)


5.2. Tài liệu tham khảo

1. Slide bài giảng môn Cơ sở dữ liệu của cô Hồ Thị Thanh Tuyến.

You might also like