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

(Tiểu luận) đồ án giữa kỳ đề tài hệ thống quản lý bán vé tàu hỏa

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 (2.16 MB, 53 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾKHOA CÔNG NGHỆ THÔNG TIN KINH DOANH </b>

<b>ĐỒ ÁN GIỮA KỲ</b>

<b>ĐỀ TÀI: HỆ THỐNG QUẢN LÝ BÁN VÉ TÀU HỎA</b>

<b>NHÓM SINH VIÊN THỰC HIỆN - NHĨM 7</b>

ĐỒN THỊ HỒNG NHUNG 31221023618

LÊ NGUYỄN ANH THƯ 31221026611

<i>TP. Hồ Chí Minh, tháng 10 năm 2023</i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

2.5. Mô tả dữ liệu phụ thuộc khóa chính, khóa ngoại...11

<b>III. RÀNG BUỘC TỒN VẸN VÀ CHUẨN HĨA...12</b>

3.1.2. Ràng buộc tồn vẹn trên 1 quan hệ, 1 thuộc tính...16

3.1.3 Ràng buộc tồn vẹn trên 1 quan hệ, liên thuộc tính...17

3.1.4 Ràng buộc tồn vẹn trên 1 quan hệ, liên bộ...17

3.1.5 Ràng buộc toàn vẹn trên nhiều quan hệ...17

4.1.5. Truy vấn gom nhóm (GROUP BY)...26

4.1.6. Truy vấn gom nhóm có điều kiện (HAVING)...27

4.1.7. Truy vấn có giao | hội | trừ (INTERSECT | UNION | EXCEPT)...27

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

4.1.8. Truy vấn con...28

4.2. Viết TRIGGER ràng buộc dữ liệu cho các bảng...28

<b>V. THÔNG TIN CƠ SỞ DỮ LIỆU... 39</b>

6.1. Bảng phân chia công việc...44

6.2. Câu lệnh tạo bảng dữ liệu...46

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>I. LÝ DO CHỌN ĐỀ TÀI </b>

Công nghệ thông tin đã và đang trở thành một phần không thể thiếu trong mọi hoạt động sản xuất, vận hành và đời sống sinh hoạt của con người. Đây là một cơng cụ hữu hiệu có khả năng hiện thực hóa mọi ý tưởng về lao động trí óc và sức lực của con người.

Mọi công nghệ đều vận hành dựa trên cơ sở dữ liệu. Dữ liệu ảnh hưởng đến cuộc sống hàng ngày của con người ở quy mô lớn. Cửa hàng tạp hóa, ngân hàng, nhà hàng, trang web mua sắm trực tuyến, bệnh viện, cửa hàng quần áo,... tất cả đều sử dụng cơ sở dữ liệu để theo dõi khách hàng, hàng tồn kho, nhân viên, thơng tin kế tốn và bất kỳ thứ gì có thể được nhận dạng là thông tin. Cơ sở dữ liệu tồn tại trong nhiều khía cạnh của cuộc sống và cho phép thơng tin được lưu trữ và sử dụng nhanh chóng, dễ dàng.

Nhóm tác giả đã lựa chọn bối cảnh “Xây dựng mơ hình cơ sở dữ liệu về quản lý việc mua bán vé tàu hỏa trên nền tảng trực tuyến” để làm đề tài, do nhận thấy tầm quan trọng của hệ thống quản lý dữ liệu thông minh đối với sự vận hành của loại hình kinh doanh dịch vụ vận tải đường sắt - một dịch vụ rất phổ biến với đời sống con người và yêu cầu cụ thể về khả năng quản lý hiệu quả một lượng lớn thơng tin của loại hình hệ thống này.

Thông qua việc trực tiếp xây dựng cơ sở dữ liệu cho bối cảnh, nhóm tác giả cũng muốn khẳng định tầm quan trọng của cơ sở dữ liệu nói riêng và cơng nghệ thơng tin nói chung trong đời sống con người với những tiềm năng giải phóng sức lao động của con người vì khơng phải thực hiện thủ công những thao tác mà các hệ thống quản lý cơ sở dữ

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>II. THIẾT KẾ CƠ SỞ DỮ LIÊCU 2.1. Quy trình hệ thống </b>

Một hệ thống bán vé tàu sẽ ghi nhận lại thông tin của mỗi hành khách sau mỗi lần đặt vé tàu như sau:

Mỗi khi thực hiện đăng ký với hệ thống sẽ được cung cấp một tài khoản cá nhân với ID tài khoản là duy nhất, cùng với việc cung cấp những thông tin gồm: họ tên hành khách, tuổi, giới tính, thơng tin liên lạc (số điện thoại, email). Với những lần đăng nhập tiếp theo, hành khách chỉ cần nhập mã ID để truy cập vào tài khoản.

Mỗi hành khách sẽ được đặt nhiều vé và mỗi vé chỉ được sở hữu bởi một hành khách. Thông tin về vé bao gồm: mã vé, loại vé, giá vé, thời gian đi, trạm đón, trạm dừng và mã tàu mà vé có hiệu lực. Mỗi mã vé là duy nhất và chia thành 2 loại vé (phổ thông và vé VIP). Giá vé của từng loại vé sẽ khác nhau, cụ thể: với loại vé phổ thơng sẽ đồng loạt có giá tiền là 100.000 VND và với loại vé VIP, giá tiền sẽ đắt hơn 50% so với giá vé phổ thông.

Sau khi hoàn tất việc đăng ký, hành khách thực hiện thanh tốn. Hành khách có thể lựa chọn thanh tốn ngay lập tức hoặc thanh toán sau, tuy nhiên việc thanh toán sau phải tuân theo thời gian thanh toán quy định của hệ thống (thời gian thanh tốn khơng được vượt quá 24 giờ kể từ thời gian đặt vé được ghi nhận). Sau khi ghi nhận đã thanh tốn thành cơng, hành khách sẽ nhận được một phiếu đăng ký hoàn chỉnh nhằm nắm được thơng tin về vé mình sở hữu, mã phiếu đăng ký của mỗi bản phiếu đăng ký là duy nhất và gồm các thông tin: họ tên hành khách, thời gian đặt vé, số lượng vé, mã hóa đơn của hóa đơn sau khi hành khách đã thực hiện thanh tốn thành cơng, ID của tài khoản đặt vé và mã tàu mà hành khách sẽ di chuyển. Khách hàng có thể đặt vé nhiều lần trong ngày, khi đó, số lượng vé (số lượng vé một hành khách đặt không được quá 10 vé) và tổng số tiền đã thanh toán sẽ được ghi nhận và gửi cho hành khách tương ứng.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Trên mỗi vé tàu sẽ có đúng một mã tàu mà hành khách sẽ di chuyển, và mỗi tàu sẽ gồm nhiều vé tàu. Mã tàu là duy nhất đối với mỗi tàu, bên cạnh đó, hệ thống sẽ cung cấp thêm những thông tin liên quan đến tàu như sau: thời gian khởi hành, số ghế còn trống, tên trạm nơi tàu xuất phát và tên trạm tàu sẽ dừng lại. Vé tàu chỉ được chấp nhận khi trạm đón và trạm dừng trên vé mà hành khách đã đặt đúng với lộ trình mà tàu đó đi qua.

Mỗi tàu sẽ xuất phát từ một trạm, bên cạnh đó, mỗi trạm sẽ đóng vai trị vừa là trạm đón khách, vừa là trạm dừng để hồn thành chuyến đi của hành khách, thông tin của trạm gồm: mã trạm và tên trạm, trong đó mã trạm là duy nhất.

Mỗi tàu sẽ được phụ trách bởi ba nhân viên (chỉ tính trong buồng lái tàu), trong đó gồm: một lái chính và hai phụ lái. Với mã nhân viên là duy nhất, những thông tin bổ sung gồm: họ tên nhân viên, tuổi, giới tính và mức lương. Lái chính sẽ đảm nhận trách nhiệm cầm lái trong suốt quá trình tàu di chuyển và cần phải cung cấp thêm thông tin về số năm kinh nghiệm bản thân và số năm kinh nghiệm tối thiểu đối với lái chính là 5 năm, tuy nhiên với những trường hợp bất khả kháng, nhiệm vụ này sẽ được giao lại cho một trong hai phụ lái, và khi đó cần phải đề cập rõ lý do vì sao cần đến sự thay thế.

Song song với việc thanh toán ngay lập tức, hệ thống cho phép hành khách thanh toán trực tuyến trong vịng 24 giờ tính từ thời gian đặt vé, sau khi thanh toán, hành khách sẽ nhận được hóa đơn, bao gồm mã hóa đơn là duy nhất và ghi nhận thêm những thông tin: họ tên hành khách, số tiền thanh toán, phương thức thanh toán (VNPay hoặc MoMo) và thời gian thanh tốn. Sau khi hồn thành xong bước thanh toán, hành khách sẽ được nhận một mã QR trên phiếu đăng ký với chức năng như vé để sử dụng khi lên tàu.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>5LAI_CHINH sonamkinhnghiem</b> INT tin ghi nhận hóa

đơn sau khi

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>2.3. Mơ hình hóa dữ liệu ERD </b>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>2.4. Các lược đồ quan hệ RD </b>

Nếu khơng có từ khóa <b>NULL </b>theo sau kiểu dữ liệu thì các thuộc tính sẽ mang đặc tính

<b>NOT NULL.</b>

<b>TAI_KHOAN(ID, hoten, tuoi, gioitinh, sodienthoai, email)</b>

Mô tả: Lược đồ quan hệ TAI_KHOAN được dùng để lưu trữ thông tin về tài khoản hành khách trên hệ thống bán vé

hoten <b>NVARCHAR(30): họ và tên của hành khách thực hiện đăng kí</b>

tài khoản

tuoi <b>INT: tuổi của hành khách thực hiện đăng kí tài khoản</b>

gioitinh <b>NVARCHAR(3) CHECK (gioitinh IN (N’Nam’, N’Nữ’))</b>

sodienthoai <b>VARCHAR(12): số điện thoại của hành khách đăng ký tài</b>

email <b>VARCHAR(30): email của hành khách đăng ký tài khoản</b>

<b>TAU(matau, thoigiankhoihanh, soluongghetrong, matramkhoihanh, matramdung)</b>

Mô tả: Lược đồ quan hệ TAU được dùng để lưu trữ thông tin về các chuyến tàu trên hệ thống bán vé

matau <b>CHAR(3) PRIMARY KEY: mã của chuyến tàu trên hệ thống</b>

bán vé

thoigiankhoihanh <b>DATETIME: thời gian khởi hành chuyến tàu</b>

soluongghetrong <b>INT: số lượng ghế trống trên tàu</b>

matramkhoihanh <b>CHAR(2): mã trạm bắt đầu hành trình của tàu</b>

matramdung <b>CHAR(2): mã trạm kết thúc hành trình của tàu</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

đón, trạm dừng trên hệ thống bán vé

matram <b>CHAR(2) PRIMARY KEY: mã của trạm tàu trên hệ thống</b>

bán vé

tentram <b>NVARCHAR(20): tên của trạm tàu</b>

<b>NHAN_VIEN(manhanvien, hotennv, tuoi, gioitinh, matau)</b>

Mô tả: Lược đồ quan hệ NHAN_VIEN được dùng để lưu trữ thông tin về các nhân viên phụ trách chuyến tàu

manhanvien <b>CHAR(5) PRIMARY KEY: mã nhân viên phụ trách chuyến</b>

hotennv <b>NVARCHAR(30): họ và tên nhân viên</b>

gioitinh <b>NVARCHAR(3) CHECK (gioitinh IN (N’Nam’, N’Nữ’)):</b>

giới tính của nhân viên

matau <b>CHAR(3): mã của chuyến tàu trên hệ thống bán vé</b>

<b>LAI_CHINH(manhanvien, sonamkinhnghiem, matau)</b>

Mô tả: Lược đồ quan hệ LAI_CHINH được dùng để lưu trữ thông tin về nhân viên phụ trách lái chuyến tàu trên hệ thống bán vé

manhanvien <b>CHAR(5) PRIMARY KEY:mã nhân viên phụ trách chuyến</b>

sonamkinhnghiem <b>INT DEFAULT(5): số năm kinh nghiệm lái tàu</b>

matau <b>CHAR(3): mã của chuyến tàu trên hệ thống bán vé</b>

<b>PHU_LAI(manhanvien, lydothay, matau)</b>

Mô tả: Lược đồ quan hệ PHU_LAI được dùng để lưu trữ thông tin về nhân viên phụ lái

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

hỗ trợ lái chính trên hệ thống bán vé

manhanvien <b>CHAR(5) PRIMARY KEY: mã nhân viên phụ trách chuyến</b>

lydothay <b>NVARCHAR(100): lý do phụ lái vào thay lái chính</b>

matau <b>CHAR(3):</b>mã của chuyến tàu trên hệ thống bán vé

<b>VE(mave, thoigiandi, vitrighe, loaive, giave, ID, maphieu, matau, matramdon,</b>

Mô tả: Lược đồ quan hệ VE được dùng để lưu trữ thông tin về vé được bán ra trên hệ thống bán vé

thoigiandi <b>DATETIME : thời gian đi của tàu</b>

vitrighe <b>VARCHAR(5): vị trí ghế của hành khách</b>

loaive <b>VARCHAR(3) CHECK (loaive IN (‘PT’, ‘VIP’)) : loại vé</b>

hành khách đăng ký

ID <b>CHAR(5) : </b>mã định danh của khách hàng maphieu <b>INT : mã phiếu của bản chi tiết đăng ký</b>

matau <b>CHAR(3): mã của chuyến tàu trên hệ thống bán vé</b>

matramdon <b>CHAR(2): mã trạm đón khách</b>

matramtra <b>CHAR(2): </b>mã trạm trả khách

<b>PHIEU_DANGKY(maphieu, thoigiandatve, soluongve, mahoadon, ID, matau)</b>

Mô tả: Lược đồ quan hệ PHIEU_DANGKY được dùng để lưu trữ thông tin tổng hợp sau khi hành khách hoàn thành xong bước đăng ký vé

maphieu <b>INT PRIMARY KEY : mã phiếu của bản chi tiết đăng ký</b>

thoigiandatve <b>DATETIME: ngày hành khách đặt vé</b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

soluongve <b>INT : số lượng vé hành khách đã đặt</b>

mahoadon <b>CHAR(5) : mã số của hóa đơn</b>

matau <b>CHAR(5): mã tàu trên vé mà hành khách khách đã chọn</b>

<b>HOA_DON(mahoadon, thoigianthanhtoan, phuongthucthanhtoan, ID)</b>

Mô tả: Lược đồ quan hệ HOA_DON được dùng để lưu trữ thông tin tổng hợp sau khi hành khách hồn thành việc thanh tốn cho phiếu đăng ký vé

mahoadon <b>CHAR(5) PRIMARY KEY : mã số của hóa đơn</b>

thoigianthanhtoan <b>DATETIME: ngày thanh tốn</b>

phuongthucthanhtoan <b>VARCHAR(5) : phương thức thanh tốn</b>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>2.5. Mơ tả dữ liệu phụ thuộc khóa chính, khóa ngoại </b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>III. RÀNG BUỘC TỒN VẸN VÀ CHUẨN HĨA3.1. Ràng buộc toàn vẹn </b>

<b>3.1.1 Ràng buộc toàn vẹn dữ liệu3.1.1.1 Ràng buộc UniqueRàng buộc 1</b>

Mỗi khi thực hiện đăng ký với hệ thống sẽ được cung cấp một tài khoản cá nhân với ID tài khoản là duy nhất.

Ngữ cảnh: TAI_KHOAN x,y TAI_KHOAN: x.ID <> y.ID

<b>Ràng buộc 2</b>

Mỗi nhân viên có mã nhân viên riêng biệt và không trùng nhau. Ngữ cảnh: NHAN_VIEN

x,y NHAN_VIEN: x.manhanvien <> y.manhanvien

NHAN_VIEN

+

<small>manhanvien</small>

<b>Ràng buộc 3</b>

Mã trạm là duy nhất. Ngữ cảnh: TRAM_TAU

x,y TRAM_TAU: x.matram <> y.matram

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Mã tàu là duy nhất đối với mỗi tàu. Ngữ cảnh: TAU

x,y TAU: x.matau <> y.matau

x VE, y TAI_KHOAN: x.ID = y.ID

x HOA_DON, y TAI_KHOAN: x.ID = y.ID

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Ràng buộc Thêm Xóa Sửa

<b>Ràng buộc 8</b>

Thuộc tính mahoadon của quan hệ PHIEU_ DANGKY được tham chiếu đến mahoadon của quan hệ HOA_DON.

Ngữ cảnh: PHIEU_DANGKY, HOA_DON

x PHIEU_DANGKY, y HOA_DON: x.mahoadon = y.mahoadon

x VE, y PHIEU_DANGKY : x.maphieu= y.maphieu

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Ràng buộc Thêm Xóa Sửa

<b>Ràng buộc 11</b>

Thuộc tính matau của quan hệ VE được tham chiếu đến matau của quan hệ TAU. Ngữ cảnh: VE, TAU

x VE, y TAU: x.matau = y.matau

x VE: x.loaive {‘PT’, ‘VIP’}

<b>Ràng buộc 13</b>

Thuộc tính giới tính của bảng NHAN_VIEN chỉ nhận giá trị ‘Nam’ hoặc ‘Nữ’. Ngữ cảnh: NHAN_VIEN

x NHAN_VIEN : x.gioitinh {‘Nam’, N‘Nữ’}

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>Ràng buộc 14</b>

Thuộc tính sodienthoai của bảng TAI_KHOAN chỉ chứa giá trị số. Ngữ cảnh: TAI_KHOAN

∀ x ∈ TAI_KHOAN: (x.sodienthoai NOT LIKE ‘%[^0-9]%’)

<b> 3.1.2. Ràng buộc tồn vẹn trên 1 quan hệ, 1 thuộc tínhRàng buộc 15</b>

Số năm kinh nghiệm tối thiểu đối với lái chính là 5 năm. Ngữ cảnh: LAI_CHINH

d LAI_CHINH: d.sonamkinhnghiem 5

<b>Ràng buộc 16</b>

Khách hàng chỉ được thực hiện đặt vé khi số lượng ghế trống vẫn còn. Ngữ cảnh: TAU

d TAU: d.soluongghetrong 0

TAU

+

<small>soluongghetrong</small>

+

<small>soluongghetrong</small>

<b>Ràng buộc 17</b>

Số lượng đặt vé của hành khách không được quá 10 vé. Ngữ cảnh: PHIEU_DANGKY

d PHIEU_DANGKY: d.soluongve <= 10

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>3.1.3 Ràng buộc toàn vẹn trên 1 quan hệ, liên thuộc tínhRàng buộc 18</b>

Với loại vé nằm, giá tiền sẽ đắt hơn 50% so với giá vé phổ thông (đồng giá 100000 VND).

Ngữ cảnh: VE

e VE: e.loaive = ‘VIP’ => e.giave = 150000

VE

+

<small>loaive, giave</small>

+

<small>loaive, giave</small>

<b>3.1.4 Ràng buộc toàn vẹn trên 1 quan hệ, liên bộRàng buộc 19</b>

Trong buồng lái được phụ trách bởi ba nhân viên. Ngữ cảnh: NHAN_VIEN

a NHAN_VIEN: card( { t NHAN_VIEN | t.manhanvien = a.manhanvien } ) 3<b>=</b>

NHAN_VIEN

+

<small>manhanvien</small>

+

<small>manhanvien</small>

<b>3.1.5 Ràng buộc toàn vẹn trên nhiều quan hệRàng buộc 20</b>

Hệ thống cho phép hành khách thanh toán trực tuyến trong vịng 24 giờ tính từ thời gian đặt vé.

Ngữ cảnh: HOA_DON, PHIEU_DANGKY

d HOA_DON, e PHIEU_DANGKY: d.mahoadon=e.mahoadon => d.thoigianthanhtoan < e.thoigiandatve + 24 (giờ) d.thoigianthanhtoan > e.thoigiandatve

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

d VE, e TAU: d.thoigiandi = e.thoigiankhoihanh d.matau = e.matau

Vé tàu chỉ được chấp nhận khi trạm đón và trạm dừng trên vé mà hành khách đã đặt đúng với lộ trình mà tàu đó đi qua.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<b>Ràng buộc 23</b>

Hành khách chỉ có thể thực hiện đặt vé thành cơng khi vị trí ghế được chọn vẫn còn trống.

Ngữ cảnh: VE, TAU

d, e VE, x TAU: x.matau = d.matau x.matau=e.matau => d.vitrighe e.vitrighe

x LAI_CHINH, y PHU_LAI: x.manhanvien y.manhanvien

LAI_CHINH

+

<small>manhanvien</small>

+

<small>manhanvien</small> PHU_LAI

+

<small>manhanvien</small>

+

<small>manhanvien</small>

<b>Ràng buộc 25</b>

Số lượng vé được ghi nhận tại phiếu đăng ký phải phù hợp với tổng số vé mà một ID hành khách đã thực hiện đăng ký tại bước chọn vé.

Ngữ cảnh: PHIEU_DANGKY, VE

c PHIEU_DANGKY, card({ d VE | d.ID = c.ID }) c.soluongve<b>= </b>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

c.soluongghetrong (mới) = c.soluongghetrong (cũ) card({ d TAU| c.matau = d.matau }) <small>± </small>

<b>Ràng buộc 27</b>

Hành khách được quyền thực hiện đặt vé trước giờ tàu chạy, tuy nhiên không được đặt vé trước quá 3 tháng tính đến thời điểm tàu khởi hành.

Ngữ cảnh: PHIEU_DANGKY, TAU c PHIEU_DANGKY, d TAU : c.matau = d.matau

=> c.thoigiandatve < d.thoigiankhoihanh c.thoigiandatve + 3 (tháng) ≤ d.thoigiankhoihanh

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<b>3.2. Chuẩn hóa</b>

<b>TAI_KHOAN(ID, hoten, tuoi, gioitinh, sodienthoai, email)</b>

F={ID→ hoten, tuoi, gioitinh, sodienthoai, email}

<b>TAU(matau, thoigiankhoihanh, soluongghetrong, matramkhoihanh, matramdung)</b>

F={ matau→thoigiankhoihanh, soluongghetrong, matramkhoihanh, matramdung}

<b>TRAM_TAU(matram, tentram)</b>

<b>NHAN_VIEN(manhanvien, hotennv, tuoi, gioitinh, matau)</b>

F={manhanvien→hotennv, tuoi, gioitinh, matau}

<b>LAI_CHINH(manhanvien, sonamkinhnghiem, matau)</b>

F={manhanvien→ sonamkinhnghiem, matau}

<b>PHU_LAI(manhanvien, lydothay, matau)</b>

F={manhanvien, matau→ lydothay}

<b>VE(mave, thoigiandi, vitrighe, loaive, giave, ID, maphieu, matau, matramdon, </b>

<b>HOA_DON(mahoadon, thoigianthanhtoan, phuongthucthanhtoan, ID)</b>

F={mahoadon→ thoigianthanhtoan, phuongthucthanhtoan, ID}

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>IV. HIỆN THỰC TRÊN MS SQL SERVER 21 </b>

Cho biết họ tên và số điện thoại của các hành khách đi chuyến tàu có mã tàu là “T02”.

<small>SELECT DISTINCT hoten sodienthoai,</small>

<small>FROM TAI_KHOAN JOIN VE ON TAI_KHOAN ID VE.=.ID</small>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

thực hiện mua vé (thực hiện sắp xếp từ bé đến lớn theo độ tuổi).

<small>SELECT TAI_KHOAN.*FROM TAI_KHOAN</small>

<small>WHERE TAI_KHOAN ID .NOT IN(SELECT ID FROM HOA_DON)ORDER BY TAI_KHOAN tuoi.</small>

<b>4.1.3. Truy vấn có điều kiện </b>

Cho biết thơng tin tài khoản của những khách hàng có thời gian đặt vé từ 18/12/2023 đến 22/12/2023.

<small>SELECT TAI_KHOAN.*</small>

<small>FROM TAI_KHOAN JOIN PHIEU_DANGKY ON TAI_KHOAN ID PHIEU_DANGKY.=.ID</small>

<small>WHERE PHIEU_DANGKY.thoigiandatve</small>

</div>

×