báo cáo bài tập lớn môn hệ quản trị cơ sở dữ liệu đề tài quản lý khách sạn

63 1 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo bài tập lớn môn hệ quản trị cơ sở dữ liệu đề tài quản lý khách sạn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đặc biệt, trong ngữcảnh này, quản lý khách sạn đòi hỏi sự linh hoạt và chính xác trong việc xử lý và lưutrữ dữ liệu liên quan đến khách hàng, đặt phòng, dịch vụ, và nhiều khía cạnh khác

Trang 1

HỌC VIỆN NGÂN HÀNG

KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

BÁO CÁO BÀI TẬP LỚNMÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Trang 2

HỌC VIỆN NGÂN HÀNG

KHOA HỆ THỐNG THÔNG TIN QUẢN LÝ

BÁO CÁO BÀI TẬP LỚNMÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Trang 3

HOẠT ĐỘNG NHÓM1 Theo dõi tiến độ trên Github

2 Hoạt động nhóm

Nhóm hoạt động thường xuyên qua kênh discord để trao đổi và phát triển bàitập:

Trang 4

LỜI CẢM ƠN

Lời đầu tiên, nhóm 7 xin gửi lời cảm ơn đến Học viện Ngân hàng và khoa Hệthống thông tin quản lý đã tạo điều kiện cho chúng em và các bạn sinh viên có cơ hộiđược học tập trong một môi trường năng động, sáng tạo, tạo điều kiện nỗ lực và pháthuy hết tiềm năng của mình Nhóm xin gửi lời cảm ơn đặc biệt đến cô Nguyễn ThịThu Trang đã dành sự tâm huyết và nhiệt tình giảng dạy, giúp chúng em học được mộtmôn học có ứng dụng cao trong ngành học và nghiệp vụ sau này, đáp ứng nhu cầuthực tiễn của các nhà tuyển dụng về kiến thức, kỹ năng cần có.

Tiếp nối các học phần trước đó, học phần này giúp sinh viên tiếp tục tìm hiểu,học tập và thực hành ngôn ngữ PL/SQL cung cấp nhiều tính năng mạnh mẽ để phântích các khối dữ liệu lớn để chắt lọc ra được những mẫu hình và xu hướng có ý nghĩa.Song vì chưa có nhiều kinh nghiệm nên bài báo cáo sẽ không tránh khỏi những thiếusót, kính mong cô nhận xét, góp ý để bài báo cáo của chúng em được hoàn thiện hơn,rút kinh nghiệm cho các dự án tiếp theo.

Chúng em xin chân thành cảm ơn!

Nhóm sinh viên thực hiện

Nhóm 7

ii

Trang 5

LỜI CAM ĐOAN

Nhóm 7 xin cam đoan báo cáo này là sản phẩm nghiên cứu và thực hành củanhóm Bài báo cáo đảm bảo tính liêm chính trong học tập, không đạo văn, gian lận, bịađặt Các thông tin tham khảo được trích dẫn nguồn đầy đủ và minh bạch.

Nhóm 7 xin chịu toàn bộ trách nhiệm nếu bài báo cáo vi phạm các điều trên.

Hà Nội, ngày 26 tháng 12 năm 2023Đại diện nhóm 7

Đinh Thành Nam

Trang 6

2 Hệ quản trị cơ sở dữ liệu Oracle 2

Chương II: Phân tích bài toán 4

1 Mô tả bài toán 4

2 Mô hình thực thể liên kết ERD 7

3 Mô hình dữ liệu quan hệ 8

Chương IV: Thiết kế cơ sở dữ liệu mức vật lý 9

Chương V: Tạo cơ sở dữ liệu 14

1 Tạo sequence 14

2 Tạo bảng 15

3 Các thủ tục theo thứ tự thời gian 16

3.1 Thủ tục thêm nhân viên 16

3.2 Thủ tục thêm khách hàng 17

3.3 Thủ tục thêm đặt phòng 18iv

Trang 7

3.4 Thủ tục thêm thông tin tại quầy 20

3.5 Thêm thông tin khách đặt trước 22

4.1 Tạo view về thông tin phòng: 31

4.2 View thông tin khách hàng: 31

4.3 View khách đang ở và khách chưa tới (đã đặt phòng trước): 33

5 Index 34

5.1 Chỉ Mục id_cccd trên Bảng khachhang: 34

5.2 Chỉ Mục id_checkindate trên Bảng datphong: 34

5.3 Chỉ Mục id_checkoutdate trên Bảng datphong: 34

6 Xác định nhóm người dùng, phân quyền truy cập 34

6.1 Phân quyền cho nhân viên 34

6.2 Phân quyền cho quản lý 35

CHƯƠNG VI: THỰC HIỆN YÊU CẦU NGHIỆP VỤ BẰNG SQL HOẶC PL/SQL 381 PL/SQL 38

2 Truy vấn bằng SQL 38

2.1 Truy vấn những khách hàng quay lại từ 2 lần trở lên 38

2.2 Truy vấn các dịch vụ được sử dụng nhiều nhất trong tháng 39

2.3 Truy vấn phòng đc đặt nhiều nhất trong tháng 40

2.4 Truy vấn những phòng không được giảm giá trong thời gian hiện tại 40

2.5 Truy vấn tổng doanh thu trong tháng hiện tại 41

2.6 Truy vấn tổng doanh thu của từng loại dịch vụ trong tháng 41

Trang 8

2.8 Truy vấn những khách hàng mới trong tháng 42

2.9 Truy vấn đưa ra tổng số lượt đặt và sử dụng phòng trong tháng 43

CHƯƠNG VII: SAO LƯU VÀ PHỤC HỒI DỮ LIỆU 44

1 Phương án sao lưu 44

2 Khôi phục dữ liệu 50

KẾT LUẬN 52

TÀI LIỆU THAM KHẢO 53

DANH MỤC HÌNH ẢNHHình 1 Mô hình thực thể liên kết (ERD) 7

Hình 2 Mô hình dữ liệu quan hệ 8

Hình 3 Tạo các sequence 15

Hình 4 Tạo bảng cho CSDL 16

Hình 5 Thủ tục thêm nhân viên 17

Hình 6 Minh họa thêm nhân viên 17

Hình 7 Kết quả thêm nhân viên 17

Hình 14 Thủ tục thêm thông tin tại quầy 21

Hình 15 Chạy thử thủ tục thêm thông tin tại quầy 21

Hình 16 Kết quả của thủ tục thêm thông tin tại quầy 21

Hình 17 DP00005 của khách hàng KH00005 Hang Nguyen 21

Hình 18 Chi tiết phòng của khách hàng KH00005 Hang Nguyen 21

Hình 19 Thủ tục thêm thông tin khách đặt trước 22

Hình 20 Chạy thử thủ tục thêm thông tin khách đặt trước 23

Hình 21 Kết quả của thủ tục thêm thông tin khách đặt trước 23

Hình 22 Thủ tục check-in 24

Hình 23 Thủ tục thêm dịch vụ 25vi

Trang 9

Hình 24 Thủ tục thêm nhiều dịch vụ 25

Hình 25 Chạy thử thủ tục thêm nhiều dịch vụ 26

Hình 26 Thủ tục kiểm tra phòng trống theo thời gian cụ thể 27

Hình 27 Thủ tục cập nhật TongTien cho bảng đặt phòng 28

Hình 28 Tạo bảng hoá đơn 29

Hình 29 Thủ tục checkout cho khách 30

Hình 30 View thông tin phòng 31

Hình 31 View thông tin khách hàng 32

Hình 32 View khách đang ở 33

Hình 33 View khách chưa đến (đã đặt phòng) 33

Hình 34 View phòng trống 33

Hình 35 Người dùng nhân viên và phân quyền 35

Hình 36 Người dùng quản lí và phân quyền 36

Hình 37 Quy trình nghiệp vụ của hệ thống 38

Hình 38 Truy vấn khách hàng quay lại 2 lần trở lên 39

Hình 39 Kết quả truy vấn những khách hàng quay lại từ 2 lần trở lên 39

Hình 40 Truy vấn các dịch vụ được sử dụng nhiều nhất trong tháng 39

Hình 41 Kết quả truy vấn các dịch vụ được sử dụng nhiều nhất trong tháng 40

Hình 42 Truy vấn phòng được đặt nhiều nhất trong tháng 40

Hình 43 Kết quả truy vấn phòng đc đặt nhiều nhất trong tháng 40

Hình 44 Kết quả truy vấn những phòng không được giảm giá trong thời gian hiện tại 41

Hình 45 Truy vấn tổng doanh thu trong tháng hiện tại 41

Hình 46 Kết quả truy vấn tổng doanh thu trong tháng hiện tại 41

Hình 47 Truy vấn tổng doanh thu của từng loại dịch vụ trong tháng 41

Hình 48 Kết quả truy vấn tổng doanh thu của từng loại dịch vụ trong tháng 42

Hình 49 Truy vấn khách hàng sử dụng nhiều dịch vụ nhất 42

Hình 50 Kết quả truy vấn khách hàng sử dụng nhiều dịch vụ nhất 42

Hình 51 Truy vấn khách hàng mới trong tháng 43

Hình 52 Truy đưa ra tổng số lượng đặt và sử dụng phòng trong tháng 43

Hình 53 Truy đưa ra tổng số lượng đặt và sử dụng phòng trong tháng 43

Hình 54 Kết nối RMAN 44

Trang 10

Hình 56 Xem các bản sao lưu có trong hệ thống 45

Hình 57 Tạo file batch và file scrip 46

Hình 58 Cấu hình cho file backup.rman 46

Hình 59 Cấu hình cho file backup.bat 47

Hình 60 Task Scheduler và Create Task 48

Hình 61 Cấu hình cho trigger 49

Hình 62 Chỉnh sửa cho Action 49

Hình 63 Chạy thử task đã được cấu hình 49

Hình 64 File Backup.log 50

Hình 65 Kiểm tra tính hợp lệ của bản sao lưu 50

Hình 66 Kêt quả khôi phục CSDL 51

viii

Trang 11

LỜI MỞ ĐẦU

Trong thời đại ngày nay, khi ngành du lịch và khách sạn đang phát triển mạnhmẽ, việc quản lý thông tin và dữ liệu liên quan đến hoạt động kinh doanh trở nên ngàycàng quan trọng Hệ quản trị cơ sở dữ liệu đóng vai trò quyết định trong việc nâng caohiệu suất và chất lượng quản lý của các doanh nghiệp khách sạn Đặc biệt, trong ngữcảnh này, quản lý khách sạn đòi hỏi sự linh hoạt và chính xác trong việc xử lý và lưutrữ dữ liệu liên quan đến khách hàng, đặt phòng, dịch vụ, và nhiều khía cạnh khác củahoạt động kinh doanh.

Bài tiểu luận này nhằm nghiên cứu và phân tích cách mà hệ quản trị cơ sở dữliệu hiện đại có thể ứng dụng để cải thiện quá trình quản lý khách sạn Qua đó, chúngta sẽ khám phá những thách thức cụ thể mà ngành công nghiệp này đối mặt và đề xuấtnhững giải pháp sáng tạo để tối ưu hóa sự linh hoạt và hiệu suất trong việc xử lý dữliệu.

Không chỉ là một công cụ hỗ trợ quản lý, hệ quản trị cơ sở dữ liệu còn là chìakhóa mở cánh cửa cho sự đổi mới và cạnh tranh trong thị trường khách sạn ngày nay.Chúng ta sẽ cùng nhau khám phá sâu hơn về tầm quan trọng của hệ quản trị cơ sở dữliệu trong quản lý khách sạn và tìm hiểu cách nó đóng vai trò quyết định trong việcđáp ứng nhanh chóng và linh hoạt với nhu cầu đa dạng của khách hàng.

Bằng cách tập trung vào đề tài quản lý khách sạn, bài tiểu luận này hy vọng sẽlà một nguồn tài nguyên hữu ích cho những người quan tâm đến sự tiện lợi và hiệusuất trong quản lý ngành du lịch và khách sạn, đồng thời khám phá tiềm năng đổi mớicủa hệ quản trị cơ sở dữ liệu trong lĩnh vực này.

Trang 12

Chương I: Tổng quan về hệ quản trị cơ sở dữ liệu1 Khái niệm

Hệ quản trị cơ sở dữ liệu là một hệ thống phần mềm có chức năng quản lývà tổ chức dữ liệu một cách hiệu quả trong môi trường kinh doanh hoặc tổ chức.Hệ quản trị cơ sở dữ liệu giúp người quản trị và người sử dụng tương tác với dữ liệumột cách dễ dàng, đồng thời bảo vệ tính nhất quán và an toàn của thông tin

Chức Năng Chính của Hệ quản trị cơ sở dữ liệu:

Lưu Trữ Dữ Liệu: Hệ quản trị cơ sở dữ liệu lưu trữ dữ liệu một cách có tổchức, từ đơn giản đến phức tạp, giúp tiếp cận dữ liệu nhanh chóng và dễdàng.

Truy Xuất Dữ Liệu: Hệ thống cung cấp cơ chế để truy xuất dữ liệu mộtcách hiệu quả, cho phép người dùng thực hiện các truy vấn phức tạp và tổ chứcthông tin theo nhu cầu.

Bảo Mật Dữ Liệu: Hệ quản trị cơ sở dữ liệu đảm bảo tính bảo mật của dữliệu thông qua các phương tiện như quản lý quyền truy cập và mã hóa thông tin,ngăn chặn truy cập trái phép.

Quản Lý Giao Thức Truy Cập: Điều này bao gồm việc kiểm soát quyềntruy cập đối với người dùng và ứng dụng, đảm bảo rằng mỗi người dùng chỉ cóthể truy cập dữ liệu mà họ được phép.

Bảo Dưỡng và Quản Lý Hiệu Suất: Hệ quản trị cơ sở dữ liệu cung cấp cáccông cụ để theo dõi và tối ưu hóa hiệu suất hệ thống, bao gồm cả sao lưu, khôiphục dữ liệu và quản lý tài nguyên hệ thống.

Loại hệ quản trị cơ sở dữ liệu:

Quan Hệ (Relational) Hệ quản trị cơ sở dữ liệu: Sử dụng mô hình dữ liệuquan hệ, thường được biểu diễn bằng các bảng có các hàng và cột MySQL,PostgreSQL, và Oracle là những ví dụ.

HQCSDL Đối Tượng (Object-Oriented): Dựa trên mô hình lập trìnhhướng đối tượng, thích hợp cho các hệ thống phức tạp ObjectDB là một ví dụ.HQCSDL Không Quan Hệ (NoSQL): Phù hợp cho các ứng dụng đòi hỏitính mở rộng và linh hoạt cao, chẳng hạn như MongoDB, Cassandra.2 Hệ quản trị cơ sở dữ liệu Oracle

Oracle Database, thường được biết đến như Oracle DB hoặc đơn giản là Oracle,là một trong những hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ nhất trên thế giới.Được phát triển bởi công ty Oracle Corporation, hệ quản trị cơ sở dữ liệu này đã2

Trang 13

chứng tỏ độ tin cậy và khả năng mở rộng trong các môi trường doanh nghiệp và ứngdụng quy mô lớn.

Oracle Database được xây dựng trên một kiến trúc cấp cao và hỗ trợ nhiềutính năng quan trọng, bao gồm:

ACID Properties: Đảm bảo tính toàn vẹn và nhất quán của dữ liệu thôngqua các tính năng Atomicity, Consistency, Isolation, và Durability (ACID).

Tính Năng Mở Rộng: Hỗ trợ môi trường doanh nghiệp với khả năng mởrộng cao, cho phép quản lý hàng nghìn hoặc thậm chí hàng triệu người dùng vàlượng dữ liệu lớn.

Tối Ưu Hóa Hiệu Suất: Cung cấp trình tối ưu hóa câu truy vấn, chỉ mụcthông minh và khả năng xử lý đồng thời để đảm bảo hiệu suất cao.

Quản Lý Bảo Mật: Bảo vệ dữ liệu thông qua các tính năng bảo mật mạnhmẽ như kiểm soát truy cập và quản lý quyền.

Sự Linh Hoạt và Mở Đồng Thời: Hỗ trợ nhiều ngôn ngữ lập trình và giaothức kết nối, tạo điều kiện cho sự linh hoạt trong phát triển ứng dụng.

Trang 14

Chương II: Phân tích bài toán1 Mô tả bài toán

Khách sạn Midnight Heaven là một khách sạn tiêu chuẩn 3 sao, đặt tại thànhphố Hà Nội Quy mô khách sạn bao gồm 30 phòng:

Single room: phòng đơnCouple room: phòng đôiFamily room: phòng gia đìnhEvent room: phòng tổ chức sự kiệnRooftop venue: tầng thượng sự kiện

Tất cả các phòng đều được trang bị ,tùy thuộc vào loại phòng, các thiết bị như :máy điều hòa , TV, truyền kình K+, mini-bar , bàn làm việc , điện thoại , Internet …Ngoài ra khách sạn cũng phục vụ các dịch vụ như : đưa đón tại sân bay , cho thuê xe,karaoke , giặt ủi, thư tín , trao đổi ngoại tệ…

2 Quy trình quản lý

Khi khách hàng có nhu cầu ở khách sạn, có hai phương thức để thực hiện thủtục đăng ký phòng Khách hàng có thể liên hệ trực tiếp với khách sạn, đến trực tiếphoặc gọi điện thoại để đặt phòng trước Trong trường hợp phòng còn trống, kháchhàng sẽ thực hiện thủ tục thuê và nhận phòng Quá trình đăng ký yêu cầu khách hàngkhai báo đầy đủ thông tin theo yêu cầu của Bộ phận lễ tân Đối với đặt cọc, kháchhàng cần đặt một số tiền nhất định phụ thuộc vào loại phòng đã đăng ký.

Trước ngày nhận phòng, đặc biệt đối với khách hàng đăng ký theo đoàn, họphải gửi bảng bố trí phòng ở cho khách sạn ít nhất 1 tuần trước để khách sạn có thểphân bổ phòng một cách hợp lý Khi khách hàng đến nhận phòng, ngoài số tiền đặtcọc, họ cũng phải gửi căn cước công dân cho Bộ phận lễ tân để kiểm tra thông tin đăngký phòng Bộ phận lễ tân sẽ trả lại căn cước công dân sau khi hoàn tất thủ tục trảphòng.

Trong thời gian ở khách sạn, khách hàng có thể sử dụng các dịch vụ và có thểyêu cầu phục vụ, mà Bộ phận lễ tân sẽ đáp ứng Các chi phí dịch vụ chưa thanh toán sẽđược ghi vào hoá đơn nợ và chuyển đến Bộ phận lễ tân để tính vào tổng hoá đơn Việchuỷ đăng ký phòng phải tuân theo quy định và có thể có bồi thường, vì vậy việc đặtcọc là quan trọng để tránh rủi ro Tuy nhiên, nếu huỷ đăng ký trước 7 ngày nhậnphòng, không có chi phí bồi thường.

4

Trang 15

Khi hết thời hạn thuê phòng đã đăng ký, khách hàng phải thực hiện thủ tục trảphòng Bộ phận lễ tân sẽ kiểm tra tình trạng phòng và tổng hợp hoá đơn sử dụng dịchvụ chưa thanh toán Hoá đơn tổng sẽ được in ra để khách thanh toán, và hình thứcthanh toán chủ yếu là bằng tiền mặt (tiền VNĐ).

3 Yêu cầu hệ thống

Một trong những khía cạnh quan trọng của việc quản lý khách sạn hiệu quả làsự tự động hóa Để nâng cao chất lượng dịch vụ, tối ưu hóa quy trình làm việc, vàcung cấp trải nghiệm tốt nhất cho khách hàng, việc tích hợp các giải pháp tự động hóalà không thể thiếu Sau khi tìm hiểu, khảo sát hiện trạng em nắm được những thông tinsau:

Quản lý khách hàng:

Mỗi khách hàng của khách sạn khi đến được sắp xếp theo mã số và được kháchsạn quản lý những thông tin sau: Họ tên, địa chỉ, số điện thoại, email, credit card, sốcăn cước công dân, địa chỉ

Quản lý phòng:

Các phòng của khách sạn được quản lý dựa vào mã phòng, tên phòng, tình trạngphòng, loại phòng được chia ra thành các loại tương ứng với các giá phòng như sau200.000đ, 500.000đ, 1.000.000đ, 3.000.000đ, 10.000.000đ.

Quản lý đăng kí thuê phòng:

Tất cả các thông tin đăng ký thuê phòng đều được quản lý dựa trên mã số đặtphòng, mã khách đặt phòng, mã phòng được đặt, ngày đặt, ngày check-in, ngày check-out.

Quản lý hóa đơn:

Sau khi khách trả phòng, khách sạn sẽ nhận được hóa đơn lưu giữ một số thôngtin sau: mã hóa đơn, mã số đặt phòng, tổng số tiền thuê phòng và ngày thanh toán hóađơn của khách hàng.

Quản lý các dịch vụ:

Ngoài việc thuê phòng, khách sạn còn có các dịch vụ bên ngoài khác (nếukhách yêu cầu) được quản lý theo mã số, tên dịch vụ, giá dịch vụ, các loại dịch vụchính.

Trang 16

Chương III: Thiết kế cơ sở dữ liệu mức logic1 Các thực thể và mối quan hệ

1.1 Thực thể:Khách hàng

Khoá: mã khách hàng

Thuộc tính: họ, tên, số điện thoại, số thẻ ngân hàng, số căn cước công dân, địachỉ

Nhân viên

Khoá: mã nhân viên

Thuộc tính: tên, họ, chức vụ, số điên thoại, địa chỉDịch vụ

Khoá: Mã dịch vụ

Thuộc tính: tên dịch vụ, giá dịch vụPhòng

Khoá: Mã phòngThuộc tính: số phòng Loại phòng

Khoá: Mã loại phòngThuộc tính: loại phòng, giáTỉ lệ triết khấu

Khoá: Mã triết khấu

Thuộc tính: tỉ lệ triết khấu, ngày bắt đầu, ngày kết thúcĐặt phòng

6

Trang 17

Đặt phòng <có> phòng (1 n) Đặt phòng <có> dịch vụ (1 n) Khách hàng <thực hiện> đặt phòng (1 n)Nhân viên <lập> đặt phòng (1 n)2 Mô hình thực thể liên kết ERD

Hình 1 Mô hình thực thể liên kết (ERD)

Trang 18

3 Mô hình dữ liệu quan hệ

Nhân viên (mã nhân viên, tên, họ, chức vụ, địa chỉ, số điện thoại)

Khách hàng (mã khách hàng, số điện thoại, địa chỉ, tên, họ, căn cước công dân,số thẻ ngân hàng)

Phòng (mã phòng, mã loại phòng, số phòng)Loại phòng (mã loại phòng, tên loại phòng, giá)

Chương trình giảm giá (mã ctgg , tỉ lệ, ngày bắt đầu, ngày kết thúc, mã loạiphòng)

Dịch vụ (mã dịch vụ, tên dịch vụ, giá)

Đặt phòng (mã đặt phòng, mã nhân viên, mã khách hàng, ngày đặt phòng, sốngày thuê, check_in_DATE, check_out_DATE, phương thức thanh toán, tiềncọc, tổng số tiền)

Chi tiết phòng (mã chi tiết phòng, mã phòng, mã đặt phòng)

Chi tiết dịch vụ (mã chi tiết dịch vụ, mã dịch vụ, số lượng, mã đặt phòng)

Hình 2 Mô hình dữ liệu quan hệ

8

Trang 19

Chương IV: Thiết kế cơ sở dữ liệu mức vật lýNhân viên

Tên trường Kiểu dữ liệu Constraint Indexmanhanvien VARCHAR2(10) Khóa chính x

chucvu VARCHAR2(20)diachi VARCHAR2(50)

sodienthoai VARCHAR2(15) Check, unique

Cột sodienthoai được định nghĩa trong cơ sở dữ liệu của nhân viên với hai ràngbuộc:

check (REGEXP_LIKE(sodienthoai, '^[0-9]+$')): Ràng buộc kiểm tra kiểu dữliệu của cột Sử dụng biểu thức chính quy để đảm bảo rằng giá trị trong cột chỉchứa các ký tự số từ 0 đến 9 Nếu giá trị không tuân theo mẫu này, nó sẽ khôngđược chấp nhận.

CONSTRAINT unique_sodienthoai UNIQUE (sodienthoai): Định nghĩa mộtràng buộc duy nhất trên cột sodienthoai Điều này đảm bảo rằng mỗi giá trịtrong cột là duy nhất trong toàn bộ bảng Không có hai bản ghi nào có thể cócùng một giá trị sodienthoai.

Trang 20

Cột cccd sodienthoai sothenganhang, , được định nghĩa trong cơ sở dữ liệu vớihai ràng buộc check và unique tương tự như bảng nhân viên, chỉ chấp nhận giá trị làcác chuỗi ký tự số, và mỗi giá trị trong cột đó đều là duy nhất trong bảng Điều nàythường được sử dụng để đảm bảo tính chính xác và không trùng lặp của số điện thoạitrong cơ sở dữ liệu.

Loại phòng

Tên trường Kiểu dữ liệu Constraint Indexmaloaiphong VARCHAR2(10) Khóa chính xloaiphong VARCHAR2(20)

10

Trang 21

Chi tiết giảm giá

Tên trường Kiểu dữ liệu Constraint Indexmactgg VARCHAR2(20) Khóa chính xtiletrietkhau NUMBER

maloaiphong VARCHAR2(10) Khóa ngoại tham chiếu tới bảng loaiphong

check(ngaybatdau < ngayketthuc): Ràng buộc này được thiết lập để đảm bảorằng giá trị trong cột ngaybatdau luôn nhỏ hơn giá trị trong cột ngayketthuc.

Tên trường Kiểu dữ liệu Constraint Indexmaphong VARCHAR2(10) Khóa chính xmaloaiphong VARCHAR2(10) Khóa ngoại

tham chiếu tới bảng loaiphongsophong VARCHAR2(10)

Trang 22

Đặt phòng

Tên trường Kiểu dữ liệu Constraint Indexmadatphong VARCHAR2(10) Khóa chính xmanhanvien VARCHAR2(10) Khóa ngoại

tham chiếu tới bảng nhanvienmakhachhang VARCHAR2(10) Khóa ngoại

tham chiếu tới bảng khachhangngaydatphong DATE

Trang 23

phuongthucthanhtoan chỉ có thể là một trong các giá trị được liệt kê: 'card', 'cash','transfer', 'CASH', 'CARD', 'TRANSFER'

Khóa ngoại tham chiếu tớibảng phongmadatphong VARCHAR2(10

Khóa ngoại tham chiếu tớibảng datphong

Chi tiết dịch vụ

Tên trường Kiểu dữ liệu Constraint Indexmachitietdichvu VARCHAR2(20) Khóa chính xmadichvu VARCHAR2(10) Khóa ngoại

tham chiếu tới bảng dichvumadatphong VARCHAR2(10) Khóa ngoại

tham chiếu tới bảng datphong

Trang 24

Chương V: Tạo cơ sở dữ liệu1 Tạo sequence

Sequence là một đối tượng được sử dụng để tạo ra các số nguyên duy nhất theomột trình tự tăng dần hoặc giảm dần Sequence thường được sử dụng để tạo các giá trịkhóa chính duy nhất cho các bảng trong cơ sở dữ liệu Chúng em tạo các sequence đểsinh mã cho các đối tượng khác nhau trong cơ sở dữ liệu của mình:

sinh mã khách hàng

CREATE SEQUENCE seq_makhachhangSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã nhân viên

CREATE SEQUENCE seq_manhanvienSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã phòng

CREATE SEQUENCE seq_maphongSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã dịch vụ

CREATE SEQUENCE seq_madatphongSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã chi tiê0t phòng

CREATE SEQUENCE seq_machitietphongSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã chi tiê0t dịch vụ

CREATE SEQUENCE seq_machitietdichvuSTARTWITH 1

INCREMENT BY1NOCACHE

;NOCYCLE sinh mã hóa đơn

CREATE SEQUENCE seq_mahoadonSTARTWITH 1

INCREMENT BY1

15

Trang 25

Hình 3 Tạo các sequence2 Tạo bảng

CREATE table nhanvien (

manhanvien VARCHAR2(10) primary key, ten VARCHAR2( ),10

ho varchar2( ),20 chucvu VARCHAR2( ),20 DIACHI VARCHAR2( ),50

SODIENTHOAI VARCHAR2(15) check (REGEXP_LIKE(SODIENTHOAI, '^[0-9]+$')),

CONSTRAINT unique_sodienthoai UNIQUE (SODIENTHOAI));

CREATE TABLE khachhang (

makhachhang VARCHAR2(10) PRIMARY KEY, ten VARCHAR2( ),10

ho VARCHAR2( ),20 DIACHI VARCHAR2( ),50

cccd VARCHAR2(12) check (REGEXP_LIKE(cccd, '^[0-9]+$') andLENGTH(cccd) = 12),

SODIENTHOAI VARCHAR2(15) check (REGEXP_LIKE(SODIENTHOAI, '^[0-9]+$')),

sothenganhang VARCHAR2(20) check (REGEXP_LIKE(SOTHENGANHANG, 9]+$')),

CONSTRAINT unique_card UNIQUE (SOTHENGANHANG), CONSTRAINT unique_cccd UNIQUE (CCCD),

CONSTRAINT unique_sdtkhach UNIQUE (SODIENTHOAI));

CREATE TABLE loaiphong (

maloaiphong VARCHAR2(10) primary KEY, loaiphong varchar2( ),20

gia NUMBER);

CREATE TABLE ctgg (

mactgg varchar2(20) PRIMARY KEY,

tiletrietkhau NUMBER check (tiletrietkhau >= 0and tiletrietkhau <=100),

ngaybatdau date, ngayketthuc date, maloaiphong varchar2( ),10

FOREIGN KEY (maloaiphong) REFERENCES loaiphong(maloaiphong), CHECK (ngaybatdau < ngayketthuc)

CREATE TABLE phong (

maphong varchar2(10) primary key, maloaiphong VARCHAR2( ),10

Trang 26

create table dichvu (

madichvu varchar2(10) primary key, tendichvu VARCHAR2( ),20 gia NUMBER

CREATE TABLE datphong (

madatphong varchar2(10) PRIMARY KEY, manhanvien VARCHAR2( ),10

makhachhang varchar2( ),10 ngaydatphong DATE, songayo NUMBER, checkindate DATE, checkoutdate DATE,

phuongthucthanhtoan VARCHAR2(20) CHECK (phuongthucthanhtoan IN('card', 'cash', 'transfer' 'CASH', 'CARD', 'TRANSFER',)),

coc NUMBER, tongtien FLOAT,

FOREIGN KEY (manhanvien) REFERENCES nhanvien(manhanvien), FOREIGN KEY (makhachhang) REFERENCES khachhang(makhachhang));

create TABLE chitietphong (

machitietphong VARCHAR2(20) primary KEY, maphong VARCHAR2( ),10

madatphong VARCHAR2( ),10

FOREIGN KEY (maphong) references phong(maphong),

FOREIGN KEY (madatphong) REFERENCEs datphong(madatphong));

CREATE TABLE chitietdichvu (

machitietdichvu VARCHAR2(20) PRIMARY key, madichvu varchar2( ),10

madatphong VARCHAR2( ),10 soluong NUMBER,

FOREIGN KEY (madichvu) REFERENCEs dichvu(madichvu), FOREIGN KEY (madatphong) REFERENCES datphong(madatphong));

Hình 4 Tạo bảng cho CSDL3 Các thủ tục theo thứ tự thời gian

3.1 Thủ tục thêm nhân viên

CREATE OR REPLACEPROCEDURE ThemNhanVien( p_ten VARCHAR2,

p_hoVARCHAR2, p_chucvuvarchar2, p_diachiVARCHAR2, p_sodienthoai VARCHAR2

) ISBEGIN

17

Trang 27

INSERTINTONHANVIEN ( MANHANVIEN, TEN, HO, chucvu, DIACHI, SODIENTHOAI ) VALUES (

'NV' ||LPAD(SEQ_MANHANVIEN.NEXTVAL, , 4'0'), p_ten,

p_ho, p_chucvu, p_diachi, p_sodienthoai );

COMMIT;

DBMS_OUTPUT PUT_LINE.('BaAn ghi nhân viên đã được thêm thành công.');

END ThemNhanVien;/

Hình 5 Thủ tục thêm nhân viênEXECUTE ThemNhanVien('Ngan' 'Ha', , 'Le tan' 'Ha Noi', , '0987124141');

Hình 6 Minh họa thêm nhân viên

Hình 7 Kết quả thêm nhân viên3.2 Thủ tục thêm khách hàng

Hàm được thiết kế để thêm thông tin khách hàng và thường được sử dụng nhưmột phần của quá trình đặt phòng hay giao dịch khác nhau Bởi vì nó chỉ ghi lại thôngtin về khách hàng và không đứng một mình làm một thủ tục đầy đủ, nó được tích hợpvào hai thủ tục khác là "ThemThongTinKhachDatTruoc" và"ThemThongTinTaiQuay" Điều này có nghĩa là trong các tình huống khác nhau, hàmnày sẽ được sử dụng như một phần của quy trình tổng thể để thêm thông tin kháchhàng vào hệ thống, đảm bảo tính hợp nhất và hiệu quả của dữ liệu đặt phòng hay giaodịch Sau đây là ví dụ cho trường hợp đặc biệt, khi thêm mà không kèm phòng đặt:CREATE OR REPLACEPROCEDURE ThemKhachHang(

Trang 28

p_sodienthoai VARCHAR2, p_cccd VARCHAR2, p_diachiVARCHAR2, p_sothenganhangVARCHAR2

) ISBEGIN

INSERTINTOKHACHHANG ( MAKHACHHANG, TEN,

HO,

SODIENTHOAI, CCCD, DIACHI, SOTHENGANHANG ) VALUES (

'KH' ||LPAD(seq_makhachhang.NEXTVAL, , 5'0'), p_ten,

p_ho, p_sodienthoai, p_cccd, p_diachi, p_sothenganhang );

COMMIT;

DBMS_OUTPUT PUT_LINE.('BaAn ghi khách hàng đã được thêm thành công.');

END ThemKhachHang;/

Hình 8 Thủ tục thêm khách hàngChạy thử:

EXECUTE ThemKhachHang('Trang', 'Nguyen Thi', '0219546133', '038045613144', 'Ha Noi', '');

Hình 9 Chạy thử thêm khách hàngXem kết quả bẳng cách select * from khachhang;

Hình 10 Kết quả của thủ tục thêm khách hàng3.3 Thủ tục thêm đặt phòng

Thủ tục này có 4 tham số đầu vào là mã nhân viên (p_manhanvien), mã kháchhàng (p_makhachhang), số ngày (p_SONGAYO), và ngày check-in(p_CHECKINDATE) Các tham số khác bao gồm NGAYDATPHONG sẽ tự động

19

Trang 29

được thiết lập là sysdate Trong trường hợp khách đặt trước, NGAYDATPHONG sẽ làngày đó, trong khi đối với đặt tại quầy, NGAYDATPHONG và CHECKINDATE đềuđược đặt là sysdate.

CREATE OR REPLACEPROCEDURE ThemDatPhong( p_manhanvienVARCHAR2,

p_makhachhang VARCHAR2, p_SONGAYO NUMBER,

) ISBEGIN

INSERTINTODATPHONG ( MADATPHONG, MANHANVIEN, MAKHACHHANG, NGAYDATPHONG, SONGAYO, CHECKINDATE, CHECKOUTDATE, PHUONGTHUCTHANHTOAN, coc,

TONGTIEN ) VALUES (

'DP'||LPAD(seq_madatphong.NEXTVAL, , 5'0'), p_manhanvien,

p_makhachhang, sysdate, p_songayo, p_CHECKINDATE, p_CHECKINDATE p_songayo + , ,''

,0 0 ); COMMIT;

DBMS_OUTPUT PUT_LINE.('BaAn ghi đã được thêm thành công.');END ThemDatPhong;

Hình 11 Thủ tục thêm đặt phòngChạy thử:

EXECUTE ThemDatPhong('NV0004' 'KH00001', , , 1'26-DEC-2023');Hình 12 Chạy thử thủ tục thêm đặt phòng

Mã khách hàng là một thông tin quan trọng, vì thế khách hàng phải được biết

Trang 30

sử dụng tham số p_makhachhang trong cả hai trường hợp: thêm tại quầy và thêm đặttrước Điều này giúp tránh xảy ra sai sót và người dùng không cần phải nhập lại mãkhách hàng khi sử dụng các chức năng này.

Kết quả:

Hình 13 Kết quả thêm đặt phòng

Như vậy, đã sinh ra mã đặt phòng mới, DP0004 Đối với bản ghi đặt phòng,không chứa thông tin về phòng, mà thông tin về mã đặt phòng, và mã phòng lại đượctham chiếu đến bảng chi tiết đặt phòng.

3.4 Thủ tục thêm thông tin tại quầy

Tại đây, thủ tục thêm thông tin tại quầy sẽ thực hiện việc thêm thông tin vàobảng chi tiết đặt phòng, liên quan đến phòng mà khách hàng mong muốn ở Để thựchiện điều này, chúng ta sẽ sử dụng hai thủ tục: thêm thông tin của khách hàng (mỗi lầnmột khách hàng đến là một khách hàng mới) và thêm thông tin đặt phòng để bổ sungthông tin về ngày đặt, ngày check-in và check-out Sau đó, chúng ta sẽ thực hiện thaotác insert vào bảng chi tiết đặt phòng.

CREATE or REPLACEPROCEDURE ThemThongTinTaiQuay( p_manhanvienVARCHAR2,

p_ten VARCHAR2, p_hoVARCHAR2, p_sodienthoai VARCHAR2, p_cccd varchar2, p_diachivarchar2, p_maphong VARCHAR2, p_songayo number

)

v_makhachhang VARCHAR2( );10 v_madatphongVARCHAR2(10);BEGIN

THEMKHACHHANG(P_TEN P_HO P_SODIENTHOAI P_CCCD P_DIACHI, , , , , ''); SELECT MAKHACHHANGINTO v_makhachhang

Trang 31

INSERTINTOchitietphong(machitietphong madatphong maphong, , ) VALUES ('CTPH'||LPAD(seq_machitietphong.NEXTVAL, , ), '0'v_madatphong p_maphong, );

COMMIT;

DBMS_OUTPUT PUT_LINE.('BaAn ghi tại quâTy đã được thêm thành công.');END ThemThongTinTaiQuay;

Hình 14 Thủ tục thêm thông tin tại quầy

Tạo bản ghi khách hàng (ở bước này, chúng em mới tạo ra một bản ghi kháchhàng cùng với thông tin về phòng và mã đặt phòng đầy đủ Các bước trước đó chỉđược sử dụng để minh họa rằng các hàm hoạt động đúng đắn).

Hình 16 Kết quả của thủ tục thêm thông tin tại quầy

Như vậy là đã có 1 bản ghi khách hàng Hang Nguyen mới được thêm vào, kèmtheo mã đặt phòng và phòng của họ để xem được cần phải truy vấn thêm 2 bảng khác:Bảng đặt phòng: Mã DP00005 là thuộc về KH00005 và là khách Hang Nguyen,và thời gian ở của khách là 2 ngày, được ghi trong bản ghi:

Ngày đăng: 20/06/2024, 18:08