NoSQL là một loại cơ sở dữ liệu phi quan hệ, không sử dụng SQL như các hệ quan tri co sở dữ liệu quan hệ truyền thống.. NoSQL được sử dụng rộng rãi trong các ứng dụng web hiện đại và các
Trang 1
BO GIAO DUC VA DAO TAO TRUONG ĐẠI HỌC GIA ĐỊNH KHOA: CÔNG NGHỆ THÔNG TIN
Ngành: CÔNG NGHỆ THÔNG TIN
Chuyén nganh : HE THONG THONG TIN VA DU LIEU LON
Giảng viên hướng dẫn: Trần Hoài Thuận
Sinh viên thực hiện: Phạm Thanh Tùng
MSSV: 2113110018
Lớp: KISHTTTO1
TP HO CHI MINH, NAM 2023
Trang 2
Khoa/Vién:CONG NGHE THONG TIN
NHAN XET VA CHAM DIEM CUA GIANG VIEN
TIEU LUAN MON: HE QUAN TRI CO SO DU LIEU
1 Hog va tên sinh viên :Phạm Thanh Tùng .- << << «<< <<<<
2 Tén dé tai: : UNG DUNG QUAN LY DAT DON HÀNG Sen nè
3 Nhan xét:
a) Những kết quả đạt được:
4 Điểm đánh giá (heo thang điểm 10, làm tròn đến 0.5):
Sinh viên: Phạm Thanh Tùng Điêm số: Điểm chữ: CC n2 nh nh kg kh key
1P HCM, ngày tháng năm 20
Giảng viên chấm thi
(Kỹ và ghi rõ họ tên)
Trần Hoài Thuận
Trang 3NoSQL là một loại cơ sở dữ liệu phi quan hệ, không sử dụng SQL như các hệ quan tri co
sở dữ liệu quan hệ truyền thống NoSQL được sử dụng rộng rãi trong các ứng dụng web hiện đại và các ứng dụng lưu trữ dữ liệu lớn Trong khóa học nay, chúng ta sẽ tìm hiểu về các loại cơ sở dữ liệu NoSQL khác nhau, cách chúng hoạt động và cách sử dụng chúng trong các ứng dụng thực tế
Cơ sở đữ liệu NoSQL đang trở thành một phần quan trọng trong việc xây dựng các ứng dụng web và các hệ thông lưu trữ đữ liệu lớn Với NoSQL, chúng ta có thế lưu trữ vả truy vấn dữ liệu một cách nhanh chóng vả linh hoạt hơn so với các hệ thống quan hệ truyền thống Các loại cơ sở đữ liệu NoSQL phô biến bao gồm cơ sở đữ liệu key-value, cơ sở đữ liệu document, cơ sở đữ liệu column-family và cơ sở dữ liệu praph Trong khóa học này, chúng ta sẽ tìm hiểu chỉ tiết về từng loại cơ sở đữ liệu này vả tìm hiểu cách sử dụng chúng trong các ứng dụng thực tế
Trang 4Loi cam on
Em xin gửi lời cảm ơn chân thành vả sự trí ân sâu sắc đối với các thầy cô của trường Đại học Gia Định, đặc biệt là các thầy cô Công Nghệ Thông Tin của trường đã tạo điều kiện cho em thực hiện đồ án tốt nghiệp Và em cũng xin chân thành cám ơn thầy/cô Nguyễn
Thị Hồng Khánh đã nhiệt tình hướng dẫn hướng dẫn em hoản thành tốt khóa thực tập
Trong quá trình thực tập, cũng như là trong quá trình làm bài báo cáo thực tập, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bải báo cáo không thể tránh khỏi những thiếu sót, em rất mong nhận được ý kiến đóng góp thầy, cô để em học thêm được nhiều kinh nghiệm và
sẽ hoàn thành tốt hơn bài báo cáo tốt nghiệp sắp tới
Em xin chân thành cảm ơn!
Trang 5Muc luc
Chương!: Tổng quan về cơ sở lý thuyết Cơ sở dữ liệu NoSQL - 555cc se cà crerrrerrrkerrrkerree 8
II?) nh - .ẽố.ốẼ.Ẽ 8
1.2 Các khả năng của hệ quản trị CS L 1 2 1S 11 12111 2111 H111 51H 1H HH TH Hà HH hệt 8
1.3 Đặc diém cia mGt hé quan tri CSDL a cececsecescsccescssesevsscesssesesecesersvsserevessvevesessvessessesevtevevsevessevees 9 1.3.2 SU trltu tung hod AU GU ce ceesesesessssesesesesessessseseseseseseseseseseseseseseessseassesescscseseeassnseseseaeeees 9 1.3.2 XỨ lý câu hỏi Công việc của bộ xử lý câu hỒI 2n c 22H Hee 10
Chuong2: PHAN TICH VA THIET KE CAU TRUC.ecscccssssssssssesssesssessssessscsssecassesssccasecesscsacesecsseeneaseees 11
2.1 Giới thiệu các lệnh thường gặp trong NoSQL - - - - nhà HH TT HT HH HT nh khe 11
2.2 Tổng quan vấn đề - 5 t1 H102 010 t21 21 1 10 10 1 1g ng ng 0n 1211101 u 12
2.3 DATABASE (CO SỞ DỮ LIỆU) 2.3.1.1 Tạo câu trúc bẳng -: 2222-22222222E22ztervrerrsrre 14
P5 ÄT 80 8i 0 0 176 .ddL|ÄH||||A - 15 2.3.1.3 Tao bag NAN NO - :-©-^4 ÔÒỎ 15
th V h8 0a n."':'." Ô 16 h8: 80 8o cá nh .i 16 2.3.1.6 Tạo bảng phiêu giao hàng - 0 1S n2 2H HT H21 1111111111011 rree 17 2.3.1.7 Tao bang chi tit ni nh L 17
2.3.2 Thém rang budc duy nhat (UNIQUE) cho truOng TenHH trong bang HangHoa 18
2.3.4 Thém rang budc kim tra cho trUONg SLCON cscccsesssssessssseesessuessessesseesessseseesecessesestesssneseans 19 2.3.5 Thêm ràng buỘc mặc định (DEAULT) cho cOt NgayDat cccecccccsssssssessssecssscssssceesesseseeeesseeeess 19
2.3.7 Xoá cỘt DiaChi trong bảng KHACHHANG và tạo lại cột với ràng buộc “HCM” 19
2.3.8 Xóa khóa ngoại MaDat trong PHIEUGIAHANG tham chiêu tới MaDat trong DonDatHang, sau
PR:-0\ U00) 0000.) 0n ho.(A43 21
1 bảng khách hàng L2 1 211211211211 211 1101 1151151112 11 11101111511 011 1H 1x HH HH vn ke Ha 23 2.4 QUERY (TRUY VẤN) ch HH HH H2 HH ung HH nh Hà H21 2n rgg re, 26 2.4.1 Cho biết chỉ tiết giao hàng của đơn đặt hàng DH01 (tên hàng hóa, sô lượng giao và đơn giá
Trang 6hiển thị sõ lân đặt hàng bằng 0 Hiển thị: Mã khách hàng, tên khách hàng, số lân đặt 28 2.4.5 Cho biết tổng tiên cỦa từng phiêu giao hàng trong năm 2023, hiển thị: mã giao, ngày giao,
tổng tiên, với tổng tiên = SUM(SLGiao#DonGiaGiaO) -2- 2s e3 SE 3 1E EE711315 11731 Exrree 29
2.4.6 Cho biết khách hàng nào có 2 lân đặt hàng trở lên, hiển thị: mã khách hàng, tên khách hàng, E7 .A ,ÔỎ 30 2.4.7 Cho biết mặt hàng nào đã được giao với tổng số lượng giao nhiêu nhât, hiển thị: mã hàng, tên hàng hóa, tổng số lượng đã giao - cọ St HT 11011111 11 1101111 erre 30 2.4.8 Tăng số lượng còn của mặt hàng có mã bắt đâu băng ký tự”M” lân 10 -+ 31 2.4.9 Copy dữ liệu bảng HangHoa sang một bảng HangHoaCopy, sau đó xóa nhỮng mặt hàng chưa
được đặt trong bằng HangHoa Chèn lại vào bảng HangHoa những dòng bị xóa từ bảng
HangHoaCOpyy - LH HH TH nh HH TH TT TP gs 31
2.4.10 Cập nhật sô điện thoại cho khách hàng có mã KHO6 Là St nnnnnHerrey 32 2.4.11 Sửa giá trị TinhTrang=NULL cho tât cả các đơn đặt hàng - c7 cà crrererrrey 32 2.4.12Thêm cột ThanhTien cho bảng ChiTietGiaoHang, sau đó cập nhật giá trị cho cỘt này với
ThanhTien = SLGiao#DonGiaGiaO HH HH TT HH Tà Hà TH 32 2.5 VIEW (KHUNG NHÌN) SH tàn HH HH n1 t hề HH1 hg gu ru ru 33 2.5.1 Tạo view thông kê doanh số giao hàng của từng mặt hàng trong 6 tháng đâu năm 2023 33 2.5.2Tạo view cho biết mặt hàng nào có tổng sô lượng được đặt lớn nhất trong năm 2023 34
2.5.3Tạo view cho biết danh sách khách hàng ở HCM có sử dụng WITH CHECK OPTION, sau đó chèn 2 khách hàng vào view này, mỘt khách hàng có địa chỉ HCM và một khách hàng có địa chÏ Ởở Long An, có nhận xét gì trong 2 trường hỢp này? ¿- Là vì 22H11 ru 34
2.6.1 Thêm cỘt TongTien vào phiều giao hàng, sau đó dùng con tr cập nhập giá trị cho cỘt
TongTien, với TongTien=SUM(SLGiao*DonGiaGiao) hay nói cách khác TongTien = SUM(ThanhTien)}
2.6.2 Thêm mới cột THUONG2023 vào bảng KhachHang để lưu giỮ số tiên khách hàng được 0"15/9/0-8105)01-81927E5 0017 5 .A 37 2.6.3 Vào ngày 1/1/2024, cân tăng giá của tât cả các mặt hàng lên 10% so với đơn giá hiện hành.38
2.7 STORE PROCEDURE+TRANSACTION (Thu tục nội tại + giao dịch) ào co s2 40
2.7.1 Tạo thỦ tục truyên vào mã đơn đặt hàng (@maddh) và mã hàng hóa (@mahh), xuât ra số
lượng hàng hóa @mahh được đặt trong đơn đặt hàng @maddh -. : cccctsvsieereerersrsree 40 2.7.2 Tạo thỦ tục truyên vào mã phiêu giao hàng, xuất ra tổng tiên của phiều giao hàng đó 41
2.7.3 Tạo thỦ tục truyên vào mã khách hàng, hiển thị các đơn đặt hàng của khách hàng đó, gôm
các thông tin: Mã đặt, ngày đặt, mã giao, ngày giaO ch n TH HH HH HH Hệ 41 2.7.4 Tạo thỦ tục truyên vào ngày1 và ngày2, đêm xem có bao nhiêu phiêu giao hàng đƯỢc giao
trong khoảng thời gian tỪ ngày1 đên ngày2 2n n nàn 1a 42
Trang 72.7.5 Tạo thủ tục thêm mới một hàng hóa với tham sô đâu vào là: mã hàng, tên hàng, đơn vị tính,
2.7.6Tạo thủ tục thêm mới mỘt ChiTietGiaoHang với các tham sô đâu vào là: mã giao, mã hàng
2.8.1 Tạo thỦ tục truyên vào mã đơn đặt hàng (@maddh) và mã hàng hóa (@mahh), xuât ra số
lượng hàng hóa @mahh được đặt trong đơn dat hang @maddh bang FUNCTION 44 2.8.2 Tạo thỦ tục truyên vào mã phiêu giao hàng, xuất ra tổng tiên cỦa phiếu giao hàng đó bằng
In 01s n L A - 44
2.8.3 Tạo thủ tục truyên vào mã khách hàng, hiển thị cdc dOn dat hang cUla khdch hang dé bang
In 01s n L A - 45
2.8.4 Tạo thỦ tục truyên vào ngày1 và ngày2, đêm xem có bao nhiêu phiêu giao hàng đƯỢc giao
trong khoảng thời gian từ ngày1 đên ngày2 băng hàm FUNCTION 2-5525 2cccccceccrrerree 45 2.9 TRIGGER (RÀNG BUỘC TOÀN VẸN) HH HH HH H1 1212 ru ớ 46
2.9.1 Cài đặt ràng buộc sau bằng 2 cách: constraint và trigger “Số lượng còn của hàng hóa phải lớn hơn
OP c nc n1 n1 k 11x kg k1 XE kg 9X kg kkck E915 X KT k1 X 1H 11121151111 46 2.9.2 Cài đặt ràng buỘc sau bằng 2 cách: constraint và trigger “Đơn vị tính của hàng hóa chỉ nhận một trong các giá trị: Cái, Thùng, Chiếc, Chai, LOi” - ¿5-5 + 22x Se xe eexecereExrvkrxrkrereereererrre 47 2.9.3 Cài đặt ràng buộc: “Mỗi đơn đặt hàng chỉỈ có tôi đa 1 phiêu giao hàng” - 47 2.9.4 Cài đặt ràng buộc: “Ngày giao hàng phải bãng hoặc sau ngày đặt hàng nhưng không được
CÔ) NA “ -“-(dAA Ô 52
Trang 8Chương!: Tổng quan về cơ sở lý thuyết Cơ sở dữ liệu NoSQL
1.1 Định nghĩa
Hệ quản trị cơ sở đữ liệu (Database Management System - DBMS): Là một hệ thông phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiên mọi truy nhập đối với cơ sở đữ
liệu đó Trên thị trường phần mềm hiện nay ở Việt Nam đã xuất hiện khá nhiều phần
mềm hệ quản trị cơ sở dữ liệu như: Microsoft Access, Foxpro, DB2, SQL Server, Oracle,.v.v
Hé quan trico so dir ligu quan hé (Relation Database Management System - RDBMS) la mét hé quan trị cơ sở dữ liệu theo mô hình quan hệ
1.2 Các khả năng của hệ quản trị CSDL
Có hai khả năng chính cho phép phân biệt các hệ quản trị cơ sở đữ liệu với các kiêu hệ
thống lập trình khác:
Khả năng quản lý dữ liệu tồn tại lâu dài: đặc điểm nảy chỉ ra rằng có một cơ sở dữ liệu tồn tại trong một thời gian dai, nội đung của cơ sở đữ liệu này là các đữ liệu mà hệ quản trị CSDL truy nhập và quản lý
.Khả năng truy nhập các khối lượng đữ liệu lớn một cách hiệu quả Ngoài hai khả năng
cơ bản trên, hệ quản trị CSDL còn có các khả năng khác mà có thé thấy trong hầu hết các
dữ liệu viQuản lý giao dịch, có nghĩa là khả năng cung cấp các truy nhập đồng thời, đúng đắn đối với CSDL từ nhiều người sử dụng tại cùng một thời điểm
Điều khiến truy nhập, có nghĩa là khả năng hạn chế truy nhập đến các đữ liệu bởi những
người sử dụng không được cấp phép vả khảnăng kiểm tra tính đúng đắn của CSDL
viii.Phục hồi đữ liệu, có nghĩa là có khả năng phục hồi dữ liệu, không làm mất mát đữ liệu với các lỗi hệ thống
1.3 Đặc điểm của một hệ quản trị CSDL
1.3.1 Sự trừu tượng hoa dữ liệu
Để cho hệ thống có thể sử dụng được, hệ quản trị CSDL phải tra cứu hay tìm kiếm dữ liệu một cách có hiệu quả Điều nay dẫn đến việc thiết kế các cấu trúc dữ liệu
Trang 9tạp này thông qua một số mức trừu tượng đếđơn giản hoá các tương tác của người sử dụng đối với hệ thống
Ba mức trừu tượng dữ liệu
-Mức vật lý: Mức thấp nhất của sự trừu tượng mô tả dữ liệu được lưu trữ một cách thực
sự như thế nảo Tại mức vật lý, các cấu trúc đữ liệu mức thấp phức tạp được mô tả chi
+Một sơđồ CSDL đặc tả bởi một tập các định nghĩa được biêu diễn bởi một ngôn ngữđặc biệt được gọi là ngôn ngữđịnh nghĩa dữ liệu Kết quả của việc dịch các ngôn ngữnảy là một tập các bảng được lưu trữ trong một tệp đặc biệt được gọi là từđiển
dữ liệu hay thư mục dữ liệu
Một tùđiển đữ liệu là một tệp chứa các siêu dữ liệu có nghĩa là các dữ liệu về
dữ liệu Tệp này được tra cứu trước khi dữ liệu thực sựđược đọc hay được sửa đôi trong hé CSDL
Cấu trúc và các phương pháp truy nhập được sử đụng bởi hệ CSDL được đặc tả bởi một tập các định nghĩa trong một kiểu đặc biệt của DDL là ngôn ngữđịnh nghĩa và lưu trữ dữ liệu
-Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML):
Các yêu cầu về thao tác đữ liệu bao gồm: *Tìm kiếm thông tin được lưu trữ trong CSDL
Trang 10Một ngôn ngữ thao tác dữ liệu (DML) là một ngôn ngữcho phép người sử dụng truy nhập hay thao tác dữ liệu được tổ chức bởi mô hình dữ liệu thích hợp Có hai kiêu ngôn ngữ thao tác dữ liệu cơ bản:
Các DML thủ tục đòi hỏi người sử dụng phải đặc tả đữ liệu nảo cần tìm kiếm và tìm kiếm
những dữliệu nảy như thế nảo sCác DML phi thủ tục đòi hỏi người sử dụng đặc tảđữ
liệu nào cần tìm kiếm ma không phải đặc tả tìm kiếm những dữ liệu này như thế nào
1.3.2 Xử lÿ câu hỏi Công việc của bộ xử ly câu hỏi
Là biến đổi một truy van hay một thao tác CSDL, có thêđược biểu diễn ở các mức cao thành một dãy các yêu cầu đối với các đữ liệu lưu trữ trong CSDL Thường phần khó nhất của nhiệm vụ xử lý câu hỏi là tối ưu hoá câu hỏi, có nghĩa là lựa chọn một kế hoạch tốt nhất đối với hệ thống lưu trữđê trả lời truy vấn nảy nhanh nhất
Trang 11Chuong2: PHAN TICH VA THIET KE CÂU TRÚC
2.1 Giới thiệu các lệnh thường gặp trong NoSQL
Lệnh SELECT: Truy vấn và lấy đữ liệu từ cơ sở đữ liệu Lệnh này cho phép bạn chọn các cột cần lay dữ liệu, chỉ định bảng dé truy van, ap dung cac điều kiện đề lọc dữ liệu và sắp xếp đữ liệu theo yêu câu
Lệnh INSERT: Thêm một bản ghi mới vào cơ sở dữ liệu Lệnh này cho phép bạn chèn một bản ghi mới vào trong bảng đã được tạo
Lệnh UPDATE: Cập nhật một bản ghi đã có trong cơ sở dữ liệu Lệnh này cho phép ban thay đôi giá trị của một hoặc nhiều cột trong một bản ghi đã tồn tại
Lệnh DELETE: Xóa một bản ghi đã có trong cơ sở dữ liệu Lệnh này cho phép bạn xóa một hoặc nhiều bản ghi khỏi bảng
Lệnh CREATE: Tạo mới một bảng, một chế độ xem hoặc một thủ tục trong cơ sở đữ liệu Lệnh này cho phép bạn tạo mới các đối tượng trong cơ sở đữ liệu như bảng, chế độ xem hoặc thủ tục
Lệnh ALTER: Thay đổi cầu trúc của một bảng hoặc một chế độ xem đã tôn tại trong cơ
sở đữ liệu Lệnh nảy cho phép bạn thêm hoặc xóa các cột trong bảng, đổi tên bảng hoặc cột, thay đổi kiểu dữ liệu của cột và nhiều hơn nữa
Lệnh DROP: Xóa một bảng, một chế độ xem hoặc một thủ tục khỏi cơ sở dữ liệu Lệnh này cho phép bạn xóa các đối tượng đã được tạo ra trong cơ sở đữ liệu như bảng, chế độ xem hoặc thủ tục
Trang 122.2 Tong quan van dé
Cho cơ sở dữ liệu Quản lý đơn đặt hàng như sau:
NgayDat DonGaHH DonGia MaKH
°°" ChitietDatHang _
Ý MaDat
@ MaHH SLDat
KHO2 Cửa hàng Hoàng Gia | Long An | 0938776266
KHO3 Nguyễn Lan Anh Cần Thơ | O896317388
KHO4 Cty TNHH An Phuéc | Long An | 0993810503
KHOS Huynh Ngoc Trung HCM 0916783565
KHOG Cửa hành “Trung Tín Tay Ninh | 0938435706
MaHH | TenHH DVT | SLCon | DonGiaHH
BU Ban Ui Phillip Cai 60 350000
cD Nồi com dién Sharp | Cái 100 700000
DM Đầu máy Sharp Cái aS 1200000
MG Máy giặt Sanyo Cái 10 4700000
MQ May quat Senko Cai 40 400000
TL Ta lanh Hitachi Cai sO 5500000
TV Tivi Samsung Cai 33 7800000
Trang 13
Thông tin bảng PhieuGiaoHang: Thong tin bang ChiTietDatHang:
MaGiao | NgayGiao | MaDat MaDat | MaHH | SLDat GH0L | 02-02-2022 | DH0I HD0I [BU | 15
GH02 | 15-02-2022 | DH02 HDOI |MD |10
GH03 | 24-02-2023 | DH03 HD0I [TL |4
GH0S | 10-05-2023 | DH05 HD0 |BU | 20
GH06 | 18-06-2023 | HD06 HD02 | TL 3
MaGiao | MaHH | SLGiao | DonGiaGiao HDO |TL |5
Trang 142.3 DATABASE (CO SO DU LIEU)
2.3.1.1 Tao cau tric bang
Trang 152.3.1.2 Tao bang khach hang
Tạo bảng KhachHang
IF O8JECT_ID('KhachHang') IS NULL
CREATE TABLE KhachHang (
MaKH VARCHAR(4) NOT NULL,
TenKH NVARCHAR(5@) NOT NULL,
DiaChi NVARCHAR(10@) NOT NULL,
DienThoai VARCHAR(1@) NOT NULL,
PRIMARY KEY (MaKH)
CREATE TABLE HangHoa (
MaHH VARCHAR(2) NOT NULL,
TenHH NVARCHAR(5@) NOT NULL,
DVT NVARCHAR(19) NOT NULL,
SLCon INT NOT NULL,
DonGiaHH INT NOT NULL,
PRIMARY KEY (MaHH)
GO
Hinh 3 bang hang hoa
Trang 162.3.1.4 Tao bang lich sw gia
CREATE TABLE LichSuGia (
MaHH VARCHAR(2) NOT NULL,
NgayHL DATE NOT NULL,
DonGia INT NOT NULL,
constraint pk_lichsugia primary key(MaHH,NgayHL)
Hình 4: Tạo bảng lịch sử giả
2.3.1.5 Tao bang don dat hang
Tao bang DonDatHang
IF OBJECT_ID('DonDatHang’) IS NULL
CREATE TABLE DonDatHang (
MaDat VARCHAR(4) NOT NULL,
NgayDat DATE NOT NULL,
MaKH VARCHAR(4) NOT NULL,
TinhTrang BIT NOT NULL ,
PRIMARY KEY (MaDat),
Trang 172.3.1.6 Tao bang phiéu giao hang
Tao bảng PhieuGiaoHang
IF OBJECT_ID('PhieuGisoHang') IS NULL
CREATE TABLE PhieuGiaoHang (
MaGiao VARCHAR(4) NOT NULL,
NgayGiao DATE NOT NULL,
MaDat VARCHAR(4) NOT NULL,
PRIMARY KEY (MaGiao),
Hinh 6: Tao bang phiéu giao hang
2.3.1.7 Tao bang chi tiét đặt hàng
Tao bang ChiTietDatHang
IF OBJECT_ID( 'ChiTietDatHang*) IS NULL
CREATE TABLE ChiTietDatHang (
MaDat VARCHAR(4) NOT NULL,
MaHH VARCHAR(2) NOT NULL,
SLDat INT NOT NULL,
PRIMARY KEY (MaDat, MaHH),
Trang 18
Tao bang ChiTietGiaoHang
IF OBJECT_ID('ChiTietGiaoHang') IS NULL
CREATE TABLE ChiTietGiaoHang (
MaGiao VARCHAR(4) NOT NULL,
MaHH VARCHAR(2) NOT NULL,
SLGiao INT NOT NULL,
DonGiaGiao INT NOT NULL,
PRIMARY KEY (MaGiao, MaHH),
);
go
ALTER TABLE LichSuGia ADD
CONSTRAINT fk_MaHH FOREIGN KEY(MaHH) REFERENCES HangHoa(MaHH)
ALTER TABLE DonDatHang ADD
CONSTRAINT #k_DDHANG_MaKH FOREIGN KEY(MaKH) REFERENCES KhachHang(MaKH)
ALTER TABLE PhieuGiaoHang ADD
CONSTRAINT fk_PGH_MaDat FOREIGN KEY(MaDat) REFERENCES DonDatHang(MaDat)
ALTER TABLE PhieuGiaoHang DROP CONSTRAINT fk_PGH_MaDat; xóa
ALTER TABLE ChiTietDatHang ADD
CONSTRAINT fk_CTDH_MaDat FOREIGN KEY(MaDat) REFERENCES DonDatHang(MaDat) ,
CONSTRAINT fk_CTDH_MaHH FOREIGN KEY(MaHH) REFERENCES HangHoa(MaHH)
xda
ALTER TABLE ChiTietDatHang DROP CONSTRAINT fk_CTDH_MaDat
ALTER TABLE ChiTietDatHang DROP CONSTRAINT fk_CTDH_MaHH
ALTER TABLE ChiTietGiaoHang ADD
CONSTRAINT fk_CTGH_MaGiao FOREIGN KEY(MaGiao) REFERENCES PhieuGiaoHang(MaGiao), CONSTRAINT fk_CTGH_MaHH FOREIGN KEY(MaHH) REFERENCES HangHoa(MaHH)
xóa kn
ALTER TABLE ChiTietGiaoHang DROP CONSTRAINT fk_CTGH_MaHH
ALTER TABLE ChiTietGiaoHang DROP CONSTRAINT fk_CTGH_MaGiao
Hinh 8: Tao bang chi tiét giao hang
2.3.2 Thém ring buéc duy nhat (UNIQUE) cho trwong TenHH trong bang HangHoa
Trang 192.3.4 Thêm ràng buộc kiểm tra cho trường SLCon
c Để thêm ràng buộc kiểm tra (CHECK) cho trường SLCon, yêu cầu là trường này chỉ
hận giá trị : 9
LTER TABLE HangHoa
DD CONSTRAINT CK_SLCon CHECK(SLCon >= @);
Hình 10: Thêm ràng buộc kiêm tra cho trường SLCon
2.3.5 Thêm ràng buộc mặc định (DEAULT) cho cột NgapĐat
d Để thêm ràng buộc mặc định (DEFAULT) cho cột NgayDat trong bảng
DonDatHang với giá trị mặc đỉnh lầ ngày hiện tại
ALTER TABLE DonDatHang
ADD CONSTRAINT DF_NgayDat DEFAULT GETDATE() FOR NgayDat;
XY
Hình lI: Thêm ràng bu6c mac dinh (DEAULT) cho cét NgayDat
2.3.6 Xoa bang KHACHHANG
e.xóa bảng KHACHHANG, bạn có thế sử dụng câu lệnh SQL sau:
ROP TABLE KhachHang;
Nễu không xóa được bảng KHACHHANG,
Lý do có thể là do bảng KHACHHANG đang được sử dụng bởi các bảng khác hoặc có khóa ngoại liên kết
Hình lI: Xoá bảng KHACHHAN
2.3.7 Xod cột DiaChỉ trong bảng KHACHHÀNG và tạo lại cột với ràng buộc “HCM”
Z - - ẢN f xóa cột DiaChỉi trong bảng KhachHang và tạo lại cột này với ràng buộc mặc định
là "HCH"”
LTER TABLE KhachHang
DROP COLUMN DiaChi;
LTER TABLE KhachHang
DD DiaChi VARCHAR(5@) DEFAULT 'HCM';
nN
19
Trang 20Hình l2: Xoá cột DiaChi trong bang KHACHHANG va tao lai c6t voi ràng buộc
ALTER TABLE PhieuGiaoHang
ROP CONSTRAINT fk_PGH_MaDat;
ALTER TABLE PhieuGiaoHang
ADD CONSTRAINT #k_PGH_MaDat FOREIGN KEY(MaDat) REFERENCES DonDatHang(MaDat);
Hình 13: Xóa khóa ngoại MaDat trong PHIEUGIAHANG tham chiếu tới MaDat trong DonDatHane, sau đó tạo lại khóa ngoại này
Trang 212.3.9 Nhap dit liéu cho bang
N'Cửa hàng Hoàng Gia', N'Long An', '9938776266'),
N'Nguyễn Lan Anh', N'Cần Thơ', '9896317388'),
N'Cty TNHH An Phước', N'Long An', '@9938105@3'), N'Huỳnh Ngọc Trung', N'HCM', '9916783565'),
N'Cửa hành Trung Tín', N'Tây Ninh', '99384357096'); SELECT * FROM KhachHang
INSERT INTO HangHoa
('BU', N'Bàn ủi Phillip', N'Cái', 69, 359000),
('CD', N'Nồi cơm điện Sharp', N'Cái', 190, 799999),
('DM', N'Đầu máy Sharp', N'Cái', 75, 1290999),
('MG', N'Máy giặt Sanyo', N'Cái', 19, 4700990),
('MQ', N'Máy quạt Senko', N'Cái', 49, 490090),
('TL', N'Tủ lạnh Hitachi', N'Cái', 59, 5599990),
('TV', N'Tivi Samsung', N'Cái', 33, 7800000);
SELECT * FROM HangHoa
SET DATEFORMAT dmy
INSERT INTO LichSuGia (MaHH, NgayHL, DonGia)
SELECT * FROM LichSuGia
INSERT INTO DonDatHang
Trang 22
SELECT * FROM DonDatHang
SET DATEFORMAT dmy
SELECT* FROM PhieuGiaoHang
INSERT INTO ChiTietDatHang
29),
3),
8), 5), 5), 12), 15), 6),
5),
30), 7)»
INSERT INTO ChiTietGiaoHang (MaGiao, MaHH,
INSERT INTO PhieuGiaoHang (MaGiao, NgeyGiao, MaDat)
(MaDat, MaHH, SLDat)
SELECT * FROM ChiTietDatHang
SLGiao, 300000),
19, 1000090),
4, 5000009),
19, 300009),
8, 4700000), 350000), 1200090),
Trang 233 KH@3 Nguyén Lan Anh C?n Tho [ 9896317388 f
2 bang hang hoa
2 _€D _ Nồi cơm điện Sharp Cái _ 199 _ 790900
4 MG Máy giặt Sanyo Cái 19 4700000
5 MQ _ May quat Senko Cai 49 400009
3 bang lich str gia
Trang 24“Ma Vv _NgayHL Vv DonGia v
4 bang don dat hang
| MaDat *x⁄ | NgayDat *x⁄ | MaKH x7 TinhTrang v |
Trang 25
6 bang chi tiét dat hang
Trang 26
7 bang chi tiét giao hang
MaGiao vv MaHH »x⁄Z SLGiao `x⁄ DonGiaGiao vy
2.4 QUERY (TRUY VAN)
2.4.1 Cho biết chỉ tiết giao hàng của đơn đặt hàng DHUI (tên hàng hóa, số lượng giao
va don gid giao)
a Cho biết chỉ tiết giao hàng của đơn đặt hàng GHØ1 (tên hàng hóa, số lượng giao và đơn giá iao)
SELECT HangHoa.TenHH, ChiTietGiaoHang.SLGiao, ChiTietGiaoHang.DonGiaGiao
FROM ChiTietGiaoHang join HangHoa on ChiTietGiaoHang.MaHH = HangHoa.MaHH
ERE ChiTietGiaoHang.MaGiao= 'GH@1"
Kết quả