83
1 BÁO CÁO ĐỒ ÁN THC TP HQUN TRCƠ SỞ DLIU LI NGTrong xu thế phát trin hin nay trên thế gii khoa hc và công nghluôn có những thay đổi mnh m. Mt phần trong đó là việc ng dng Công NghThông Tin vào đời sng hàng ngày của con người. Loài người chúng ta đang hướng ti thiết lp mt hành tinh thông minh. Ngày nay vi sphát trin mnh mca CNTT kết hp vi sphát trin ca mạng Internet đã kết nối được toàn thế gii li vi nhau thành mt ththng nhất. Nó đã trở thành công cđắc lc cho nhiu ngành ngh: giao thông, quân s, y học…và đặc bit là trong công tác chuẩn đoán sự cmáy tính. Trước đây khi máy tính chưa được ng dng rng rãi các công vic qun lý đều được thc hin mt cách thcông nên rt tn thi gian, nhân lực cũng như tài chính. Ngày nay vi sphát trin mnh mca công nghthông tin đã giúp cho vic chuẩn đoán sự cmáy tính được thc hin mt cách ddàng hơn, giảm chi phí, thời gian… Qua quá trình kho những hư hỏng thc tế ca máy tính, em đã xây dựng lên đề tài hchuyên gia chuẩn đoán sự cmáy tính vi mong mun giúp cho vic sa cha máy tính được thc hin mt cách ddàng hơn, thuận tin và gim thiểu được các sai xót. Nhsquan tâm, hướng dn ca Thy Phùng Thế Bo, chúng em đã từng bước nghiên cu và vn dng các kiến thức đã được học để tìm hiu, phân tích và xây dựng được hchuyên gia chuẩn đoán đáp ứng tương đối mt scác yêu cầu đặt ra.Tuy nhiên, do kiến thc còn hn chế nên chương trình vẫn không tránh khi nhng thiếu sót. Vì vy, chúng em rt mong nhận được sđóng góp ý kiến ca tt ccác thầy cô để có thtừng bước xây dựng chương trình ngày càng hoàn thin và hiu quhơn.

báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

Embed Size (px)

Citation preview

Page 1: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

1

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

LỜI NGỎ Trong xu thế phát triển hiện nay trên thế giới khoa học và công nghệ luôn

có những thay đổi mạnh mẽ. Một phần trong đó là việc ứng dụng Công Nghệ

Thông Tin vào đời sống hàng ngày của con người. Loài người chúng ta đang

hướng tới thiết lập một hành tinh thông minh. Ngày nay với sự phát triển mạnh

mẽ của CNTT kết hợp với sự phát triển của mạng Internet đã kết nối được toàn

thế giới lại với nhau thành một thể thống nhất. Nó đã trở thành công cụ đắc lực

cho nhiều ngành nghề : giao thông, quân sự, y học…và đặc biệt là trong công tác

chuẩn đoán sự cố máy tính.

Trước đây khi máy tính chưa được ứng dụng rộng rãi các công việc quản

lý đều được thực hiện một cách thủ công nên rất tốn thời gian, nhân lực cũng như

tài chính. Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin đã giúp

cho việc chuẩn đoán sự cố máy tính được thực hiện một cách dễ dàng hơn, giảm

chi phí, thời gian… Qua quá trình khảo những hư hỏng thực tế của máy tính, em

đã xây dựng lên đề tài hệ chuyên gia chuẩn đoán sự cố máy tính với mong muốn

giúp cho việc sửa chữa máy tính được thực hiện một cách dễ dàng hơn, thuận tiện

và giảm thiểu được các sai xót.

Nhờ sự quan tâm, hướng dẫn của Thầy Phùng Thế Bảo, chúng em đã

từng bước nghiên cứu và vận dụng các kiến thức đã được học để tìm hiểu, phân

tích và xây dựng được hệ chuyên gia chuẩn đoán đáp ứng tương đối một số các

yêu cầu đặt ra.Tuy nhiên, do kiến thức còn hạn chế nên chương trình vẫn không

tránh khỏi những thiếu sót. Vì vậy, chúng em rất mong nhận được sự đóng góp ý

kiến của tất cả các thầy cô để có thể từng bước xây dựng chương trình ngày càng

hoàn thiện và hiệu quả hơn.

Page 2: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

2

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

MỤC LỤC

CHƯƠNG I: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ............ 4

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

2. Mô tả các chức năng của hệ thống ....................................................... 5

3. Xây dựng mô hình liên kết thực thể .................................................... 7

4. Mô hình quan hệ ERD ............................................................................ 8

5. Mô tả các bảng ......................................................................................... 9

CHƯƠNG II: CÀI ĐẶT CƠ SỞ DỮ LIỆU ............................... 16

1. Cài đặt các bảng .................................................................................... 16

2. Câu lệnh ................................................................................................... 20

3. Truy vấn ................................................................................................... 40

4. Thủ tục ...................................................................................................... 46

5. Trigger...................................................................................................... 60

6. Phân quyền .............................................................................................. 76

a. BANHANG: ........................................................................................... 76

b. KIEMKHO: ............................................................................................ 77

c. QUANLY: .............................................................................................. 79

d. GIAMDOC: ............................................................................................ 81

CHƯƠNG III: TỔNG KẾT ................................................................ 82

Page 3: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

3

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

PHỤ LỤC TRA CỨU HÌNH

Hình 1.1: Sơ đồ thực thể ....................................................................................... 7

Hình 1.2: Sơ đồ ERD ............................................................................................. 8

Hình 2.1: Kết quả sinh phân quyền BANHANG ................................................. 77

Hình 2.2: Kết quả sinh phân quyền KIEMKHO ................................................. 78

Hình 2.3: Kết quả sinh phân quyền QUANLY .................................................... 80

Hình 2.4: Kết quả sinh phân quyền GIAMDOC ................................................. 81

BẢNG

Bảng 1.1. dbo.BAOCAO ........................................................................................ 9

Bảng 1.2: dbo.CHINHANH ................................................................................... 9

Bảng 1.3: dbo.CHITIET_CONGTHUC ................................................................ 9

Bảng 1.4: dbo.CHITIET_HOADON ..................................................................... 9

Bảng 1.5: dbo.CHITIET_PHIEUNHAP ............................................................. 10

Bảng 1.6: dbo.CHUCVU ..................................................................................... 10

Bảng 1.7: dbo.DIACHI_CHINHANH ................................................................. 10

Bảng 1.8: dbo.DIACHI_NHACUNGCAP ........................................................... 10

Bảng 1.9: dbo.DIACHI_NHANVIEN .................................................................. 11

Bảng 1.10: dbo.EMAIL_NHACUNGCAP .......................................................... 11

Bảng 1.11: dbo.EMAIL_NHANVIEN .................................................................. 11

Bảng 1.12: dbo.HOADON .................................................................................. 11

Bảng 1.13: dbo.KHUVUC ................................................................................... 12

Bảng 1.14: dbo.LOAITHUCUONG .................................................................... 12

Bảng 1.15: dbo.NGUYENLIEU .......................................................................... 12

Bảng 1.16: dbo.NHACUNGCAP ........................................................................ 12

Bảng 1.17: dbo.QUAN_HUYEN ......................................................................... 12

Bảng 1.18: dbo.NHANVIEN ............................................................................... 13

Bảng 1.19: dbo.PHIEUCHI ................................................................................ 13

Bảng 1.20: dbo.PHIEUNHAP ............................................................................. 13

Bảng 1.21: dbo.PHIEUPHUTHU ....................................................................... 14

Bảng 1.22: dbo.SDT_CHINHANH ..................................................................... 14

Bảng 1.23: dbo.SDT_NHACUNGCAP ............................................................... 14

Bảng 1.24: dbo.SDT_NHANVIEN ...................................................................... 14

Bảng 1.25: dbo.THUCUONG ............................................................................. 15

Bảng 1.26: dbo.TINH_THANHPHO .................................................................. 15

Page 4: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

4

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

CHƯƠNG I: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

1. Mô tả bài toán:

Một chuỗi hệ thống quán coffee take away Highlands Coffee tại TP. Hồ Chí

Minh có nhiều chi nhánh ở nhiều quận khác nhau trong thành phố. Với mỗi chi

nhánh của hệ thống, các hoạt động đều theo mô hình chung gồm: nhập hàng, bán

hàng, … Để các hoạt động này được diễn ra thuận lợi, chúng ta cần có một cơ sở

dữ liệu hoàn chỉnh theo quy trình: nhập nguyên liệu, bán hàng, các khoản phụ thu

dịch vụ, tổng chi, doanh thu, lợi nhuận.

- Nhập nguyên liệu:

Những nguyên liệu dùng để pha chế các món sẽ được nhập từ nhiều nhà cung

cấp. Nhân viên kiểm tra tồn kho bằng hệ thống, lập danh sách những nguyên liệu

cần nhập, liên hệ với nhà sản xuất đặt hàng. Khi nhận được hàng, tiến hành kiểm

tra chất lượng nếu đúng yêu cầu thì nhân viên tiến hành xuất phiếu nhập hàng và

thanh toán.

- Bán hàng:

Khi khách hàng có nhu cầu mua thức uống, khách hàng cần xác định các yêu

cầu về: hình thức, khu vực uống, loại thức uống.

Hình thức uống bao gồm: dùng tại quán hoặc mang về.

Mang về: khách hàng sẽ được giảm 5%/ thức uống so với giá hiện tại trên

menu.

Dùng tại quán: khách hàng sẽ chọn khu vực ngồi ứng với mỗi loại giá khác

nhau.

o Khu A (có phòng riêng, dành cho những cuộc họp, hoặc những khách

hàng cần sự yên tĩnh, có wifi riêng, có máy lạnh) giá thức uống sẽ tăng

thêm 5%/thức uống so với giá trên menu.

o Khu B (phòng máy lạnh, có wifi) sẽ bán đúng giá trên menu.

o Khu C (ngoài trời, có wifi) sẽ bán đúng giá trên menu.

Nhân viên xác nhận lại đúng thức uống khách đã chọn, sau đó tiến hành in hóa

đơn và thanh toán trực tiếp tại quầy cho khách. Khi hóa đơn được xuất, hệ thống

sẽ tự động trừ số lượng nguyên liệu đã dùng dựa vào công thức của thức uống đó.

Nhờ đó, cơ sở dữ liệu sẽ quản lý được số lượng còn lại của nguyên liệu để có kế

hoạch nhập hàng hợp lý, và đối chiếu với số lượng trên thực tế nhằm đánh giá

được lượng nguyên liệu hao hụt.

- Các khoản phụ thu dịch vụ:

Quán sẽ có một số khoản phụ thu như quay phim tại quán phụ thu

300.000đ/giờ, chụp hình (quảng cáo, người mẫu, bộ ảnh kỉ niệm) phụ thu

100.000đ/giờ. Số tiền phụ thu này sẽ được lưu vào hệ thống thông qua phiếu phụ

thu, để tính doanh thu.

- Tổng chi:

Page 5: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

5

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Các khoản chi chung được cập nhật tổng quát vào hệ thống như: tiền nhập

nguyên liệu, tiền điện, tiền nước, lương nhân viên, tiền mặt bằng,… là dữ liệu mở,

có thể liên kết với cơ sở dữ liệu khác.

- Doanh thu:

Doanh thu là tổng tiền của tiền bán hàng và các khoản phụ thu dịch vụ. Doanh

thu sẽ được cập nhật theo ngày/ tháng/ quý/ năm tùy theo yêu cầu của người dùng.

- Lợi nhuận:

Lợi nhuận hàng tháng là số tiền của tổng doanh thu trừ tổng chi. Lợi nhuận có

thể được tính theo ngày/ tháng/ quý/ năm.

- Báo cáo:

Hàng tháng/ quý/ năm nhân viên sẽ xuất báo cáo doanh thu và lợi nhuận theo

yêu cầu của quản lý

2. Mô tả các chức năng của hệ thống

Hệ thống quản lý quán café Highlands Coffee sẽ gồm các chức năng

Quản lý nhập nguyên liệu:

o Tìm nguyên liệu: khi cần kiểm tra số lượng nguyên liệu (kiểm tra tồn

kho) hoặc khi xem thông tin nguyên liệu.

o Cập nhật: sau khi đã xuất hóa đơn nhập hàng, số lượng của loại nguyên

liệu sẽ được cập nhật lại trong hệ thống. Hoặc sau khi kiểm tra kho trong

thực tế, số lượng nguyên liệu cũng sẽ được cập nhật lại.

o Thêm: thêm nguyên liệu mới khi có món mới.

o Xóa: xóa nguyên liệu khi không còn dùng nữa.

o Lưu phiếu nhập hàng: lưu lại phiếu nhập vào hệ thống sau mỗi lần nhập

hàng.

Quản lý bán hàng:

o Tìm thức uống: giúp cho việc tìm thức uống để chọn thêm vào hóa đơn

được nhanh và chính xác hơn.

o Xem công thức: có thể dùng để xem lại trong những lúc cần thiết

o Chọn khu vực: sau khi xác định được vị trí khách muốn ngồi, hóa đơn

sẽ được điều chỉnh giá phù hợp với khu vực đó.

o Chọn thức uống: thức uống được thêm vào hóa đơn theo yêu cầu của

khách.

o In hóa đơn: sau khi hóa đơn được in, nguyên lại để làm thức uống trong

hóa đơn sẽ được tự động từ vào hệ thống và tiền trên hóa đơn cũng sẽ

được lưu lại để tính doanh thu.

Quản lý nhân viên:

o Thêm: khi có nhân viên mới, quản lý sẽ tạo cho nhân viên đó một tài

khoản để đăng nhập vào hệ thống

o Xóa: khi có nhân viên nghỉ việc, tài khoản của nhân viên đó cũng sẽ bị

xóa khỏi hệ thống.

Page 6: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

6

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

o Cập nhật: chức năng này có thể chỉnh sửa thông tin cá nhân của nhân

viên, hoặc phân quyền lại khi nhân viên được thay đổi chức vụ.

o Lương nhân viên: mỗi ca nhân viên làm sẽ được đánh dấu lại và hệ thống

sẽ tính lương cho nhân viên theo hệ số lương tương ứng (dữ liệu mở).

Báo cáo:

o Lập báo cáo doanh thu: làm thống kê – báo cáo theo doanh thu bán hàng

và các khoản phụ thu theo ngày, tháng hoặc thức uống tùy vào yêu cầu

của chủ quán.

o Lập báo cáo nhập hàng: thống kê số lượng nguyên liệu, tiền nhập nguyên

liệu đã nhập theo ngày, tháng, quý hoặc năm.

o Lập báo cáo chi: có thể lập báo cáo chi tiền lương nhân viên, tiền điện,

nước, mặt bằng, …

o Lập báo cáo lợi nhuận: lập báo cáo lợi nhuận (lợi nhuận = doanh thu –

chi) theo ngày, tháng, quý hoặc năm.

Quản lý doanh thu:

o Xem doanh thu: giúp cho quản lý có thể xem và kiểm soát được doanh

thu.

Quản lý thức uống:

o Thêm: bổ sung thức uống mới vào hệ thống, kèm theo công thức của nó.

o Xóa: xóa bỏ thức uống khỏi hệ thống khi thức uống đó không còn bán

trong quán.

o Cập nhật: cập nhật lại tên, đơn giá hoặc công thức của thức uống đó.

Phân quyền: phân quyền sử dụng phần mềm cho 4 nhóm: bán hàng, quản

lý, kiểm kho và giám đốc khi đăng nhập vào hệ thống.

o Nhân viên: Được phép xem và thêm vào bảng: PHIEUPHUTHU

CHITIET_HOADON, HOADON, PHIEUCHI. Chỉ được quyền xem ở

bảng: LOAITHUCUONG, NGUYENLIEU, KHUVUC, CHINHANH,

THUCUONG, CHITIET_CONGTHUC.

o Kiểm kho: Được phép xem và thêm ở các bảng: PHIEUNHAP,

NGUYENLIEU, CHITIET_PHIEUNHAP.

o Quản lý: Được phép xem, thêm và sửa ở các bảng: BAOCAO,

DIACHI_CHINHANH, CHITIET_CONGTHUC, DIACHI_NHANVIEN

KHUVUC, CHINHANH, DIACHI_NCC, EMAIL_NCC, KHUVUC,

EMAIL_NHANVIEN, SDT_NHACUNGCAP, SDT_CHINHANH,

QUAN_HUYEN, SDT_NHANVIEN, NHANVIEN, TINH_THANHPHO,

LOAITHUCUONG, NHACUNGCAP. Thêm và xem ở các bảng:

CHITIET_HOADON, PHIEUPHUTHU, HOADON, PHIEUNHAP,

CHITIET_PHIEUNHAP, PHIEUCHI, THUCUONG. Xem ở bảng

CHUCVU.

o Giám đốc: Toàn quyền với hệ thống.

Page 7: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

7

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

3. Xây dựng mô hình liên kết thực thể

Hình 1.1: Sơ đồ thực thể

Page 8: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

8

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

4. Mô hình quan hệ ERD

Hìn

h 1

.2:

đồ

ER

D

Page 9: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

9

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

5. Mô tả các bảng

Tên trường Mô tả Kiểu dữ liệu Độ dài

MABC Mã báo cáo Char 10

MANV Mã nhân viên Char 5

TENBC Tên báo cáo Nvarchar 10

NGAYLAP Ngày lập báo cáo Datetime

NOIDUNG Nội dung báo cáo Nvarchar Max

Bảng 1.1. dbo.BAOCAO

Tên trường Mô tả Kiểu dữ liệu Độ dài

MACN Mã chi nhánh Char 5

TENCN Tên chi nhánh Nvarchar 100

HESOGIA Hệ số giá Float

Bảng 1. 2: dbo.CHINHANH

Tên trường Mô tả Kiểu dữ liệu Độ dài

MATU Mã thức uống Char 5

MANL Mã nguyên liệu Char 10

SOLUONG Số lượng Float

Bảng 1.3: dbo.CHITIET_CONGTHUC

Tên trường Mô tả Kiểu dữ liệu Độ dài

MATU Mã thức uống Char 5

MAHD Mã hóa đơn Char 10

SOLUONG Số lượng Float

Bảng 1.4: dbo.CHITIET_HOADON

Page 10: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

10

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANL Mã nguyên liệu Char 10

MAPN Mã phiếu nhập Char 10

SOLUONG Số lượng Float

Bảng 1.5: dbo.CHITIET_PHIEUNHAP

Tên trường Mô tả Kiểu dữ liệu Độ dài

MACV Mã chức vụ Char 3

TENCV Tên chức vụ Nvarchar 50

Bảng 1.6: dbo.CHUCVU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MACN Mã chi nhánh Char 5

MATP Mã thành phố Char 5

MAQ Mã quận Char 5

DIACHI Địa chỉ Nvarchar 100

Bảng 1.7: dbo.DIACHI_CHINHANH

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANCC Mã nhà cung cấp Char 5

MATP Mã thành phố Char 5

MAQ Mã quận Char 5

DIACHI Địa chỉ Nvarchar 100

Bảng 1.8: dbo.DIACHI_NHACUNGCAP

Page 11: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

11

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANV Mã nhân viên Char 5

MATP Mã thành phố Char 5

MAQ Mã quận Char 5

DIACHI Địa chỉ Nvarchar 100

Bảng 1.9: dbo.DIACHI_NHANVIEN

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANCC Mã nhà cung cấp Char 5

MAE Mã email Char 5

EMAIL Email Nvarchar 50

Bảng 1.10: dbo.EMAIL_NHACUNGCAP

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANV Mã nhân viên Char 5

MAE Mã email Char 5

EMAIL Email Nvarchar 50

Bảng 1.11: dbo.EMAIL_NHANVIEN

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAHD Mã hóa đơn Char 50

MANV Mã nhân viên bán hàng Char 5

MAKV Mã khu vực Nvarchar 3

NGAYLAP Ngày lập hóa đơn Datetime

TONGTIEN Tổng tiền hóa đơn Decimal 18,0

Bảng 1.12: dbo.HOADON

Page 12: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

12

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAKV Mã khu vực Char 3

TENKV Tên khu vực Nvarchar 10

HESOGIA Hệ số giá Float

Bảng 1.13: dbo.KHUVUC

Tên trường Mô tả Kiểu dữ liệu Độ dài

MALOAI Mã loại thức uống Char 5

TENLOAI Tên loại thức uống Nvarchar 100

Bảng 1.14: dbo.LOAITHUCUONG

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANL Mã nguyên liệu Char 10

TENNL Tên nguyên liệu Nvarchar 100

SOLUONG Số lượng Float

DONVI Đơn vị tính Nvarchar 25

Bảng 1.15: dbo.NGUYENLIEU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANCC Mã nhà cung cấp Char 5

TENNCC Tên nhà cung cấp Nvarchar 100

Bảng 1.16: dbo.NHACUNGCAP

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAQ Mã quận Char 5

TENQ Tên quận Nvarchar 50

Bảng 1.17: dbo.QUAN_HUYEN

Page 13: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

13

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANV Mã nhân viên Char 5

TENNV Tên nhân viên Nvarchar 100

MACV Mã chức vụ Char 3

MACN Mã chi nhánh Char 3

NGAYSINH Ngày sinh Datetime

GIOITINH Giới tính Bit

Bảng 1.18: dbo.NHANVIEN

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAPC Mã phiếu chi Char 10

MANV Mã nhân viên Char 5

NOIDUNGCHI Nội dung chi Nvarchar Max

NGAYLAP Ngày lập Datetime

TONGTIEN Tổng tiền trong phiếu chi Decimal 18,0

Bảng 1.19: dbo.PHIEUCHI

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAPN Mã phiếu nhập Char 10

MANV Mã nhân viên Char 5

MANCC Mã nhà cung cấp Char 5

NGAYLAP Ngày lập Datetime

TONGTIEN Tổng tiền phiếu nhập Decimal 18,0

Bảng 1.20: dbo.PHIEUNHAP

Page 14: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

14

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MAPHIEUPT Mã phiếu phụ thu Char 10

MANV Mã nhân viên Char 5

TENPPT Tên phiếu phụ thu Nvarchar 100

NGAYLAP Ngày lập Datetime

SOTIEN Tổng tiền phiếu phụ thu Decimal 18,0

Bảng 1.21: dbo.PHIEUPHUTHU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MACN Mã chi nhánh Char 5

MADT Mã điện thoại Char 5

SODT Số điện thoại Nvarchar 50

Bảng 1.22: dbo.SDT_CHINHANH

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANCC Mã nhà cung cấp Char 5

MADT Mã điện thoại Char 5

SODT Số điện thoại Nvarchar 50

Bảng 1.23: dbo.SDT_NHACUNGCAP

Tên trường Mô tả Kiểu dữ liệu Độ dài

MANV Mã nhân viên Char 5

MADT Mã điện thoại Char 5

SODT Số điện thoại Nvarchar 50

Bảng 1.24: dbo.SDT_NHANVIEN

Page 15: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

15

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên trường Mô tả Kiểu dữ liệu Độ dài

MATU Mã thức uống Char 5

MALOAI Mã loại thức uống Char 5

TENTU Tên thức uống Nvarchar 100

DONGIA Đơn giá Decimal 18,0

Bảng 1.25: dbo.THUCUONG

Tên trường Mô tả Kiểu dữ liệu Độ dài

MATP Mã thành phố Char 5

TENTP Tên thành phố Nvarchar 50

Bảng 1.26: dbo.TINH_THANHPHO

Page 16: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

16

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

CHƯƠNG II: CÀI ĐẶT CƠ SỞ DỮ LIỆU

1. Cài đặt các bảng:

a. Tạo bảng TINH_THANHPHO

CREATE TABLE TINH_THANHPHO ( MATP CHAR(5) NOT NULL, TENTP nvarchar(50), PRIMARY KEY (MATP) )

b. Tạo bảng QUAN_HUYEN

CREATE TABLE QUAN_HUYEN ( MAQ CHAR(5) NOT NULL, TENQ nvarchar(50), PRIMARY KEY (MAQ) )

c. Tạo bảng KHUVUC

CREATE TABLE KHUVUC ( MAKV CHAR(3) NOT NULL, TENKV NVARCHAR(10), HESOGIA FLOAT PRIMARY KEY (MAKV) )

d. Tạo bảng NHACUNGCAP

CREATE TABLE NHACUNGCAP ( MANCC CHAR(5) NOT NULL, TENNCC NVARCHAR(100) NOT NULL, PRIMARY KEY (MANCC) )

e. Tạo bảng DIACHI_NCC

CREATE TABLE DIACHI_NCC ( MANCC CHAR(5) NOT NULL, MATP CHAR(5) NOT NULL, MAQ CHAR(5) NOT NULL, DIACHI nvarchar(100) NOT NULL, PRIMARY KEY (MANCC), FOREIGN KEY (MATP) REFERENCES TINH_THANHPHO(MATP), FOREIGN KEY (MAQ) REFERENCES QUAN_HUYEN(MAQ), FOREIGN KEY (MANCC) REFERENCES NHACUNGCAP(MANCC) )

f. Tạo bảng SDT_NHACUNGCAP

CREATE TABLE SDT_NHACUNGCAP ( MANCC CHAR(5) NOT NULL, MADT CHAR(5) NOT NULL, SODT nvarchar(50), PRIMARY KEY (MADT), FOREIGN KEY (MANCC) REFERENCES NHACUNGCAP(MANCC) )

Page 17: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

17

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

g. Tạo bảng EMAIL_NCC

CREATE TABLE EMAIL_NCC ( MANCC CHAR(5) NOT NULL, MAE CHAR(5) NOT NULL, EMAIL nvarchar(50), PRIMARY KEY (MAE), FOREIGN KEY (MANCC) REFERENCES NHACUNGCAP(MANCC) )

h. Tạo bảng CHINHANH

CREATE TABLE CHINHANH ( MACN CHAR(5) NOT NULL, TENCN nvarchar(100), HESOGIA FLOAT PRIMARY KEY (MACN) )

i. Tạo bảng SDT_CHINHANH

CREATE TABLE SDT_CHINHANH ( MACN CHAR(5) NOT NULL, MADT CHAR(5) NOT NULL, SODT nvarchar(50), PRIMARY KEY (MADT), FOREIGN KEY (MACN) REFERENCES CHINHANH(MACN) )

j. Tạo bảng DIACHI_CHINHANH

CREATE TABLE DIACHI_CHINHANH ( MACN CHAR(5) NOT NULL, MATP CHAR(5) NOT NULL, MAQ CHAR(5) NOT NULL, DIACHI nvarchar(100) NOT NULL, PRIMARY KEY (MACN), FOREIGN KEY (MATP) REFERENCES TINH_THANHPHO(MATP), FOREIGN KEY (MAQ) REFERENCES QUAN_HUYEN(MAQ), FOREIGN KEY (MACN) REFERENCES CHINHANH(MACN) )

k. Tạo bảng CHUCVU

CREATE TABLE CHUCVU ( MACV CHAR(3) NOT NULL, TENCV nvarchar(50), PRIMARY KEY (MACV) )

l. Tạo bảng NHANVIEN

CREATE TABLE NHANVIEN ( MANV CHAR(5) NOT NULL, TENNV nvarchar(100), MACV CHAR(3) NOT NULL, MACN CHAR(5) NOT NULL, NGAYSINH DATETIME, GIOITINH BIT, NGAYVAO DATETIME, NGAYNGHI DATETIME

Page 18: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

18

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

PRIMARY KEY (MANV), FOREIGN KEY (MACV) REFERENCES CHUCVU(MACV), FOREIGN KEY (MACN) REFERENCES CHINHANH(MACN) )

m. Tạo bảng DIACHI_NHANVIEN

CREATE TABLE DIACHI_NHANVIEN ( MANV CHAR(5) NOT NULL, MATP CHAR(5) NOT NULL, MAQ CHAR(5) NOT NULL, DIACHI nvarchar(100) NOT NULL, PRIMARY KEY (MANV), FOREIGN KEY (MATP) REFERENCES TINH_THANHPHO(MATP), FOREIGN KEY (MAQ) REFERENCES QUAN_HUYEN(MAQ), FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV) )

n. Tạo bảng SDT_NHANVIEN

CREATE TABLE SDT_NHANVIEN ( MANV CHAR(5) NOT NULL, MADT CHAR(5) NOT NULL, SODT nvarchar(50), PRIMARY KEY (MADT), FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV) )

o. Tạo bảng EMAIL_NHANVIEN

CREATE TABLE EMAIL_NHANVIEN ( MANV CHAR(5) NOT NULL, MAE CHAR(5) NOT NULL, EMAIL nvarchar(50), PRIMARY KEY (MAE), FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV) )

p. Tạo bảng PHIEUCHI

CREATE TABLE PHIEUCHI ( MAPC CHAR(10) NOT NULL, MANV CHAR(5) NOT NULL, NOIDUNGCHI nvarchar(max), NGAYLAP DATETIME, TONGTIEN DECIMAL PRIMARY KEY (MAPC) FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV) )

q. Tạo bảng PHIEUPHUTHU

CREATE TABLE PHIEUPHUTHU ( MAPHIEUPT CHAR(10) NOT NULL, MANV CHAR(5) NOT NULL, TENPPT NVARCHAR(100), NGAYLAP DATETIME, SOTIEN DECIMAL PRIMARY KEY (MAPHIEUPT) CONSTRAINT FK_PHIEUPHUTHU_MANV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV) )

Page 19: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

19

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

r. Tạo bảng PHIEUNHAP

CREATE TABLE PHIEUNHAP ( MAPN CHAR(10) NOT NULL, MANV CHAR(5) NOT NULL, MANCC CHAR(5) NOT NULL, NGAYLAP DATETIME, TONGTIEN DECIMAL PRIMARY KEY (MAPN) CONSTRAINT FK_PHIEUNHAP_MANV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV), CONSTRAINT FK_PHIEUNHAP_MANCC FOREIGN KEY(MANCC) REFERENCES NHACUNGCAP(MANCC) )

s. Tạo bảng BAOCAO

CREATE TABLE BAOCAO ( MABC CHAR(10) NOT NULL, MANV CHAR(5) NOT NULL, TENBC NVARCHAR(100), NGAYLAP DATETIME, NOIDUNG nvarchar(max) PRIMARY KEY (MABC) CONSTRAINT FK_BAOCAO_MANV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV) )

t. Tạo bảng HOADON

CREATE TABLE HOADON ( MAHD CHAR(50) NOT NULL, MANV CHAR(5) NOT NULL, MAKV CHAR(3) NOT NULL, NGAYLAP DATETIME, TONGTIEN DECIMAL PRIMARY KEY (MAHD) CONSTRAINT FK_HOADON_MANV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV), CONSTRAINT FK_HOADON_MAKV FOREIGN KEY(MAKV) REFERENCES KHUVUC(MAKV) )

u. Tạo bảng LOAITHUCUONG

CREATE TABLE LOAITHUCUONG ( MALOAI CHAR(5) NOT NULL, TENLOAI NVARCHAR(100) PRIMARY KEY (MALOAI) )

v. Tạo bảng LOAITHUCUONG

CREATE TABLE NGUYENLIEU ( MANL CHAR(10) NOT NULL, TENNL NVARCHAR(100), SOLUONG float, DONVI nvarchar(25) PRIMARY KEY (MANL) )

w. Tạo bảng THUCUONG

CREATE TABLE THUCUONG ( MATU CHAR(5) NOT NULL, MALOAI CHAR(5) NOT NULL,

Page 20: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

20

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

TENTU NVARCHAR(100), DONGIA DECIMAL PRIMARY KEY (MATU) CONSTRAINT FK_THUCUONG_MALOAI FOREIGN KEY(MALOAI) REFERENCES LOAITHUCUONG(MALOAI) )

x. Tạo bảng CHITIET_CONGTHUC

CREATE TABLE CHITIET_CONGTHUC ( MATU CHAR(5) NOT NULL, MANL CHAR(10) NOT NULL, SOLUONG float PRIMARY KEY (MATU,MANL) CONSTRAINT FK_CHITIET_CONGTHUC_MATU FOREIGN KEY(MATU) REFERENCES THUCUONG(MATU), CONSTRAINT FK_CHITIET_CONGTHUC_MANL FOREIGN KEY(MANL) REFERENCES NGUYENLIEU(MANL) )

y. Tạo bảng CHITIET_HOADON

CREATE TABLE CHITIET_HOADON ( MATU CHAR(5) NOT NULL, MAHD CHAR(50) NOT NULL, SOLUONG float PRIMARY KEY (MATU, MAHD) CONSTRAINT FK_CHITIET_HOADON_MATU FOREIGN KEY(MATU) REFERENCES THUCUONG(MATU), CONSTRAINT FK_CHITIET_HOADON_MAHD FOREIGN KEY(MAHD) REFERENCES HOADON(MAHD) )

z. Tạo bảng CHITIET_PHIEUNHAP

CREATE TABLE CHITIET_PHIEUNHAP ( MANL CHAR(10) NOT NULL, MAPN CHAR(10) NOT NULL, SOLUONG float PRIMARY KEY (MANL, MAPN) CONSTRAINT FK_CHITIET_PHIEUNHAP_MANL FOREIGN KEY(MANL) REFERENCES NGUYENLIEU(MANL), CONSTRAINT FK_CHITIET_PHIEUNHAP_MAPN FOREIGN KEY(MAPN) REFERENCES PHIEUNHAP(MAPN)

)

2. Câu lệnh:

INSERT

Câu 1. Viết câu lệnh thêm vào bảng CHITIET_HOADON các giá trị: MAHD

CN1KV102, MATU TU20, SOLUONG 1

Code INSERT INTO CHITIET_HOADON VALUES ('TU20','CN1KV102','1');

Kết quả test

Page 21: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

21

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 2. Viết câu lệnh thêm vào bảng CHITIET_HOADON: MATU TU9,

MAHD CN4KV103, SOLUONG 2

Code INSERT INTO CHITIET_HOADON VALUES ('TU9','CN4KV103','2');

Test

Câu 3. Viết câu lệnh thêm vào bảng CHITIET_HOADON: MAHD

CN2KV201, MATU TU67, SOLUONG 1

Code INSERT INTO CHITIET_HOADON VALUES ('TU67','CN2KV201','1');

Kết quả test

Câu 4. Viết câu lệnh thêm bảng vào HOADON: MAHD CN3KV135, MANV

NV1, MAKV KV1, NGAYLAP 12/2/2015, TONGTIEN: 83000

Code INSERT INTO HOADON VALUES ('CN3KV135','NV1','KV1','12/2/2015',83000);

Kết quả test

Câu 5. Viết câu lệnh thêm bảng vào HOADON: MAHD CN3KV254, MANV

NV1, MAKV KV1, NGAYLAP 12/12/2015, TONGTIEN: 41000

Code INSERT INTO HOADON VALUES ('CN3KV254','NV1','KV1','12/12/2015',41000);

Page 22: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

22

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 6. Viết câu lệnh thêm bảng vào HOADON: MAHD CN3KV333, MANV

NV1, MAKV KV1, NGAYLAP 12/22/2015, TONGTIEN: 125000

Code INSERT INTO HOADON VALUES ('CN3KV333','NV2','KV2','12/22/2015',125000);

Kết quả test

Câu 7. Viết câu lệnh thêm vào bảng PHIEUCHI: MAPC: PC61, MANV:

NV5, NOIDUNGCHI: Rút doanh thu ngày, NGAYLAP: 11/2/2015,

TONGTIEN: 15000000

Code INSERT INTO PHIEUCHI VALUES ('PC61','NV5','Rút doanh thu ngày','11/2/2015',15000000);

Kết quả test

Page 23: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

23

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 8. Viết câu lệnh thêm vào bảng PHIEUCHI: MAPC: PC71, MANV:

NV5, NOIDUNGCHI: Trả tiền thuê bảo vệ, NGAYLAP: 12/2/2015,

TONGTIEN: 8000000

Code INSERT INTO PHIEUCHI VALUES ('PC71','NV5','Trả tiền thuê bảo vệ','12/2/2015',8000000);

Kết quả test

Câu 9. Viết câu lệnh thêm vào bảng PHIEUCHI: MAPC: PC81, MANV:

NV5, NOIDUNGCHI: Rút doanh thu ngày, NGAYLAP: 12/2/2015,

TONGTIEN: 20000000

Code INSERT INTO PHIEUCHI VALUES ('PC81','NV5','Rút doanh thu ngày','12/2/2015',20000000);

Kết quả test

Câu 10. Viết câu lệnh thêm vào bảng PHIEUNHAP: MAPN: PN42, MANV:

NV3, MANCC: NCC2, NGAPLAP: 11/3/2015, TONGTIEN: 3000000

Code INSERT INTO PHIEUNHAP VALUES ('PN42','NV3','NCC2','11/3/2015',3000000);

Kết quả test

Page 24: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

24

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 11. Viết câu lệnh thêm vào bảng PHIEUNHAP: MAPN: PN25, MANV:

NV3, MANCC: NCC1, NGAPLAP: 12/1/2015, TONGTIEN: 1200000

Code INSERT INTO PHIEUNHAP VALUES ('PN25','NV3','NCC1','12/1/2015',1200000);

Kết quả test

Câu 12. Viết câu lệnh thêm vào bảng PHIEUNHAP: MAPN: PN62, MANV:

NV3, MANCC: NCC4, NGAPLAP: 12/2/2015, TONGTIEN: 1800000

Code INSERT INTO PHIEUNHAP VALUES ('PN62','NV3','NCC4','12/2/2015',1800000);

Kết quả test

Câu 13. Viết câu lệnh thêm vào PHIEUPHUTHU: MAPHIEUPT: PTT63,

MANV: NV2, TENPPT: Khách làm vỡ ly, NGAYLAP: 11/20/2015, SOTIEN:

30000

Code INSERT INTO PHIEUPHUTHU VALUES ('PTT63','NV2','Khách làm vỡ ly','11/20/2015',30000);

Kết quả test

Page 25: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

25

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 14. Viết câu lệnh thêm vào PHIEUPHUTHU: MAPHIEUPT: PTT73,

MANV: NV2, TENPPT: Quay phim, NGAYLAP: 12/1/2015, SOTIEN:

200000

Code INSERT INTO PHIEUPHUTHU VALUES ('PTT73','NV2','Quayphim','12/1/2015',200000);

Kết quả test

Câu 15. Viết câu lệnh thêm vào PHIEUPHUTHU: MAPHIEUPT: PTT83,

MANV: NV4, TENPPT: Chụp hình, NGAYLAP: 11/20/2015, SOTIEN:

100000

Code INSERT INTO PHIEUPHUTHU VALUES ('PTT83','NV4','Chụp hình','11/20/2015',100000);

Kết quả test

UPDATE:

Câu 1. Viết câu lệnh sửa tất cả mã nhân viên trong bảng PHIEUPHUTHU

thành 'NV2' trong duy nhất ngày 14/02/2015

Code UPDATE PHIEUPHUTHU SET MANV='NV2' WHERE NGAYLAP='02/14/2015'

Kết quả test

Trước khi test

Sau khi test

Page 26: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

26

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 2. Viết câu lệnh sửa TENPPT của nhân viên có mã NV3 trong ngày

30/04/2014 thành 'Khách làm vỡ ly'

Code UPDATE PHIEUPHUTHU SET TENPPT=N'Khách làm vỡ ly' WHERE MANV='NV3' AND NGAYLAP='04/30/2015';

Kết quả test

Trước khi test

Sau khi test

Câu 3. Viết câu lệnh sửa SOTIEN của mã 'PPT3' trong bảng PHIEUPHUTHU

từ 1000000 thành 500000

Code UPDATE PHIEUPHUTHU SET SOTIEN=500000 WHERE MAPHIEUPT='PPT3';

Kết quả test

Trước khi sửa

Sau khi sửa

Câu 4. Viết câu lệnh sửa TONGTIEN(bảng PHIEUNHAP) của nhà cung cấp

có mã NCC5 trong ngày 14/03/2015 thành 3000000

Code UPDATE PHIEUNHAP SET TONGTIEN=3000000 WHERE MANCC='NCC5' AND NGAYLAP ='03/14/2015'

Page 27: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

27

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Trước khi test

Sau khi test

Câu 5. Tăng hệ số giá thêm 1 cho khu vực có nhiều người uống nhất

Code

UPDATE KHUVUC SET HESOGIA=HESOGIA+1 WHERE MAKV IN( SELECT KHUVUC.MAKV FROM HOADON INNER JOIN KHUVUC ON HOADON.MAKV = KHUVUC.MAKV INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD GROUP BY KHUVUC.MAKV, KHUVUC.TENKV HAVING (SUM(CHITIET_HOADON.SOLUONG) = (SELECT TOP (1) SUM(CHITIET_HOADON.SOLUONG) AS SoLuong FROM HOADON AS HOADON INNER JOIN KHUVUC AS KHUVUC ON HOADON.MAKV = KHUVUC.MAKV INNER JOIN CHITIET_HOADON AS CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD GROUP BY KHUVUC.MAKV, KHUVUC.TENKV ORDER BY SoLuong DESC)))

Kết quả test

Trước khi test

Sau khi test

Câu 6. Giảm 20% giá các thức uống không bán được trong tháng 1/2015

Code

UPDATE THUCUONG SET DONGIA=DONGIA - DONGIA*0.2 WHERE MATU NOT IN( SELECT THUCUONG.MATU FROM HOADON INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD INNER JOIN THUCUONG ON CHITIET_HOADON.MATU = THUCUONG.MATU WHERE MONTH(HOADON.NGAYLAP) = 1 AND YEAR(HOADON.NGAYLAP) = 2015 )

Page 28: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

28

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Trước khi test

Sau khi test

Câu 7. Tăng thêm 50% giá các thức uống bán chạy nhất

Code

UPDATE THUCUONG SET DONGIA=DONGIA+DONGIA*0.5 WHERE TENTU IN ( SELECT THUCUONG.TENTU FROM HOADON INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD INNER JOIN THUCUONG ON CHITIET_HOADON.MATU = THUCUONG.MATU GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA HAVING (SUM(CHITIET_HOADON.SOLUONG) = (SELECT TOP 1 SUM(CHITIET_HOADON.SOLUONG) AS SOLUONG FROM THUCUONG INNER JOIN CHITIET_HOADON ON THUCUONG.MATU = CHITIET_HOADON.MATU INNER JOIN HOADON ON CHITIET_HOADON.MAHD = HOADON.MAHD GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA ORDER BY SUM(CHITIET_HOADON.SOLUONG) DESC )))

Kết quả test

Trước khi test

Sau khi test

Câu 8. Viết câu lệnh sửa MANV thành ‘NV2’, NOIDUNGCHI thành ‘Rút

doanh thu’ của mã phiếu chi ‘PC5’ (thuộc bảng PHIEUCHI)

Code UPDATE PHIEUCHI SET MANV='NV2', NOIDUNGCHI='Rút doanh thu' WHERE MAPC='PC5';

Page 29: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

29

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 9. Viết câu lệnh sửa PHIEUCHI: MANV=NV2, NGAYLAP=11/20/2015

của MAPC: PC4

Code UPDATE PHIEUCHI SET MANV='NV2', NGAYLAP='11/20/2015' WHERE MAPC='PC4';

Kết quả test

Câu 10. Viết câu lệnh sửa HOADON: MANV=NV2 của MAHD=CN2KV201

Code UPDATE HOADON SET MANV='NV2' WHERE MAHD='CN2KV201';

Kết quả test

Page 30: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

30

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 11. Viết câu lệnh sửa HOADON: MANV=NV2, TONGTIEN=108000

của MAHD=CN1KV204

Code UPDATE HOADON SET MANV='NV2', TONGTIEN=108000 WHERE MAHD='CN1KV204';

Kết quả test

Câu 12. Viết câu lệnh sửa HOADON: MANV=NV2, NGAYLAP=11/21/2015

của MAHD=CN4KV103

Code UPDATE HOADON SET MANV='NV2', NGAYLAP='11/21/2015' WHERE MAHD='CN4KV103';

Kết quả test

Câu 13. Viết câu lệnh sửa THUCUONG: DONGIA=32000 của MATU=TU16

Code UPDATE THUCUONG SET DONGIA='32000' WHERE MATU='TU16';

Page 31: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

31

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 14. Viết câu lệnh sửa THUCUONG: MALOAI=tea của MATU=TU21

Code UPDATE THUCUONG SET MALOAI='tea' WHERE MATU='TU21';

Kết quả test

Câu 15. Viết câu lệnh sửa THUCUONG: TENTU=Iced Matcha Greentea của

MATU=TU14

Code UPDATE THUCUONG SET TENTU='Iced Matcha Greentea' WHERE MATU='TU14';

Kết quả test

Page 32: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

32

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

DELETE

Câu 1. Viết câu lệnh xóa báo cáo của một nhân viên với MANV=NV5 vào

ngày 31/12/2014

Code DELETE FROM BAOCAO WHERE NGAYLAP='12/31/2014' AND MANV='NV5'

Kết quả test

Trước khi test

Sau khi test

Câu 2. Viết câu lệnh xóa một chi nhánh với MACN=CN11

Code DELETE FROM CHINHANH WHERE MACN='CN11'

Kết quả test

Trước khi test

Sau khi test

Page 33: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

33

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 3. Viết câu lệnh xóa chức vụ với MACV=CV4

Code DELETE FROM CHUCVU WHERE MACV='CV4'

Kết quả test

Trước khi test

Sau khi test

Câu 4. Viết câu lệnh xóa địa chỉ chi nhánh ở quận 1(Q1) với mã MACN=CN9

Code DELETE FROM DIACHI_CHINHANH WHERE MACN='CN9' AND MAQ='Q1'

Kết quả test

Trước khi test

Sau khi test

Page 34: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

34

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 5. Viết câu lệnh xóa địa chỉ nhà cung cấp có mã NCC1 cấp ở quận 1(Q1)

Code DELETE FROM DIACHI_NCC WHERE MANCC='NCC1' AND MAQ='Q1'

Kết quả test

Trước khi test

Sau khi test

Câu 6. Viết câu lệnh xóa địa chỉ nhân viên có mã NV14 ở quận 8 (mã: Q8)

Code DELETE FROM DIACHI_NHANVIEN WHERE MANV='NV14' AND MAQ='Q8'

Kết quả test

Trước khi test

Page 35: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

35

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Sau khi test

Câu 7. Viết câu lệnh xóa email(mã: EM17) nhà cung cấp 'Phương Hà 2'

Code DELETE FROM EMAIL_NCC WHERE MANCC = (SELECT MANCC FROM dbo.NHACUNGCAP WHERE NHACUNGCAP.TENNCC= N'Phương Hà 2') AND MAE='EM17'

Kết quả test

Trước khi test

Sau khi test

Câu 8. Viết câu lệnh xóa Email của nhân viên có mã NV9 và mã Email là

EM9

Code DELETE FROM EMAIL_NHANVIEN WHERE MAE='EM9' AND MANV ='NV9'

Page 36: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

36

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Trước khi test

Sau khi test

Câu 9. Viết câu lệnh xóa phiếu phụ thu của nhân viên có mã là NV3 đã lập

vào ngày 21/09/2015

Code DELETE FROM PHIEUPHUTHU WHERE MANV='NV3' AND NGAYLAP ='09/21/2014'

Kết quả test

Trước khi test

Sau khi test

Câu 10. Viết câu lệnh xóa tất cả phiếu nhập vào ngày 21/01/2015

Code DELETE FROM PHIEUNHAP WHERE NGAYLAP='01/21/2014'

Page 37: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

37

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Trước khi test

Sau khi test

Câu 11. Viết câu lệnh xóa phiếu chi mã PC5 vào ngày 07/01/2014

Code DELETE FROM PHIEUCHI WHERE NGAYLAP ='01/07/2014'

Kết quả test

Trước khi test

Sau khi test

Câu 12. Viết câu lệnh xóa quận 70 (mã Q70)

Code DELETE FROM QUAN_HUYEN WHERE MAQ='Q70'

Kết quả test

Trước khi test

Page 38: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

38

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Sau khi test

Câu 13. Viết câu lệnh xóa SĐT 095377777 ở chi nhánh 1 (mã CN1)

Code DELETE FROM SDT_CHINHANH WHERE SODT='095377777' AND MACN ='CN1'

Kết quả test

Trước khi test

Sau khi test

Câu 14. Viết câu lệnh xóa hết SĐT của nhà cung cấp có tên là Phương Hà 1

Code DELETE FROM SDT_NHACUNGCAP WHERE MANCC=(SELECT NHACUNGCAP.MANCC FROM NHACUNGCAP WHERE TENNCC=N'Phương Hà 1')

Page 39: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

39

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Trước khi test

Sau khi test

Câu 15. Viết câu lệnh xóa SĐT của 2 nhân viên Đồng Quốc Tiến, Dương Thị

Hường

Code DELETE FROM SDT_NHANVIEN WHERE MANV IN (SELECT NHANVIEN.MANV FROM NHANVIEN WHERE TENNV =N'Dương Thị Hường' OR TENNV=N'Đồng Quốc Tiến')

Kết quả test

Trước khi test

Sau khi test

Page 40: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

40

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

3. Truy vấn

Câu 1. Hãy lọc ra danh sách các thức uống có loại là Tea (mã: tea)

Code

SELECT THUCUONG.TENTU AS 'Thức Uống', THUCUONG.DONGIA AS 'Giá', LOAITHUCUONG.TENLOAI AS 'Loại' FROM THUCUONG INNER JOIN LOAITHUCUONG ON THUCUONG.MALOAI = LOAITHUCUONG.MALOAI WHERE (LOAITHUCUONG.TENLOAI = 'Tea')

Kết quả test

Câu 3. Hãy lọc ra danh sách thức uống không chứa nguyên liệu sữa đặc

Code

SELECT DISTINCT THUCUONG.TENTU AS 'Thức Uống', THUCUONG.DONGIA AS 'Giá' FROM THUCUONG INNER JOIN CHITIET_CONGTHUC ON THUCUONG.MATU = CHITIET_CONGTHUC.MATU INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE (NGUYENLIEU.MANL NOT LIKE '%milk%')

Câu 2. Viết câu lệnh thống kê những loại thức uống có giá thấp hơn 40 ngàn

Code SELECT TENTU AS 'Thức Uống', DONGIA AS 'Giá' FROM THUCUONG WHERE (DONGIA < 40000)

Kết quả test

Page 41: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

41

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 5. Viết câu lệnh thống kê toàn bộ những nhà cung cấp đang cấp hàng cho

hệ thống: CHƯA CHÍNH XÁC

Code

SELECT DISTINCT NHACUNGCAP.TENNCC FROM NHACUNGCAP INNER JOIN SDT_NHACUNGCAP ON NHACUNGCAP.MANCC = SDT_NHACUNGCAP.MANCC INNER JOIN EMAIL_NCC ON NHACUNGCAP.MANCC = EMAIL_NCC.MANCC INNER JOIN DIACHI_NCC ON NHACUNGCAP.MANCC = DIACHI_NCC.MANCC INNER JOIN QUAN_HUYEN ON DIACHI_NCC.MAQ = QUAN_HUYEN.MAQ INNER JOIN TINH_THANHPHO ON DIACHI_NCC.MATP = TINH_THANHPHO.MATP INNER JOIN PHIEUNHAP ON NHACUNGCAP.MANCC = PHIEUNHAP.MANCC

Kết quả test

Câu 4. Hãy lọc ra những nguyên liệu được cung cấp bởi nhà cung cấp Phương

Hà 1 (NCC1)

Code

SELECT DISTINCT NHACUNGCAP.TENNCC, NGUYENLIEU.TENNL FROM PHIEUNHAP INNER JOIN NHACUNGCAP ON PHIEUNHAP.MANCC = NHACUNGCAP.MANCC INNER JOIN CHITIET_PHIEUNHAP ON PHIEUNHAP.MAPN = CHITIET_PHIEUNHAP.MAPN INNER JOIN NGUYENLIEU ON CHITIET_PHIEUNHAP.MANL = NGUYENLIEU.MANL WHERE(NHACUNGCAP.TENNCC = N'Phương Hà 1')

Kết quả test

Page 42: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

42

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 6. Hãy liệt kê danh sách nhân viên theo chi nhánh 1, 2, 3

Code

SELECT CHINHANH.TENCN, NHANVIEN.TENNV, NHANVIEN.NGAYSINH, NHANVIEN.GIOITINH, SDT_NHANVIEN.SODT, DIACHI_NHANVIEN.DIACHI, QUAN_HUYEN.TENQ, TINH_THANHPHO.TENTP FROM NHANVIEN INNER JOIN CHINHANH ON NHANVIEN.MACN = CHINHANH.MACN INNER JOIN SDT_NHANVIEN ON NHANVIEN.MANV = SDT_NHANVIEN.MANV INNER JOIN DIACHI_NHANVIEN ON NHANVIEN.MANV = DIACHI_NHANVIEN.MANV INNER JOIN QUAN_HUYEN ON DIACHI_NHANVIEN.MAQ = QUAN_HUYEN.MAQ INNER JOIN TINH_THANHPHO ON DIACHI_NHANVIEN.MATP = TINH_THANHPHO.MATP WHERE (CHINHANH.TENCN LIKE '%CHI NHÁNH 1%')

Kết quả test

Câu 7. Viết câu lệnh để liệt kê thức uông bán nhiều nhất

Code

SELECT THUCUONG.TENTU, THUCUONG.DONGIA, SUM(CHITIET_HOADON.SOLUONG) AS 'SOLUONGBAN' FROM HOADON INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD INNER JOIN THUCUONG ON CHITIET_HOADON.MATU = THUCUONG.MATU GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA HAVING (SUM(CHITIET_HOADON.SOLUONG) = (SELECT TOP 1 SUM(CHITIET_HOADON.SOLUONG) AS SOLUONG FROM THUCUONG INNER JOIN CHITIET_HOADON ON THUCUONG.MATU = CHITIET_HOADON.MATU INNER JOIN HOADON ON CHITIET_HOADON.MAHD = HOADON.MAHD GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA ORDER BY SUM(CHITIET_HOADON.SOLUONG) DESC ))

Kết quả test

Page 43: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

43

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 8. Hãy liệt kê thức uống ko bán đc trong tháng/năm (sale, giảm giá)

Code

SELECT TENTU, DONGIA FROM THUCUONG WHERE MATU NOT IN(SELECT THUCUONG.MATU FROM HOADON INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD INNER JOIN THUCUONG ON CHITIET_HOADON.MATU = THUCUONG.MATU WHERE YEAR(HOADON.NGAYLAP) = 2015)

Kết quả test

Câu 10. Viết câu lệnh để tính doanh thu toàn hệ thống năm 2015

Code

SELECT YEAR(NGAYLAP) AS 'NAM', SUM(TONGTIEN) + (SELECT SUM(SOTIEN) AS TONGTIEN_PPT FROM PHIEUPHUTHU WHERE (YEAR(NGAYLAP) = 2015) ) AS TONGTIEN FROM HOADON GROUP BY YEAR(NGAYLAP) HAVING (YEAR(NGAYLAP) = 2015)

Kết quả test

Câu 9. Viết câu lệnh tìm khu vực được chọn nhiều nhất

Code

SELECT KHUVUC.MAKV, KHUVUC.TENKV, SUM(CHITIET_HOADON.SOLUONG) AS SoLuong FROM HOADON INNER JOIN KHUVUC ON HOADON.MAKV = KHUVUC.MAKV INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD GROUP BY KHUVUC.MAKV, KHUVUC.TENKV HAVING (SUM(CHITIET_HOADON.SOLUONG) = (SELECT TOP (1) SUM(CHITIET_HOADON.SOLUONG) AS SoLuong FROM HOADON AS HOADON INNER JOIN KHUVUC AS KHUVUC ON HOADON.MAKV = KHUVUC.MAKV INNER JOIN CHITIET_HOADON AS CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD GROUP BY KHUVUC.MAKV, KHUVUC.TENKV ORDER BY SoLuong DESC))

Kết quả test

Page 44: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

44

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 11. Viết câu lệnh để tính doanh thu toàn hệ thống của tháng 1/ 2015

Code

SELECT MONTH(NGAYLAP) AS 'THANG', YEAR(NGAYLAP) AS 'NAM', SUM(TONGTIEN) + (SELECT SUM(SOTIEN) AS TONGTIEN_PPT FROM PHIEUPHUTHU WHERE (MONTH(NGAYLAP) = 1) AND (YEAR(NGAYLAP) = 2015) ) AS TONGTIEN FROM HOADON GROUP BY MONTH(NGAYLAP),YEAR(NGAYLAP) HAVING ((MONTH(NGAYLAP) = 1) AND (YEAR(NGAYLAP) = 2015))

Kết quả test

Câu 12. Hãy tính lợi nhuận toàn hệ thống năm 2015

Code

SELECT YEAR(NGAYLAP) AS 'NAM', SUM(TONGTIEN) + (SELECT SUM(SOTIEN) AS TONGTIEN_PPT FROM PHIEUPHUTHU WHERE (YEAR(NGAYLAP) = 2015)) -(SELECT SUM(TONGTIEN) AS TONGTIEN_PC FROM PHIEUCHI WHERE (YEAR(NGAYLAP) = 2015)) -(SELECT SUM(TONGTIEN) AS TONGTIEN_PN FROM PHIEUNHAP WHERE (YEAR(NGAYLAP) = 2015)) AS TONGTIEN FROM HOADON GROUP BY YEAR(NGAYLAP) HAVING (YEAR(NGAYLAP) = 2015)

Kết quả test

Câu 13. Hãy tính lợi nhuận từng chi nhánh (Chi nhánh 1) (HOADON +

PHIEUTHU) - (PHIEUCHI + PHIEUNHAP)

Code

SELECT CHINHANH.TENCN, SUM(TONGTIEN) + (SELECT SUM(SOTIEN) AS TONGTIEN_PPT FROM PHIEUPHUTHU INNER JOIN NHANVIEN ON PHIEUPHUTHU.MANV = NHANVIEN.MANV WHERE (NHANVIEN.MACN = 'CN1')) -(SELECT SUM(TONGTIEN) AS TONGTIEN_PC FROM PHIEUCHI INNER JOIN NHANVIEN ON PHIEUCHI.MANV = NHANVIEN.MANV WHERE (NHANVIEN.MACN = 'CN1')) -(SELECT SUM(TONGTIEN) AS TONGTIEN_PN FROM PHIEUNHAP INNER JOIN NHANVIEN ON PHIEUNHAP.MANV = NHANVIEN.MANV WHERE (NHANVIEN.MACN = 'CN1')) AS TONGTIEN FROM HOADON INNER JOIN NHANVIEN ON HOADON.MANV = NHANVIEN.MANV INNER JOIN CHINHANH ON NHANVIEN.MACN = CHINHANH.MACN GROUP BY CHINHANH.TENCN,NHANVIEN.MACN HAVING (NHANVIEN.MACN = 'CN1')

Page 45: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

45

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 14. Viết câu lệnh để thống kê số lượng tồn của tất cả các nguyên liệu còn

dưới mức quy định

Code

SELECT TENNL, SOLUONG, DONVI FROM NGUYENLIEU WHERE (SOLUONG <= 1000) AND (DONVI = 'g') OR (SOLUONG <= 2) AND (DONVI = N'gói') OR (SOLUONG <= 500) AND (DONVI = 'ml') OR (SOLUONG <= 2) AND (DONVI = N'cái')

Kết quả test

Câu 15. Hãy liệt kê loại nguyên liệu được sử dụng nhiều nhất kg, hộp, gói, ml

Code

SELECT NGUYENLIEU.MANL, NGUYENLIEU.TENNL, SUM(CHITIET_CONGTHUC.SOLUONG) AS SOLUONG_DUNG, NGUYENLIEU.DONVI FROM NGUYENLIEU INNER JOIN CHITIET_CONGTHUC ON NGUYENLIEU.MANL = CHITIET_CONGTHUC.MANL INNER JOIN THUCUONG ON CHITIET_CONGTHUC.MATU = THUCUONG.MATU GROUP BY NGUYENLIEU.MANL, NGUYENLIEU.TENNL, NGUYENLIEU.DONVI HAVING SUM(CHITIET_CONGTHUC.SOLUONG) = (SELECT TOP 1 SUM(CHITIET_CONGTHUC.SOLUONG) AS SOLUONG_DUNG FROM NGUYENLIEU INNER JOIN CHITIET_CONGTHUC ON NGUYENLIEU.MANL = CHITIET_CONGTHUC.MANL INNER JOIN THUCUONG ON CHITIET_CONGTHUC.MATU = THUCUONG.MATU GROUP BY NGUYENLIEU.MANL, NGUYENLIEU.TENNL, NGUYENLIEU.DONVI ORDER BY SUM(CHITIET_CONGTHUC.SOLUONG) DESC)

Kết quả test

Page 46: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

46

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

4. Thủ tục (10 câu Producer):

Câu 1. Hãy viết thủ tục thêm một nhân viên vào bảng NHANVIEN với tham số

truyền vào là mã nhân viên, tên nhân viên, mã chức chức vụ, mã chi nhánh, giới

tính, ngày vào, ngày nghĩ (có thể null). Kiểm tra ngày vào phải lớn hơn ngày

thành lập hệ thống (01/01/2013) và ràng buộc tồn tại các mã chức vụ, mã chi

nhánh.

Code

CREATE PROCEDURE THEM_NHANVIEN @MANV char(5), @TENNV NVARCHAR(100), @MACV char(3), @MACN char(5), @NGAYSINH datetime, @GIOITINH bit, @NGAYVAO DATETIME, @NGAYNGHI DATETIME AS BEGIN if exists(select * from CHUCVU where CHUCVU.MACV=@MACV) BEGIN if exists(select * from CHINHANH where CHINHANH.MACN=@MACN) BEGIN if(@NGAYVAO>'01/01/2013') INSERT INTO NHANVIEN VALUES (@MANV,@TENNV,@MACV,@MACN,@NGAYSINH,@GIOITINH,@NGAYVAO,@NGAYNGHI) else print N'Lỗi ngày vào < ngày thành lập' END else print N'Lỗi không tồn tại MACN ' END else print N'Lỗi không tồn tại MACV ' END

Câu 16. Hãy thống kê tổng chi

Code SELECT SUM(TONGTIEN) AS TongTien FROM PHIEUCHI

Kết quả test

Câu 17. Viết câu lệnh để thống kê tổng phụ thu

Code SELECT SUM(SOTIEN) AS TongTien FROM PHIEUPHUTHU

Kết quả test

Page 47: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

47

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Test 2 EXECUTE THEM_NHANVIEN ‘NV17’, N’Vũ Nguyên Vũ’,’CV2’,’CN1’,’9/1/1994’,1,’01/01/2014’,NULL

Kết quả test 1

Test 2 EXECUTE THEM_NHANVIEN 'NV206', N'Lâm Tùng Nhân 1','CV7','CN1','9/21/1994',0,'01/01/2010',NULL

Kết quả test 2

Test 3 EXECUTE THEM_NHANVIEN 'NV206', N'Lâm Tùng Nhân 1','CV1','CN11','9/21/1994',0,'01/01/2010',NULL

Kết quả test 3

Test 4 EXECUTE THEM_NHANVIEN 'NV206', N'Lâm Tùng Nhân 1','CV1','CN1','9/21/1994',0,'01/01/2010',NULL

Kết quả test 4

Câu 2. Viết thủ tục thêm một thức uống vào bảng THUCUONG với tham số

truyền vào là mã thức uống, mã loại thức uống, tên thức uống, đơn giá. Kiểm

tra tham số vào (kiểm tra tồn tại mã loại thức uống).

Code

CREATE PROCEDURE THEM_THUCUONG @MATU char(5), @MALOAI char(5), @TENTU NVARCHAR(100), @DONGIA DECIMAL(18,0) AS BEGIN if exists (select * from LOAITHUCUONG where LOAITHUCUONG .MALOAI=@MALOAI) INSERT INTO THUCUONG VALUES (@MATU,@MALOAI,@TENTU,@DONGIA) else print N'Lỗi không tồn tại loại thức uống, kiểm tra mã loại'

Test 1 EXECUTE THEM_THUCUONG 'TU80','sod','Soda choco',50000

Page 48: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

48

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test 1

Test 2 EXECUTE THEM_THUCUONG 'TU82','dd','Soda choco',50000

Kết quả test 2

Câu 3. Viết thủ tục thêm mới một loại thức uống mới vào bảng

LOAITHUCUONG với tham số truyền vào là mã loại, tên loại thức uống.

Code

CREATE PROCEDURE THEM_LOAITHUCUONG @MALOAI char(5), @TENLOAI NVARCHAR (100) AS BEGIN INSERT INTO LOAITHUCUONG VALUES (@MALOAI,@TENLOAI) END

Test EXECUTE THEM_LOAITHUCUONG 'skin','Tomato'

Kết quả test

(thành công)

Page 49: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

49

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 4. Viết thủ tục thêm mới một nguyên vào bảng NGUYENLIEU với tham

số đầu vào là mã nguyên liệu, tên nguyên liệu, số lượng, đơn vị.

Code

CREATE PROCEDURE THEM_NGUYENLIEU @MANL char(10), @TENNL NVARCHAR (100), @SOLUONG FLOAT, @DONVI NVARCHAR(25) AS BEGIN INSERT INTO NGUYENLIEU VALUES (@MANL,@TENNL,@SOLUONG,@DONVI) END

Test EXECUTE THEM_NGUYENLIEU 'NL1','tomato',5,'kg'

Kết quả test

(thành công)

Câu 5. Viết thủ tục để cập nhật thông tin của một thức uống trong bảng

THUCUONG với tham số đầu vào là mã thức uống, mã loại thức uống, tên thức

uống, đơn giá. Kiểm tra ràng buộc tồn tại thức uống và mã loại thức uống.

Code

CREATE PROC SUA_THUCUONG @MATU char(5), @MALOAI char (5), @TENTU NVARCHAR(100), @DONGIA DECIMAL(18,0) AS BEGIN if exists (select * from THUCUONG WHERE THUCUONG.MATU=@MATU) if exists (select * from LOAITHUCUONG WHERE LOAITHUCUONG.MALOAI=@MALOAI) UPDATE THUCUONG SET MALOAI=@MALOAI,TENTU=@TENTU,DONGIA=@DONGIA FROM THUCUONG WHERE MATU = @MATU else print N'Lỗi, không tồn tại MÃ LOẠI THỨC UỐNG' else print N'Lỗi, không tồn tại THỨC UỐNG này'

Page 50: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

50

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

END

Test 1 EXECUTE SUA_THUCUONG 'TU1','hot',N'ESPRESSO',30000

Kết quả test 1

(thành công)

Test 2 EXECUTE SUA_THUCUONG 'TU1','hotqq',N'ESPRESSO',30000

Kết quả test 2

Test 3 EXECUTE SUA_THUCUONG 'TU100','hot',N'ESPRESSO',30000

Kết quả test 3

Câu 6. Viết thủ tục liệt kê các thức uống thuộc một loại thức uống bất kì, với

tham số truyền vào là tên loại. Kiểm tra ràng buộc tồn tại tên loại.

Code

CREATE PROC LIETKE_THUCUONG @TENLOAI NVARCHAR(100) AS BEGIN if exists (select * from THUCUONG WHERE TENTU LIKE @TENLOAI) SELECT THUCUONG.TENTU,THUCUONG.DONGIA FROM THUCUONG,LOAITHUCUONG WHERE THUCUONG.MALOAI= LOAITHUCUONG.MALOAI AND LOAITHUCUONG.TENLOAI = @TENLOAI else print N'Lỗi không tồn tại loại thức uống này' END

Test 1 EXECUTE LIETKE_THUCUONG N'Soda'

Page 51: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

51

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test 1

(thành công)

Test 2 EXECUTE LIETKE_THUCUONG N'Sodakk'

Kết quả test 2

(thành công)

Câu 7. Viết thủ tục liệt kê thông tin tất cả các nguyên liệu (tên nguyên liệu, số

lượng tồn kho, đơn vị) của một thức uống bất kì, với tham số truyền vào là tên

thức uống. Kiểm tra ràng buộc tồn tại tên thức uống.

Code

CREATE PROC LIETKE_NGUYENLIEU_THUCUONG @TENTU NVARCHAR(100) AS BEGIN if exists (select * from THUCUONG where THUCUONG.TENTU like @TENTU) SELECT THUCUONG.TENTU AS 'Thức Uống',NGUYENLIEU.TENNL AS 'Nguyên liệu',NGUYENLIEU.SOLUONG as 'Số Lượng',NGUYENLIEU.DONVI AS 'Đơn vị' FROM THUCUONG INNER JOIN CHITIET_CONGTHUC ON THUCUONG.MATU = CHITIET_CONGTHUC.MATU INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE THUCUONG.TENTU=@TENTU else print N'Lỗi không tồn tại tên thức uống này' END

Test 1 EXECUTE LIETKE_NGUYENLIEU_THUCUONG N'Iced Greentea'

Kết quả test 1

Test 2 EXECUTE LIETKE_NGUYENLIEU_THUCUONG N'Iced Greentea qqq'

Page 52: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

52

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test 2

Câu 8. Viết thủ tục liệt kê tên các nguyên liệu của một nhà cung cấp bất kì, với

tham số đầu vào là tên nhà cung cấp, kiểm tra ràng buộc tồn tại tên nhà cung

cấp.

Code

CREATE PROC LIETKE_NGUYENLIEU_NCC @TENNCC NVARCHAR(100) AS BEGIN if exists (select * from NHACUNGCAP where NHACUNGCAP.TENNCC like @TENNCC) SELECT NGUYENLIEU.TENNL FROM PHIEUNHAP INNER JOIN NHACUNGCAP ON PHIEUNHAP.MANCC = NHACUNGCAP.MANCC INNER JOIN CHITIET_PHIEUNHAP ON PHIEUNHAP.MAPN = CHITIET_PHIEUNHAP.MAPN INNER JOIN NGUYENLIEU ON CHITIET_PHIEUNHAP.MANL = NGUYENLIEU.MANL WHERE(NHACUNGCAP.TENNCC = @TENNCC) else print N'lỗi, không tồn tại tên nhà cung cấp này'

Test 1 EXECUTE LIETKE_NGUYENLIEU_NCC N'Phương Hà 1'

Kết quả test 1

(thành công)

Test 2 EXECUTE LIETKE_NGUYENLIEU_NCC N'Phương Hà 10'

Kết quả test 2

Câu 9. Viết thủ tục tăng giá của một thức uống bất kì vơi tham số truyền vào là

tên thức uống và hệ số giá. Điều kiện tên thức uống tồn tại và hệ số tăng giá phải

nhỏ hơn 1 đồng thời không nhỏ hơn -0.5 .

Code

CREATE PROC SUA_THUCUONG_GIA @TENTU NVARCHAR(100), @TĂNG FLOAT AS BEGIN if exists(select * from THUCUONG where TENTU like @TENTU) if(@TĂNG<=1 and @TĂNG>=-0.5) UPDATE THUCUONG SET DONGIA=DONGIA+ DONGIA*@TĂNG

Page 53: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

53

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

FROM THUCUONG WHERE TENTU=@TENTU else print N'lỗi, hệ số tăng quá 1' else print N'lỗi, không tồn tại thức uống này' END

Test 1 EXECUTE SUA_THUCUONG_GIA N'Espresso',0.5

Kết quả test 1

(thành công)

Test 2 EXECUTE SUA_THUCUONG_GIA N'Espresso',1.5 EXECUTE SUA_THUCUONG_GIA N'Espresso xxx',0.5

Kết quả test 2

Câu 10. Viết thủ tục tính tổng tiền phụ thu của một chi nhánh bất kì trong thời

gian bất kì. Với tham số truyền vào là tên chi nhánh, thời gian bắt đầu và thời

gian kết thúc. Điều kiện ràng buộc thời gian bắt đầu phải trước thời gian kết

thúc.

Code

CREATE PROC PHUTHU_CHINHANH @TENCN NVARCHAR(100), @THANGNAM1 datetime, @THANGNAM2 datetime AS BEGIN if(@THANGNAM1<=@THANGNAM2) SELECT SUM(PHIEUPHUTHU.SOTIEN) AS 'Tổng Tiền' FROM PHIEUPHUTHU,NHANVIEN,CHINHANH WHERE PHIEUPHUTHU.MANV=NHANVIEN.MANV AND NHANVIEN.MACN=CHINHANH.MACN AND CHINHANH.TENCN=@TENCN AND PHIEUPHUTHU.NGAYLAP<=@THANGNAM2 AND PHIEUPHUTHU.NGAYLAP>=@THANGNAM1 else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test 1 EXECUTE PHUTHU_CHINHANH 'CHI NHÁNH 1', '01/01/2015', '09/21/2015'

Page 54: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

54

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test 1

Test 2 EXECUTE PHUTHU_CHINHANH 'CHI NHÁNH 1','10/01/2015','09/21/2015'

Kết quả test 2

Câu 11. Viết thủ tục tìm thức uống bán chạy nhất của chi nhánh bất kì trong

khoảng thời gian bất kì, với tham số truyền vào là tên chi nhánh, thời gian bắt

đầu và thời gian kết thúc. Điều kiện thời gian bắt đầu trước thời gian kết thúc.

Code

--tao view create view SO_LUONG_BAN_THUC_UONG_CHINHANH as SELECT THUCUONG.TENTU, THUCUONG.DONGIA,HOADON.NGAYLAP,CHINHANH.TENCN, SUM(CHITIET_HOADON.SOLUONG) AS 'SOLUONGBAN' FROM HOADON INNER JOIN CHITIET_HOADON ON HOADON.MAHD = CHITIET_HOADON.MAHD INNER JOIN THUCUONG ON CHITIET_HOADON.MATU = THUCUONG.MATU INNER JOIN NHANVIEN ON NHANVIEN.MANV=HOADON.MANV INNER JOIN CHINHANH ON NHANVIEN.MACN=CHINHANH.MACN GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA,HOADON.NGAYLAP,CHINHANH.TENCN --proc CREATE PROC TIM_THUCUONG_BANCHAY_CHINHANH @TENCN NVARCHAR(100), @THANGNAM1 datetime, @THANGNAM2 datetime AS BEGIN if(@THANGNAM1<=@THANGNAM2) SELECT TENTU,SUM(SOLUONGBAN) AS 'SOLUONGBAN',TENCN FROM SO_LUONG_BAN_THUC_UONG_CHINHANH WHERE NGAYLAP<=@THANGNAM2 AND NGAYLAP>=@THANGNAM1 AND TENCN=@TENCN GROUP BY TENTU,TENCN HAVING SUM(SOLUONGBAN) = (SELECT TOP 1 SUM(SOLUONGBAN) FROM SO_LUONG_BAN_THUC_UONG_CHINHANH WHERE NGAYLAP<=@THANGNAM2 AND NGAYLAP>=@THANGNAM1 AND TENCN=@TENCN GROUP BY TENTU ORDER BY SUM(SOLUONGBAN) DESC) else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END GO EXECUTE TIM_THUCUONG_BANCHAY_CHINHANH 'CHI NHÁNH 1','01/01/2015','09/21/2015'

Test 1 EXECUTE TIM_THUCUONG_BANCHAY_CHINHANH 'CHI NHÁNH 1', '01/01/2015','09/21/2015'

Page 55: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

55

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Test 2 EXECUTE TIM_THUCUONG_BANCHAY_CHINHANH 'CHI NHÁNH 1','10/01/2015','09/21/2015'

Kết quả test 2

Câu 12. Viết thủ tục tìm thức uống bán chạy nhất của hệ thống trong khoảng

thời gian bất kì, với tham số truyền vào là thời gian bắt đầu và thời gian kết thúc.

Điều kiện thời gian bắt đầu trước thời gian kết thúc.

Code

create view SO_LUONG_BAN_THUC_UONG as SELECT THUCUONG.TENTU, THUCUONG.DONGIA,HOADON.NGAYLAP, SUM(CHITIET_HOADON.SOLUONG) AS 'SOLUONGBAN' FROM THUCUONG INNER JOIN CHITIET_HOADON ON THUCUONG.MATU = CHITIET_HOADON.MATU INNER JOIN HOADON ON CHITIET_HOADON.MAHD = HOADON.MAHD GROUP BY THUCUONG.TENTU, THUCUONG.DONGIA,HOADON.NGAYLAP CREATE PROC TIM_THUCUONG_BANCHAY_HETHONG1 @THANGNAM1 datetime, @THANGNAM2 datetime AS BEGIN if(@THANGNAM1<=@THANGNAM2) SELECT TENTU,SUM(SOLUONGBAN) AS 'SOLUONGBAN' FROM SO_LUONG_BAN_THUC_UONG WHERE NGAYLAP<=@THANGNAM2 AND NGAYLAP>=@THANGNAM1 GROUP BY TENTU HAVING SUM(SOLUONGBAN) = (SELECT TOP 1 SUM(SOLUONGBAN) AS 'SOLUONGBAN' FROM SO_LUONG_BAN_THUC_UONG WHERE NGAYLAP<=@THANGNAM2 AND NGAYLAP>=@THANGNAM1 GROUP BY TENTU ORDER BY SUM(SOLUONGBAN) DESC) else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test EXECUTE TIM_THUCUONG_BANCHAY_HETHONG1 '01/01/2015','09/21/2015'

Kết quả test

Câu 13. Viết thủ tục dùng để tìm những thức uống không bán được của chi

nhánh bất kì trong khoảng thời gian nào đó. Với tham số đầu vào là tên chi

nhánh, thời gian bắt đầu và thời gian kết thúc.

Code

CREATE PROC TIM_THUCUONG_KOBANDC_CHINHANH @TENCN NVARCHAR(100), @THANGNAM1 datetime, @THANGNAM2 datetime AS

Page 56: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

56

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

BEGIN if(@THANGNAM1<=@THANGNAM2) SELECT MATU,TENTU,DONGIA FROM THUCUONG WHERE MATU NOT IN (SELECT CHITIET_HOADON.MATU FROM CHITIET_HOADON,HOADON,NHANVIEN,CHINHANH WHERE CHITIET_HOADON.MAHD=HOADON.MAHD AND NHANVIEN.MANV=HOADON.MANV AND CHINHANH.MACN=NHANVIEN.MACN AND HOADON.NGAYLAP<=@THANGNAM2 AND HOADON.NGAYLAP>=@THANGNAM1 AND CHINHANH.TENCN=@TENCN) else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test EXECUTE TIM_THUCUONG_KOBANDC_CHINHANH 'CHI NHÁNH 1','01/01/2015','09/21/2015'

Kết quả test

Câu 14. Viết thủ tục liệt kê các loại nguyên liệu (tên, số lượng tồn, đơn vị) của

một phiếu nhập bất kì, với tham số đầu vào là mã phiếu nhập.

Code

CREATE PROC LOC_NGUYENLIEU @MAPN CHAR(10) AS BEGIN SELECT NGUYENLIEU.TENNL AS 'TÊN NGUYÊN LIỆU', NGUYENLIEU.SOLUONG AS 'SỐ LƯỢNG', NGUYENLIEU.DONVI AS 'ĐƠN VỊ' FROM NGUYENLIEU,CHITIET_PHIEUNHAP WHERE CHITIET_PHIEUNHAP.MAPN=@MAPN END

Test EXECUTE LOC_NGUYENLIEU 'PN1'

Kết quả test

Page 57: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

57

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 15. Viết thủ tục tính tổng doanh thu của hệ thống trong khoảng thời gian

bất kì. Với tham số đầu vào là thời gian bắt đầu, thời gian kết thúc. Tham sô đầu

ra là tổng doanh thu của hệ thống (doanh thu= tổng tiền hóa đơn + tổng tiền phụ

thu).

Code

CREATE PROC THONGKE_TONGTHU @THANGNAM1 datetime, @THANGNAM2 datetime, @@TONGTHU FLOAT OUTPUT AS BEGIN if(@THANGNAM1<=@THANGNAM2) begin select sum(HOADON.TONGTIEN)+ (SELECT sum(PHIEUPHUTHU.SOTIEN) from PHIEUPHUTHU WHERE PHIEUPHUTHU.NGAYLAP>=@THANGNAM1 AND PHIEUPHUTHU.NGAYLAP<=@THANGNAM2) AS N'Tổng thu' from HOADON WHERE HOADON.NGAYLAP>=@THANGNAM1 AND HOADON.NGAYLAP <=@THANGNAM2 select @@TONGTHU= sum(HOADON.TONGTIEN)+ (SELECT sum(PHIEUPHUTHU.SOTIEN) from PHIEUPHUTHU WHERE PHIEUPHUTHU.NGAYLAP>=@THANGNAM1 AND PHIEUPHUTHU.NGAYLAP<=@THANGNAM2) from HOADON WHERE HOADON.NGAYLAP>=@THANGNAM1 AND HOADON.NGAYLAP <=@THANGNAM2 end else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test

declare @@TONGTHUHETHONG float EXECUTE THONGKE_TONGTHU '01/01/2015','12/31/2015',@@TONGTHUHETHONG OUTPUT if(@@TONGTHUHETHONG>100000) PRINT N'TỔNG THU HỆ THỐNG LÀ :' + CAST(@@TONGTHUHETHONG AS NVARCHAR(100)) else PRINT N'TỔNG THU HỆ THỐNG ÍT THẾ!'

Kết quả test

Page 58: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

58

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 16. Viết thủ tục tính tổng chi tiêu của hệ thống trong khoảng thời gian bất

kì. Với tham số đầu vào là thời gian bắt đầu, thời gian kết thúc. Tham sô đầu ra

là tổng tiền chi của hệ thống (tổng chi= tổng tiền phiếu nhập + tổng tiền phiếu

chi).

Code

CREATE PROC THONGKE_TONGCHI @THANGNAM1 datetime, @THANGNAM2 datetime, @@TONGCHI FLOAT OUTPUT AS BEGIN if(@THANGNAM1<=@THANGNAM2) begin select sum(PHIEUNHAP.TONGTIEN)+ (SELECT sum(PHIEUCHI.TONGTIEN) from PHIEUCHI WHERE PHIEUCHI.NGAYLAP>=@THANGNAM1 AND PHIEUCHI.NGAYLAP <=@THANGNAM2) AS N'TỔNG CHI HỆ THỐNG' FROM PHIEUNHAP WHERE PHIEUNHAP.NGAYLAP>=@THANGNAM1 AND PHIEUNHAP.NGAYLAP <=@THANGNAM2 select @@TONGCHI= sum(PHIEUNHAP.TONGTIEN)+ (SELECT sum(PHIEUCHI.TONGTIEN) from PHIEUCHI WHERE PHIEUCHI.NGAYLAP>=@THANGNAM1 AND PHIEUCHI.NGAYLAP <=@THANGNAM2) FROM PHIEUNHAP WHERE PHIEUNHAP.NGAYLAP>=@THANGNAM1 AND PHIEUNHAP.NGAYLAP <=@THANGNAM2 end else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test

declare @@TONGCHIHETHONG float EXECUTE THONGKE_TONGCHI '01/01/2015','12/31/2015' ,@@TONGCHIHETHONG OUTPUT if(@@TONGCHIHETHONG>100000) PRINT N'TỔNG CHI HỆ THỐNG LÀ :' + CAST(@@TONGCHIHETHONG AS NVARCHAR(100)) else PRINT N'TỔNG CHI HỆ THỐNG ÍT THẾ!'

Kết quả test

Câu 17. Viết thủ tục tính lợi nhuận của hệ thống trong khoảng thời gian bất kì.

Với tham số đầu vào là thời gian bắt đầu, thời gian kết thúc. Tham sô đầu ra là

tổng lợi nhuận của hệ thống (lợi nhuận = tổng doanh thu - tổng chi).

Code

CREATE PROC THONGKE_LOINHUAN @THANGNAM1 datetime, @THANGNAM2 datetime, @@loinhuan float output AS BEGIN if(@THANGNAM1<=@THANGNAM2) begin select sum(HOADON.TONGTIEN)+ (SELECT sum(PHIEUPHUTHU.SOTIEN) from PHIEUPHUTHU WHERE PHIEUPHUTHU.NGAYLAP>=@THANGNAM1 AND PHIEUPHUTHU.NGAYLAP<=@THANGNAM2) -(select sum(PHIEUNHAP.TONGTIEN) +(SELECT sum(PHIEUCHI.TONGTIEN) from PHIEUCHI WHERE PHIEUCHI.NGAYLAP>=@THANGNAM1 AND PHIEUCHI.NGAYLAP <=@THANGNAM2 )

Page 59: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

59

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

FROM PHIEUNHAP WHERE PHIEUNHAP.NGAYLAP>=@THANGNAM1 AND PHIEUNHAP.NGAYLAP <=@THANGNAM2) FROM HOADON WHERE HOADON.NGAYLAP>=@THANGNAM1 AND HOADON.NGAYLAP <=@THANGNAM2 select @@loinhuan= sum(HOADON.TONGTIEN)+ (SELECT sum(PHIEUPHUTHU.SOTIEN) from PHIEUPHUTHU WHERE PHIEUPHUTHU.NGAYLAP>=@THANGNAM1 AND PHIEUPHUTHU.NGAYLAP<=@THANGNAM2) -(select sum(PHIEUNHAP.TONGTIEN)+ (SELECT sum(PHIEUCHI.TONGTIEN) from PHIEUCHI WHERE PHIEUCHI.NGAYLAP>=@THANGNAM1 AND PHIEUCHI.NGAYLAP <=@THANGNAM2 ) FROM PHIEUNHAP WHERE PHIEUNHAP.NGAYLAP>=@THANGNAM1 AND PHIEUNHAP.NGAYLAP <=@THANGNAM2) FROM HOADON WHERE HOADON.NGAYLAP>=@THANGNAM1 AND HOADON.NGAYLAP <=@THANGNAM2 end else print N'lỗi, thời gian bắt đầu sau thời gian kết thúc' END

Test

declare @@loinhuanhhethong float EXECUTE THONGKE_LOINHUAN '01/01/2015','12/31/2015',@@loinhuanhhethong output --dùng biến ra if(@@loinhuanhhethong>100000) PRINT N'TỔNG lợi nhuận LÀ LÀ :' + CAST(@@loinhuanhhethong AS NVARCHAR(100)) else PRINT N'LỢI NHUÂN ÍT THẾ!'

Kết quả test

Câu 18. Viết thủ tục tính tổng số tiền doanh thu của hệ thống trong một ngày

bất kì với tham số đầu vào là ngày và tham số đầu ra là tổng doanh thu của

ngày đó.

Code

create proc tienmoingay @ngay datetime, @tongtien float output as BEGIN select sum(HOADON.TONGTIEN) AS N'Tổng tiền' from HOADON where NGAYLAP=@ngay; select @tongtien=sum(HOADON.TONGTIEN) from HOADON where NGAYLAP=@ngay; END

Test

DECLARE @TIEN FLOAT EXECUTE tienmoingay '01/20/2014',@TIEN OUTPUT --SỬ DỤNG BIẾN OUTPUT @TIEN IF(@TIEN>1000) PRINT N'TỔNG TIỀN LÀ :' + CAST(@TIEN AS NVARCHAR(100)) Else PRINT N'Ế QUÁ'

Page 60: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

60

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Kết quả test

Câu 19. Viết một thủ tục với tùy chọn ‘with encryption’, mã hóa không cho

người dùng xem được nội dung của thủ tục.

Code create proc mahoa with encryption as select * from HOADON

Test 1 EXEC sp_helptext mahoa (xem nội dung bằng thủ tục hệ thống sp_helptext)

Kết quả test 1

Test lần 2

select syscomments.id,syscomments.text from syscomments,sysobjects where syscomments.id=sysobjects.id and sysobjects.name='mahoa'

Kết quả test 2

5. Trigger

Câu 1. Viết Trigger bắt lỗi cho lệnh Insert vào bảng CHITIET_HOADON.

Khi thêm chi tiết hóa đơn thì kiểm tra trùng mã, kiểm tra nhập số lượng ấm, thông

báo không đủ nguyên liệu nếu hết và phải giảm số lượng tồn của nguyên liệu nếu

thỏa các điêu kiện còn lại.

CREATE Trigger KT_INSERT_CTHD On CHITIET_HOADON instead of Insert As Declare @matu char(5); Declare @mahd char(50); Declare @SL float; Declare @D int; Declare @trungma int; --lấy các thông số Select @matu=MATU FROM inserted; Select @mahd=MAHD FROM inserted; Select @trungma= COUNT(*) from CHITIET_HOADON WHERE MAHD=@mahd AND MATU=@matu; SELECT @SL= INSERTED.SOLUONG FROM INSERTED --kiểm tra trùng mã

Page 61: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

61

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ, BẠN KHÔNG THỂ THÊM VÀO'; RollBack Tran Return END ELSE --kiểm tra nhập số âm IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm END ELSE -- kiểm tra đủ hàng để bán hay không BEGIN Select @D = Count( * ) from NGUYENLIEU nl inner join CHITIET_CONGTHUC ctct on nl.MANL = ctct.MANL inner join THUCUONG tu on tu.MATU = ctct.MATU inner join inserted cttd on cttd.MATU = tu.MATU Where nl.SOLUONG - (ctct.SOLUONG*@SL) < 0 IF (@D > 0 ) BEGIN PRINT N'không đủ nguyên liệu để bán '+ cast (@SL as nvarchar(10)) + N' ly cho thức uống này'; --thông báo chỉ còn có thể bán bao nhiêu ly Declare @kt int; Declare @kt2 int; Declare @kt1 int; select @kt=SOLUONG from inserted; set @kt1=0; WHILE(@kt1=0 and @kt>0) BEGIN Select @kt2 = Count(*) from NGUYENLIEU nl inner join CHITIET_CONGTHUC ctct on nl.MANL = ctct.MANL inner join THUCUONG tu on tu.MATU = ctct.MATU inner join inserted cttd on cttd.MATU = tu.MATU Where nl.SOLUONG - (ctct.SOLUONG*@kt) <0 If (@kt2<=0) begin SET @kt1=1; end SET @kt=@kt-1; END SET @kt=@kt+1; Print N'NGUYÊN LIỆU CHỈ CÒN DỦ ĐỂ SỬ DỤNG CHO '+ cast (@kt as nvarchar(10)) +N' ly' Return End else --thỏa mãn thì thực hiện insert và giảm số lượng tồn cho nguyên liệu begin --insert INSERT INTO CHITIET_HOADON VALUES (@matu,@mahd,@SL); --giảm số lượng tồn Update nl Set nl.SOLUONG = nl.SOLUONG -(ctct.SOLUONG*@SL) from NGUYENLIEU nl inner join CHITIET_CONGTHUC ctct on nl.MANL = ctct.MANL inner join THUCUONG tu on tu.MATU = ctct.MATU inner join inserted cttd on cttd.MATU = tu.MATU end END

Test:

Page 62: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

62

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

INSERT INTO CHITIET_HOADON VALUES('TU9','CN1KV101',2); INSERT INTO CHITIET_HOADON VALUES('TU9','CN1KV101',5); select * from CHITIET_HOADON where MATU='TU9' AND MAHD='CN1KV101' select * from CHITIET_CONGTHUC where MATU='TU9' select * from NGUYENLIEU where MANL='milk' OR MANL='sy-ca' OR MANL='sugar-q'

Kết quả test:

Câu 2. Viết Trigger bắt lỗi cho lệnh Update vào bảng CHITIET_HOADON.

Khi sửa số lượng thức uống trong chi tiết hóa đơn thì phải sửa số lượng tồn của

nguyên liệu CREATE TRIGGER UPDATE_CHITIET_HOADON ON CHITIET_HOADON FOR UPDATE AS Declare @SL float Declare @SL_Truockhisua float Declare @MATU char(5) SELECT @SL= INSERTED.SOLUONG,@MATU= INSERTED.MATU FROM INSERTED SELECT @SL_Truockhisua= DELETED.SOLUONG FROM DELETED IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm END

Chi tiết hóa đơn đã được nhập

Chi tiết công thức của TU9

Nguyên liệu trước và sau khi bán TU9

Thêm chi tiết hóa đơn có MAHD và MATU trùng sẽ cảnh báo

Page 63: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

63

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

--Ngược lại ELSE IF(@SL_Truockhisua>@SL) -- cộng vào NL UPDATE NGUYENLIEU SET NGUYENLIEU.SOLUONG= (@SL_Truockhisua-@SL)*CHITIET_CONGTHUC.SOLUONG + NGUYENLIEU.SOLUONG FROM THUCUONG INNER JOIN CHITIET_CONGTHUC ON THUCUONG.MATU = CHITIET_CONGTHUC.MATU INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE CHITIET_CONGTHUC.MATU =@MATU ELSE IF(@SL_Truockhisua<@SL) --Trừ NL UPDATE NGUYENLIEU SET NGUYENLIEU.SOLUONG =NGUYENLIEU.SOLUONG - (@SL-@SL_Truockhisua)*CHITIET_CONGTHUC.SOLUONG FROM THUCUONG INNER JOIN CHITIET_CONGTHUC ON THUCUONG.MATU = CHITIET_CONGTHUC.MATU INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE CHITIET_CONGTHUC.MATU =@MATU ELSE PRINT N'Cảnh báo: Số trước khi sửa và sao khi sửa giống nhau' RollBack Tran Return --Dừng, thoát hàm

Test: UPDATE CHITIET_HOADON SET CHITIET_HOADON.SOLUONG=5 FROM CHITIET_HOADON WHERE CHITIET_HOADON.MATU='TU1' AND CHITIET_HOADON.MAHD='CN9KV101' GO SELECT CHITIET_CONGTHUC.SOLUONG, CHITIET_CONGTHUC.MANL, CHITIET_CONGTHUC.MATU, NGUYENLIEU.SOLUONG AS SL_TRONGKHO FROM CHITIET_CONGTHUC INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE (CHITIET_CONGTHUC.MATU = 'TU1') SELECT * FROM CHITIET_HOADON WHERE MATU='TU1' AND CHITIET_HOADON.MAHD='CN9KV101'

Kết quả test:

Câu 3. Viết Trigger bắt lỗi cho lệnh Delete vào bảng CHITIET_HOADON.

Khi xóa chi tiết hóa đơn thì phải tăng số lượng tồn của nguyên liệu kiểm tra nếu

xóa hết mã hóa đơn đó thì xóa lun bên bảng hóa đơn.

CREATE Trigger KT_XOA_CTHD On CHITIET_HOADON for DELETE As BEGIN Declare @SL float; Declare @MAHD char(50); Declare @MATU char(5); SELECT @SL= deleted.SOLUONG FROM deleted; SELECT @MAHD= deleted.MAHD FROM deleted;

Số lượng nguyên liệu của TU1 có trong kho trước và sau khi sửa

Số lượng TU1 trong hóa đơn CN9KV101 thay đổi từ 5 lên 10

Page 64: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

64

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

--tăng lại số lượng nguyên liệu Update nl Set nl.SOLUONG = nl.SOLUONG + (ctct.SOLUONG *@SL) from NGUYENLIEU nl inner join CHITIET_CONGTHUC ctct on nl.MANL = ctct.MANL inner join THUCUONG tu on tu.MATU = ctct.MATU inner join deleted cttd on cttd.MATU = tu.MATU --kiểm tra nếu k tồn tại mã hóa đơn nữa thì xóa bên bảng hóa đơn Declare @kt int; SELECT @kt=COUNT(*) FROM CHITIET_HOADON WHERE MAHD=@MAHD; IF(@kt=0) --xóa bên bảng DELETE FROM HOADON WHERE MAHD=@MAHD; END

Test: SELECT CHITIET_CONGTHUC.SOLUONG, CHITIET_CONGTHUC.MANL, CHITIET_CONGTHUC.MATU, NGUYENLIEU.SOLUONG AS SL_TRONGKHO FROM CHITIET_CONGTHUC INNER JOIN NGUYENLIEU ON CHITIET_CONGTHUC.MANL = NGUYENLIEU.MANL WHERE (CHITIET_CONGTHUC.MATU = 'TU9') INSERT INTO CHITIET_HOADON VALUES ('TU9','CN2KV207',2); delete from CHITIET_HOADON where MATU='TU9' and MAHD='CN2KV207'

Kết quả test:

Câu 4. Viết Trigger bắt lỗi cho lệnh Insert vào bảng

CHITIET_PHIEUNHAP. Khi thêm chi tiết nhập thì kiểm tra trùng mã, bắt không

được nhập số âm phải tăng số lượng tồn của nguyên liệu (nhập hàng)

Create Trigger KT_INSERT_CTPN On CHITIET_PHIEUNHAP INSTEAD OF Insert As Declare @MANL CHAR(10); Declare @MAPN CHAR(10); Declare @SL FLOAT; Declare @trungma int;

SELECT @MANL=MANL FROM inserted; SELECT @MAPN=MAPN FROM inserted; SELECT @SL=SOLUONG FROM inserted;

Select @trungma= COUNT(*) from CHITIET_PHIEUNHAP WHERE MAPN=@MAPN AND MANL=@MANL;

--kiểm tra trùng mã if(@trungma>0) BEGIN

PRINT N'Cảnh báo: trùng mã, đã tồn tại nên bạn không thể thêm được' RollBack Tran Return END ELSE --kiểm tra nhập số âm IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm'

Số lượng nguyên liệu để làm TU9 còn trong kho trước và sau khi xóa CTHD

Page 65: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

65

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

RollBack Tran Return --Dừng, thoát hàm END ELSE --tăng số lượng tồn BEGIN --insert INSERT INTO CHITIET_PHIEUNHAP VALUES (@MANL,@MAPN,@SL); --Tăng số lượng tồn nguyên liệu Update nl Set nl.SOLUONG = nl.SOLUONG + ctpn.SOLUONG from NGUYENLIEU nl inner join CHITIET_PHIEUNHAP ctpn on nl.MANL = ctpn.MANL END

Test: select * from CHITIET_PHIEUNHAP insert into CHITIET_PHIEUNHAP values('apple','PN2',100) select * from NGUYENLIEU where MANL='apple'

Kết quả test:

Câu 5. Viết Trigger bắt lỗi cho lệnh Update vào bảng

CHITIET_PHIEUNHAP. Khi sửa số lượng nguyên liệu trong chi tiết phiếu nhập

thì: không được sửa số âm, phải sửa số lượng tồn của nguyên liệu

CREATE TRIGGER SUA_CHITIET_PHIEUNHAP ON CHITIET_PHIEUNHAP FOR UPDATE AS Declare @SL float Declare @SL_Truockhisua float Declare @MANL char(10) Declare @MAPN char(10)

SELECT @SL= INSERTED.SOLUONG,@MANL= INSERTED.MANL, @MAPN= inserted.MAPN FROM INSERTED

SELECT @SL_Truockhisua= DELETED.SOLUONG FROM DELETED IF(@SL <=0) BEGIN

PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm

END --Ngược lại

ELSE IF(@SL_Truockhisua>@SL) -- Trừ NL UPDATE NGUYENLIEU SET NGUYENLIEU.SOLUONG = NGUYENLIEU.SOLUONG-

(@SL_Truockhisua-@SL) FROM NGUYENLIEU INNER JOIN CHITIET_PHIEUNHAP ON NGUYENLIEU.MANL = CHITIET_PHIEUNHAP.MANL WHERE NGUYENLIEU.MANL=@MANL AND CHITIET_PHIEUNHAP.MAPN=@MAPN

Số lượng nguyên liệu c-mint trước và sau khi thêm phiếu nhập

Số phiếu nhập kẹo c-mint thay đổi trước và sau khi nhập

Page 66: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

66

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

ELSE IF (@SL_Truockhisua<@SL) -- CÔng thêm NL UPDATE NGUYENLIEU SET NGUYENLIEU.SOLUONG = NGUYENLIEU.SOLUONG + (@SL-

@SL_Truockhisua) FROM NGUYENLIEU INNER JOIN CHITIET_PHIEUNHAP ON NGUYENLIEU.MANL = CHITIET_PHIEUNHAP.MANL

WHERE NGUYENLIEU.MANL=@MANL AND CHITIET_PHIEUNHAP.MAPN=@MAPN

ELSE PRINT N'Cảnh báo: Số trước khi sửa và sao khi sửa giống nhau' RollBack Tran

Return --Dừng, thoát hàm

Test: UPDATE CHITIET_PHIEUNHAP SET CHITIET_PHIEUNHAP.SOLUONG=120 FROM CHITIET_PHIEUNHAP WHERE CHITIET_PHIEUNHAP.MANL='apple' AND CHITIET_PHIEUNHAP.MAPN='PN4' GO SELECT CHITIET_PHIEUNHAP.MANL, CHITIET_PHIEUNHAP.MAPN, CHITIET_PHIEUNHAP.SOLUONG, NGUYENLIEU.SOLUONG AS SL_TRONGKHO FROM NGUYENLIEU INNER JOIN CHITIET_PHIEUNHAP ON NGUYENLIEU.MANL = CHITIET_PHIEUNHAP.MANL WHERE (CHITIET_PHIEUNHAP.MANL = 'apple' AND CHITIET_PHIEUNHAP.MAPN='PN4')

Kết quả test:

Câu 6. Viết Trigger bắt lỗi cho lệnh Delete vào bảng

CHITIET_PHIEUNHAP. Khi xóa chi tiết nhập thì phải giảm số lượng tồn của

nguyên liệu, kiểm tra chi tiết phiếu nhập của Mã phiếu nhập vừa xóa còn trong

bảng chi tiết phiếu nhập hay không, nếu không thì xóa phiếu nhập đó bên bảng

PHIẾU NHẬP. CREATE TRIGGER XOA_CT_GIAMSLNL ON CHITIET_PHIEUNHAP FOR DELETE AS BEGIN -- Cap nhat số lượng Nguyên Liệu

UPDATE NGUYENLIEU SET NGUYENLIEU.SOLUONG = NGUYENLIEU.SOLUONG - DELETED.SOLUONG FROM DELETED,NGUYENLIEU WHERE NGUYENLIEU.MANL=DELETED.MANL

END

Test: SELECT * FROM NGUYENLIEU WHERE MANL='apple' SELECT * FROM CHITIET_PHIEUNHAP WHERE MAPN='PN4' AND MANL='apple' DELETE FROM CHITIET_PHIEUNHAP WHERE CHITIET_PHIEUNHAP.MANL = 'apple'

Kết quả test:

Số lượng nguyên liệu apple trước và sau khi xóa

Số lượng nguyên liệu apple trước và sau khi sửa

Page 67: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

67

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 7. Viết Trigger cho lệnh Delete của bảng NHANVIEN. Khi xóa nhân

viên thì tự động xóa các bảng có liên quan ( chỉ xóa nhân viên đã nghĩ hơn 12

tháng) CREATE TRIGGER XOANHANVIEN ON NHANVIEN INSTEAD OF DELETE AS BEGIN Declare @D CHAR(5); declare @HD char(50); declare @PN char(10); declare @ngayvao datetime; declare @ngaynghi datetime; select @D=MANV FROM deleted; select @ngaynghi= NGAYNGHI from deleted; select @ngayvao= NGAYNGHI from deleted; if(@ngaynghi!=NULL) if(@ngaynghi-@ngayvao>12) begin --xóa địa chỉ DELETE FROM DIACHI_NHANVIEN WHERE MANV=@D; --xóa sdt DELETE FROM SDT_NHANVIEN WHERE MANV=@D --xóa email DELETE FROM EMAIL_NHANVIEN WHERE MANV=@D --xóa chi tiết phiếu nhập SELECT @PN=b.MAPN FROM CHITIET_PHIEUNHAP a JOIN PHIEUNHAP b ON a.MAPN=b.MAPN WHERE b.MANV=@D; DELETE FROM CHITIET_PHIEUNHAP WHERE MAPN=@PN; --xóa phiếu nhập DELETE FROM PHIEUNHAP WHERE MAPN=@PN; --xóa phiếu chi DELETE FROM PHIEUCHI WHERE MANV=@D; --xóa phiếu phụ thu DELETE FROM PHIEUPHUTHU WHERE MANV=@D; --xóa chi tiết hóa đơn SELECT @HD=b.MAHD FROM CHITIET_HOADON a JOIN HOADON b ON a.MAHD=b.MAHD WHERE b.MANV=@D; DELETE FROM CHITIET_HOADON WHERE MAHD=@HD; --xóa hóa đơn DELETE FROM HOADON WHERE MAHD=@HD; DELETE FROM NHANVIEN WHERE MANV=@D; END ELSE BEGIN PRINT N'Lỗi: nhân viên này chưa nghĩ hơn 12 tháng' END ELSE BEGIN PRINT N'Lỗi: nhân viên này chưa nghĩ, vui lòng xem lại' END END

Test: SELECT * FROM NHANVIEN WHERE MANV='NV17' DELETE from NHANVIEN WHERE MANV='NV17'

Kết quả test:

Page 68: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

68

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Câu 8. Viết Trigger bắt lỗi tuổi nhân viên khi Insert vào bảng NHANVIEN.

Điều kiện nhân viên phải trên 18 tuổi

CREATE TRIGGER BAY_TUOI ON NHANVIEN INSTEAD OF INSERT as begin Declare @MANV CHAR(5); Declare @TENNV NVARCHAR(100); Declare @MACV CHAR(3); Declare @MACN CHAR(5); Declare @NGAYSINH DATETIME; Declare @GT BIT; Declare @NGAYVAO DATETIME; Declare @NGAYRA DATETIME; select @MANV=MANV from inserted; select @TENNV=TENNV from inserted; select @MACV=MACV from inserted; select @MACN=MACN from inserted; select @NGAYSINH=NGAYSINH from inserted; select @GT=GIOITINH from inserted; select @NGAYVAO=NGAYVAO from inserted; select @NGAYRA=NGAYNGHI from inserted; if exists (select * from NHANVIEN where MANV=@MANV) begin PRINT N'Lỗi: Đã tồn tại nhân viên này' rollback tran end else if exists (select * from inserted WHERE (YEAR(GETDATE())-YEAR(inserted.NGAYSINH))<=18 ) begin PRINT N'Lỗi: Chưa đủ 18 tuổi’ rollback tran end else --insert INSERT INTO NHANVIEN VALUES (@MANV,@TENNV,@MACV,@MACN,@NGAYSINH,@GT,@NGAYVAO,@NGAYRA); End

Test: INSERT INTO NHANVIEN VALUES('NV99',N'Nguyễn','CV1','CN1','03/14/1998',0,'01/01/2015','')

Thông báo xuất hiện khi muốn xóa NV17

Thông tin nhân viên NV17

Page 69: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

69

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

INSERT INTO NHANVIEN VALUES('NV21',N'Nguyễn','CV1','CN1','03/14/1998',0,'01/01/2015','')

Kết quả test:

Câu 9. Viết Trigger bắt lỗi tuổi nhân viên khi Update vào bảng

NHANVIEN. Điều kiện nhân viên phải trên 18 tuổi.

CREATE TRIGGER BAY_TUOI_update ON NHANVIEN FOR UPDATE as begin Declare @MANV CHAR(5); Declare @TENNV NVARCHAR(100); Declare @MACV CHAR(3); Declare @MACN CHAR(5); Declare @NGAYSINH DATETIME; Declare @GT BIT; Declare @NGAYVAO DATETIME; Declare @NGAYRA DATETIME; select @MANV=MANV from inserted; select @TENNV=TENNV from inserted; select @MACV=MACV from inserted; select @MACN=MACN from inserted; select @NGAYSINH=NGAYSINH from inserted; select @GT=GIOITINH from inserted; select @NGAYVAO=NGAYVAO from inserted; select @NGAYRA=NGAYNGHI from inserted; if exists (select * from inserted WHERE (YEAR(GETDATE())-YEAR(inserted.NGAYSINH))<=18 ) begin PRINT N'Lỗi: Chưa đủ 18 tuổi’ rollback tran end end

Câu 10. Viết Trigger bắt lỗi số điện thoại trong bảng SDT_NHANVIEN.

Điều kiện số điện thoại gồm 10 hoặc 11 số, bắt đầu bằng ‘09’ hoặc ’01’.

Create Trigger KT_SDT ON SDT_NHANVIEN AFTER insert, update AS if exists(select * from inserted where SODT not like '[0][9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' AND SODT not like '[0][1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') begin raiserror('Số điện thoại gồm 10 hoặc 11 chữ số, bắt đầu bằng 09 hoặc 01',16,1);

Page 70: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

70

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

rollback end;

Test: INSERT INTO SDT_NHANVIEN VALUES ('NV15', 'DT18', 'a0999123456')

Kết quả test:

Câu 11. Viết Trigger bắt lỗi email trong bảng EMAIL_NCC. Điều kiện

email phải đúng cú pháp ( có đuôi @gmail.com hoặc @gmail.vn) CREATE TRIGGER KT_email_NCC ON EMAIL_NCC FOR INSERT, UPDATE AS if exists(select * from inserted where EMAIL not like '%_@__%.'+'com' AND EMAIL not like '%_@__%.'+'vn') begin raiserror('Nhập không đúng định dạng email',16,1); rollback end;

Test: INSERT INTO EMAIL_NCC VALUES ('NCC9','EM22','@gmail.com')

Kết quả test:

Câu 12. Viết Trigger bắt lỗi email trong bảng EMAIL_NHANVIEN. Điều

kiện email phải đúng cú pháp ( có đuôi @gmail.com hoặc @gmail.vn)

CREATE TRIGGER KT_email_nv ON EMAIL_NHANVIEN FOR INSERT, UPDATE AS if exists(select * from inserted where EMAIL not like '%_@__%.'+'com' AND EMAIL not like '%_@__%.'+'vn') begin raiserror('Nhập không đúng định dạng email',16,1); rollback end;

Câu 13. Viết Trigger bắt lỗi dữ liệu không âm cho các trường số lượng ,

tổng tiền,.. (kiểu số) có các bảng dữ liệu.

CREATE TRIGGER SL_KHONGAM ON CHITIET_CONGTHUC FOR INSERT,UPDATE AS Declare @SL float SELECT @SL= INSERTED.SOLUONG FROM INSERTED

Page 71: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

71

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm

END

Test: INSERT INTO CHITIET_CONGTHUC VALUES ('TU1','milk',-10)

Kết quả test:

==================================================

CREATE TRIGGER SL_KHONGAM ON CHITIET_CONGTHUC FOR INSERT,UPDATE AS Declare @SL float

SELECT @SL= INSERTED.SOLUONG FROM INSERTED IF(@SL <=0) BEGIN

PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm END

==================================================

CREATE TRIGGER SL_KHONGAM_nguyenlieu ON NGUYENLIEU FOR INSERT,UPDATE AS Declare @SL float SELECT @SL= INSERTED.SOLUONG FROM INSERTED IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran

Return --Dừng, thoát hàm

END

==================================================

CREATE TRIGGER SL_KHONGAM_TU ON THUCUONG FOR INSERT,UPDATE AS Declare @SL float SELECT @SL= INSERTED.DONGIA FROM INSERTED IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm

END

==================================================

CREATE TRIGGER SL_KHONGAM_PHUTHU ON PHIEUPHUTHU

Page 72: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

72

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

FOR INSERT,UPDATE AS Declare @SL float SELECT @SL= INSERTED.SOTIEN FROM INSERTED IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số lượng âm' RollBack Tran Return --Dừng, thoát hàm

END

==================================================

CREATE TRIGGER SL_KHONGAM_PHIEUCHI ON PHIEUCHI FOR INSERT,UPDATE AS Declare @SL float SELECT @SL= INSERTED.TONGTIEN FROM INSERTED IF(@SL <=0) BEGIN PRINT N'Lỗi: Không được nhập số TIỀN âm' RollBack Tran Return --Dừng, thoát hàm

END

Câu 14. Ràng buộc nhập (INSERT, UPDATE) không trùng mã

CREATE Trigger KIEMTRA_TRUNGMA On BAOCAO INSTEAD OF Insert As Declare @mabc char(10); Declare @manv char(5); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @mabc=MABC FROM inserted; Select @manv=MANV FROM inserted; Select @trungma= COUNT(*) from BAOCAO WHERE MANV=@manv AND MABC=@mabc; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(100); Declare @ngay datetime; Declare @noidung nvarchar(max); select @ten = TENBC from inserted; select @ngay = NGAYLAP from inserted; select @noidung = NOIDUNG from inserted; INSERT INTO BAOCAO VALUES(@mabc,@manv, @ten,@ngay,@noidung)

END

Test:

Page 73: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

73

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

INSERT INTO BAOCAO VALUES('BC7','NV1',N'Doanh thu quý 4','3/3/2015',N'doanhthu1_2014.pdf')

Kết quả test:

CREATE Trigger KIEMTRA_TRUNG On CHINHANH

INSTEAD OF Insert As Declare @macn char(5); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @macn=MACN FROM inserted; Select @trungma= COUNT(*) from CHINHANH WHERE MACN=@macn ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(100); Declare @hesogia float; select @ten = TENCN from inserted; select @hesogia = HESOGIA from inserted; INSERT INTO CHINHANH VALUES(@macn,@ten,@hesogia)

END

==================================================

CREATE Trigger KIEMTRA_KHUVUC On KHUVUC INSTEAD OF Insert As Declare @makv char(3); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @makv=MAKV FROM inserted; Select @trungma= COUNT(*) from KHUVUC WHERE MAKV=@makv ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(10); Declare @hesogia float; select @ten = TENKV from inserted; select @hesogia = HESOGIA from inserted;

Page 74: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

74

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

INSERT INTO KHUVUC VALUES(@makv,@ten,@hesogia) END

CREATE Trigger KIEMTRA_CHUCVU On CHUCVU INSTEAD OF Insert As Declare @macv char(3); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @macv=MACV FROM inserted; Select @trungma= COUNT(*) from CHUCVU WHERE MACV=@macv ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(50); select @ten = TENCV from inserted; INSERT INTO CHUCVU VALUES(@macv,@ten) END

==================================================

CREATE Trigger KIEMTRA_DIACHINCC On DIACHI_NCC INSTEAD OF Insert As Declare @mancc char(5); Declare @matp char(5); Declare @maq char(5); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @mancc=MANCC FROM inserted; Select @matp=MATP FROM inserted; Select @maq=MAQ FROM inserted; Select @trungma= COUNT(*) from DIACHI_NCC WHERE MANCC=@mancc AND MATP=@matp AND MAQ=@maq ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @diachi nvarchar(100); select @diachi = DIACHI from inserted; INSERT INTO DIACHI_NCC VALUES(@mancc,@matp,@maq,@diachi) END

=================================================

CREATE Trigger KIEMTRA_DIACHINV On DIACHI_NHANVIEN INSTEAD OF Insert As Declare @manv char(5);

Page 75: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

75

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Declare @matp char(5); Declare @maq char(5); Declare @D int; Declare @trungma int; Select @manv=MANV FROM inserted; Select @matp=MATP FROM inserted; Select @maq=MAQ FROM inserted; Select @trungma= COUNT(*) from DIACHI_NHANVIEN WHERE MANV=@manv AND MATP=@matp AND MAQ=@maq ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @diachi nvarchar(100); select @diachi = DIACHI from inserted; INSERT INTO DIACHI_NHANVIEN VALUES(@manv,@matp,@maq,@diachi) END CREATE Trigger KIEMTRA_QUANHUYEN On QUAN_HUYEN INSTEAD OF Insert As Declare @maq char(5); Declare @D int; Declare @trungma int; --kiểm tra trùng mã Select @maq=MAQ FROM inserted; Select @trungma= COUNT(*) from QUAN_HUYEN WHERE MAQ=@maq ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(50); select @ten = TENQ from inserted; INSERT INTO QUAN_HUYEN VALUES(@maq,@ten) END

==================================================

CREATE Trigger KIEMTRA_TINHTP On TINH_THANHPHO INSTEAD OF Insert As Declare @matp char(5); Declare @D int; Declare @trungma int; Select @matp=MATP FROM inserted; Select @trungma= COUNT(*) from TINH_THANHPHO WHERE MATP=@matp ; IF(@trungma>0) BEGIN PRINT N'Cảnh báo: TRÙNG MÃ' RollBack Tran Return END ELSE BEGIN Declare @ten nvarchar(50); select @ten = TENTP from inserted; INSERT INTO TINH_THANHPHO VALUES(@matp,@ten) END

Page 76: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

76

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

6. Phân quyền

Hệ thống có 4 nhóm quyền: BANHANG, KIEMKHO, QUANLY, GIAMDOC

a. BANHANG:

Các thao tác được phép thực hiện:

Xem và thêm vào bảng CHITIET_HOADON.

Xem và thêm vào bảng HOADON.

Xem và thêm vào bảng PHIEUPHUTHU.

Xem và thêm vào bảng PHIEUCHI.

Xem bảng CHITIET_CONGTHUC.

Xem bảng KHUVUC.

Xem bảng CHINHANH.

Xem bảng THUCUONG.

Xem bảng LOAITHUCUONG.

Xem bảng NGUYENLIEU.

Code:

--tạo nhóm quyền với các phân quyền exec sp_addrole BANHANG GRANT SELECT,INSERT ON dbo.CHITIET_HOADON TO BANHANG GRANT SELECT,INSERT ON dbo.HOADON TO BANHANG GRANT SELECT,INSERT ON dbo.PHIEUPHUTHU TO BANHANG GRANT SELECT,INSERT ON dbo.PHIEUCHI TO BANHANG GRANT SELECT ON dbo.CHITIET_CONGTHUC TO BANHANG GRANT SELECT ON KHUVUC TO BANHANG GRANT SELECT ON dbo.CHINHANH TO BANHANG GRANT SELECT ON dbo.THUCUONG TO BANHANG GRANT SELECT ON dbo.LOAITHUCUONG TO BANHANG GRANT SELECT ON dbo.NGUYENLIEU TO BANHANG --LỆNH XÓA QUYỀN REVOKE ON dbo.NGUYENLIEU TO BANHANG --tạo login,tạo user thuộc nhóm quyền --chinhanh 1 --nv1: nguyễn thiện đức exec sp_addlogin nguyenthienduc,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser nguyenthienduc,user1,BANHANG --nv2: huynhanhthu exec sp_addlogin huynhanhthu,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser huynhanhthu,user2,BANHANG --nv3: nguyenthoaimy exec sp_addlogin nguyenthoaimy,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser nguyenthoaimy,user8,BANHANG --nv4:huongnguyen exec sp_addlogin huongnguyen,1,QUAN_LY_QUAN_CAFE_12_8_2015

Page 77: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

77

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

exec sp_adduser huongnguyen,user9,BANHANG --nv5:quocdung exec sp_addlogin quocdung,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser quocdung,user10,BANHANG --nv6:luonganhduy exec sp_addlogin luonganhduy,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser luonganhduy,user11,BANHANG --nv7:tungnhan exec sp_addlogin tungnhan,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser tungnhan,user12,BANHANG

b. KIEMKHO:

Các thao tác được phép thực hiện:

Xem và thêm bảng PHIEUNHAP.

Xem và thêm bảng CHITIET_PHIEUNHAP

Xem và thêm bảng NGUYENLIEU.

Hình 2.1: Kết quả sinh phân quyền BANHAN

Page 78: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

78

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Code:

--tạo nhóm quyền với các phân quyền exec sp_addrole KIEMKHO GRANT SELECT,INSERT ON dbo.PHIEUNHAP TO KIEMKHO GRANT SELECT,INSERT ON dbo.CHITIET_PHIEUNHAP TO KIEMKHO GRANT SELECT,INSERT ON dbo.NGUYENLIEU TO KIEMKHO --add user exec sp_addlogin duongthihuong,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser duongthihuong,user3,KIEMKHO exec sp_addlogin dongquoctien,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser dongquoctien,user6,KIEMKHO exec sp_addlogin trinhxuanluong,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser trinhxuanluong,user7,KIEMKHO exec sp_addlogin ngobaochau,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser ngobaochau,user13,KIEMKHO

Hình 2.2: Kết quả sinh phân quyền KIEMKHO

Page 79: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

79

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

c. QUANLY:

Các thao tác được phép thực hiện:

Xem, thêm và sửa bảng BAOCAO.

Xem, thêm và sửa bảng CHITIET_CONGTHUC.

Xem, thêm và sửa bảng DIACHI_NHANVIEN.

Xem, thêm và sửa bảng CHINHANH.

Xem, thêm và sửa bảng DIACHI_CHINHANH.

Xem, thêm và sửa bảng DIACHI_NCC.

Xem, thêm và sửa bảng EMAIL_NCC.

Xem, thêm và sửa bảng EMAIL_NHANVIEN.

Xem, thêm và sửa bảng KHUVUC.

Xem, thêm và sửa bảng NHANVIEN.

Xem, thêm và sửa bảng QUAN_HUYEN.

Xem, thêm và sửa bảng SDT_CHINHANH.

Xem, thêm và sửa bảng SDT_NHACUNGCAP.

Xem, thêm và sửa bảng SDT_NHANVIEN.

Xem, thêm và sửa bảng TINH_THANHPHO.

Xem, thêm và sửa bảng LOAITHUCUONG.

Xem, thêm và sửa bảng NHACUNGCAP.

Xem và thêm bảng CHITIET_HOADON.

Xem và thêm bảng CHITIET_PHIEUNHAP.

Xem và thêm bảng HOADON.

Xem và thêm bảng PHIEUNHAP.

Xem và thêm bảng PHIEUCHI.

Xem và thêm bảng PHIEUPHUTHU.

Xem và thêm bảng THUCUONG.

Chỉ xem bảng CHUCVU.

Code:

--tạo nhóm quyền với các phân quyền exec sp_addrole QUANLY GRANT SELECT,UPDATE, INSERT ON BAOCAO TO QUANLY GRANT SELECT,UPDATE, INSERT ON dbo.CHITIET_CONGTHUC TO QUANLY

Page 80: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

80

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

GRANT SELECT,UPDATE, INSERT ON dbo.DIACHI_NHANVIEN TO QUANLY GRANT SELECT,UPDATE, INSERT ON dbo.CHINHANH TO QUANLY GRANT SELECT,UPDATE, INSERT ON dbo.DIACHI_CHINHANH TO QUANLY GRANT SELECT,UPDATE, INSERT ON dbo.DIACHI_NCC TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.EMAIL_NCC TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.EMAIL_NHANVIEN TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.KHUVUC TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.NHANVIEN TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.QUAN_HUYEN TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.SDT_CHINHANH TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.SDT_NHACUNGCAP TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.SDT_NHANVIEN TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.TINH_THANHPHO TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.LOAITHUCUONG TO QUANLY --Chỉ xem, nhập GRANT SELECT,INSERT ON dbo.CHITIET_HOADON TO QUANLY GRANT SELECT,INSERT ON dbo.CHITIET_PHIEUNHAP TO QUANLY GRANT SELECT ON dbo.CHUCVU TO QUANLY --[Không ĐƯỢC SỬA XÓA HÓA ĐƠN - TIỀN] GRANT SELECT,INSERT ON dbo.HOADON TO QUANLY GRANT SELECT,INSERT ON dbo.PHIEUNHAP TO QUANLY GRANT SELECT,INSERT ON dbo.PHIEUCHI TO QUANLY GRANT SELECT,INSERT ON dbo.PHIEUPHUTHU TO QUANLY GRANT SELECT,INSERT ON dbo.THUCUONG TO QUANLY GRANT SELECT,INSERT, UPDATE ON dbo.NHACUNGCAP TO QUANLY --add user exec sp_addlogin quanly,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser quanly,user4,QUANLY exec sp_addlogin quanly1,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser quanly1,user15,QUANLY

Hình 2.3: Kết quả sinh phân quyền QUANLY

Page 81: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

81

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

d. GIAMDOC:

Các thao tác được phép thực hiện:

Toàn quyền với tất cả các bảng.

Code:

exec sp_addrole GIAMDOC GRANT ALL PRIVILEGES ON BAOCAO TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.CHITIET_CONGTHUC TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.DIACHI_NHANVIEN TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.CHINHANH TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.DIACHI_CHINHANH TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.DIACHI_NCC TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.EMAIL_NCC TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.EMAIL_NHANVIEN TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.KHUVUC TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.NHACUNGCAP TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.NHANVIEN TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.QUAN_HUYEN TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.SDT_CHINHANH TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.SDT_NHACUNGCAP TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.SDT_NHANVIEN TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.THUCUONG TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.TINH_THANHPHO TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.CHITIET_HOADON TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.CHITIET_PHIEUNHAP TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.HOADON TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.PHIEUNHAP TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.PHIEUCHI TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.CHUCVU TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.LOAITHUCUONG TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.THUCUONG TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.NGUYENLIEU TO GIAMDOC GRANT ALL PRIVILEGES ON dbo.PHIEUPHUTHU TO GIAMDOC --add user exec sp_addlogin giamdoc,1,QUAN_LY_QUAN_CAFE_12_8_2015 exec sp_adduser giamdoc,user5,GIAMDOC

Hình 2.4: Kết quả sinh phân quyền GIAMDOC

Page 82: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

82

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

CHƯƠNG III: TỔNG KẾT

3.1.Ưu điểm:

Hệ thống quản lý tương đối đầy đủ các chức năng quản lý về các khâu

xuất nhập hàng, bán hàng, thống kê doanh thu, lợi nhuận, báo cáo.

Đưa ra được những phương pháp phục vụ cho nhu cầu thức uống của

khách

Quản lý được việc xuất nhập kho

Phân quyền người dùng với từng nhiệm vụ riêng biệt

Dữ liệu có tính tự động cập nhật về số lượng nguyên liệu trong kho

3.2. Khuyết điểm:

Hệ cơ sở dữ liệu chưa triệt để

Bảo mật dữ liệu chưa cao

3.3.Hướng phát triển:

o Tiếp tục nghiên cứu và trau dồi kiến thức, đặc biệt là cơ sở dữ liệu và

kỹ thuật lập trinh đề giải quyết các khuyết điểm trên.

o Nghiên cứu sâu hơn về tính tiến hóa của dữ liệu cũng như tính chính

xác tránh dư thừa.

o Đề ra những phương án sao lưu dữ liệu để tránh những trường hợp sự

cố đáng tiếc sẽ xảy ra.

o Xây dựng bảo mật dữ liệu cao hơn.

Page 83: báo cáo hệ quản trị cơ sỡ dữ liệu hệ thống bán cà phê

83

BÁO CÁO ĐỒ ÁN THỰC TẬP HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

LỜI KẾT

Hệ chuyên gia xử lý sự cố máy tính giúp cho việc tin học hóa trong việc

phát hiện lỗi và sửa chữa máy tính được tốt hơn, chính xác và khoa học hơn, làm

tăng năng suất và hiệu quả công việc. Trên cở sở giúp cho chuẩn đoán “bệnh” một

cách tự động hóa, tránh được những sai sót, những hạn chế, đáp ứng được yêu cầu

lãnh đạo, chỉ đạo của cấp trên trong mọi tình huống kịp thời nhất

Hệ chuyên gia xử lý sự cố máy tính hoàn thành tương đối tốt đáp ứng được

nhu cầu cập nhật, truy vấn thông tin nhanh chóng và giải quyết phần nào quản lý

lưu trữ thông tin. Tuy nhiên, chương trình vẫn còn nhược điểm, thiếu sót cần được

hoàn thiện trong thời gian tới do lý do trình độ kỹ thuật lập trình chưa tốt, không

thực hiện được một số chức năng trong quá trình khảo sát và phân tích thiết kế

Chúng em xin chân thành cảm ơn các thầy cô trong khoa Công Nghệ

Thông Tin của Trường ĐH Trần Đại Nghĩa đã trang bị cho em những kiến thức

cơ bản, cần thiết trong những năm học vừa qua để em có thể hoàn thành đồ án

môn học này. Đặc biệt, chúng em xin chân thành cảm Thầy Phùng Thế Bảo, người

đã tận tình chỉ bảo hướng dẫn em thực hiện đề tài trong suốt thời gian qua.

Một lần nữa chúng em xin chân thành cảm ơn!