1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo bài tập lớn môn học hệ QUẢN TRỊ cơ sở dữ LIỆU đề tài QUẢN lí bán LINH KIỆN máy TÍNH ONLINE

56 21 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lý Bán Linh Kiện Máy Tính Online
Tác giả Trần Ngọc Thịnh
Người hướng dẫn Th.s Viên Thanh Nhã
Trường học Trường Đại Học Thủy Lợi
Chuyên ngành Hệ Quản Trị Cơ Sở Dữ Liệu
Thể loại Báo Cáo Bài Tập Lớn
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 56
Dung lượng 1,27 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG I. PHÂN TÍCH THIẾ T K Ế H Ệ TH Ố NG (7)
    • 1.1. Mô t ả bài toán (7)
    • 1.2. Mô tả các chức năng của hệ thống (7)
    • 1.3. Xây d ựng mô hình liên k ết thực thể (8)
    • 1.4. Mô hình quan h ệ ERD (9)
    • 1.5. Mô tả các b ảng (10)
  • CHƯƠNG II. CÀI ĐẶT CƠ SỞ D Ữ LI Ệ U (14)
    • 2.1. Tạo database (14)
    • 2.2. Cài đặt các b ảng (14)
      • 2.2.1. Tạo bảng TheLoai (14)
      • 2.2.2. Tạo bảng KhachHang (14)
      • 2.2.3. Tạo bảng NhanVien (15)
      • 2.2.4. Tạo bảng DonDatHang (15)
      • 2.2.5. Tạo bảng NhaCungCap (15)
      • 2.2.6. Tạo bảng ThuongHieu (15)
      • 2.2.7. T ạ o b ả ng SanPham (16)
      • 2.2.8. Tạo bảng ThuongHieuSanPham (16)
      • 2.2.9. Tạo bảng ChiTietDH (16)
      • 2.2.10. T ạ o b ả ng DanhGiaSanPham (17)
    • 2.3. Câu lệnh (17)
      • 2.3.1. INSERT (17)
      • 2.3.2. UPDATE (25)
      • 2.3.3. DELETE (26)
      • 2.3.4. Truy v ấn (28)
        • 2.3.4.1. Câu truy vấn sử dụng điều kiện WHERE (28)
        • 2.3.4.2. Câu truy vấn sử dụng điều kiện WHERE + GROUP BY (29)
        • 2.3.4.3. Câu truy vấn sử dụng điều kiện WHERE + GROUP BY + (30)
        • 2.3.4.4. Câu truy vấn sử dụng gom nhóm có điều ki ện (31)
        • 2.3.4.5. Câu truy vấn sử dụng LEFT JOIN, FULL JOIN, RIGHT JOIN . 32 2.3.4.6. Câu truy v ấ n s ử d ụ ng truy v ấ n con (32)
        • 2.3.4.7. Câu truy vấn sử dụng EXCEPT, INTERSECT, UNION (36)
      • 2.3.5. VIEW (39)
      • 2.3.6. STORE PROCEDURE (Th ủ t ụ c) (40)
      • 2.3.7. FUNCTION (Hàm) (43)
      • 2.3.8. CLUSTER INDEX và NONE CLUSTER INDEX (48)
      • 2.3.9. TRIGGER (49)
      • 2.3.10. CURSOR (52)
      • 2.3.11. BACKUP (53)
      • 2.3.12. PERMISSIONS (Phân qu yền) (53)
  • CHƯƠNG III. TỔ NG K Ế T (55)

Nội dung

Chương trình web quản lí bán hàng online là một chương trình được xây dựng nhằm đáp ứng những đòi hỏi đặt ra của quá trình quản lý như số lượng hàng hoá, đơn đặt hàng,…và rất nhiều công

PHÂN TÍCH THIẾ T K Ế H Ệ TH Ố NG

Mô t ả bài toán

Cửa hàng linh kiện máy tính NT226 Computer tại TP Hồ Chí Minh chuyên bán các linh kiện máy tính Để thiết kế một website bán hàng cho phép khách hàng đặt hàng online và quản lý đồng thời các tài khoản nhân viên, khách hàng, sản phẩm, báo cáo doanh thu một cách thuận tiện, cần xây dựng một cơ sở dữ liệu hoàn chỉnh với cấu trúc hợp lý Cơ sở dữ liệu này giúp tối ưu quy trình vận hành, tăng cường an toàn dữ liệu và cải thiện trải nghiệm người dùng trên website, đồng thời hỗ trợ quản trị viên theo dõi tồn kho, doanh thu và các hoạt động của từng người dùng Việc thiết kế cơ sở dữ liệu chuẩn và tối ưu hóa truy vấn có thể nâng cao hiệu quả quản lý bán hàng và khả năng mở rộng cho NT226 Computer.

Khách hàng có nhu cầu mua sản phẩm sẽ truy cập website, chọn sản phẩm, thêm vào giỏ hàng và đăng nhập để nhập thông tin thanh toán; đơn hàng sẽ được chuyển tới nhân viên xử lý Khi hoá đơn được xuất, hệ thống tự động trừ số lượng tồn kho của sản phẩm, giúp cơ sở dữ liệu cập nhật số lượng còn lại và quản lý tồn kho một cách chính xác.

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

Hệ thống quản lý NT226 Computer sẽ gồm các chức năng:

 Xem thông tin nhà cung cấp của sản phẩm

 Cập nhật thông tin sản phẩm

 Tìm sản phẩm: giúp khách hàng tìm được sản phẩm mong muốn nhanh hơn

 Quản lý đơn hàng: sau khi đặt hàng thành công thì khách hàng có thể xem lại hoá đơn

 Thêm: khi có nhân viên mới, quản lý sẽ tạo cho nhân viên đó tài khoản để đăng nhập vào hệ thống

 Xoá: khi có nhân viên nghỉ việc, quản lý sẽ xoá tài khoản đó khỏi hệ thống

 Cập nhật: cho phép nhân viên thay đổi thông tin cá nhân

 Lập báo cáo xem doanh thu của cửa hàng

 Nhân viên: được phép xem các bảng DonDatHang, SanPham,

TheLoai, DanhGiaSanPham, ThuongHieu, ThuongHieuSanPham, NhaCungCap và chỉ xem được các cột MaKH, HoTenKH, SDT,

DiaChiGiaoHang, Email của bảng KhachHang và quyền thêm vào bảng DonDatHang

 Quản lý: được phép xem, thêm và sửa ở tất cả các bảng.

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

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

Mô hình quan h ệ ERD

MaSP SoDH SoLuong GiaTien GiamGia

DanhGiaSanPham id MaSP MaKH TenDanhGia ChatLuong GiaTien NoiDung NgayDanhGia

SoDH NgayDH TrangThaiDH NgayDuKienGiao NgayThucTeGiao MaKH MaNV

MaKH HoTenKH NgaySinh GioiTinh SDT DiaChiGiaoHang Email

MaNCC TenNCC DiaChi Email SDT fax

MaSP TenSP GiaSP GiaKhuyenMai MaLoai MaNCC MoTa SoLuongTon

Mô tả các b ảng

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

MaTL Mã thể loại nchar 20

TenTL Tên thể loại nvarchar 255

MoTa Mô tả thể loại nvarchar 255

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

MaKH Mã khách hàng nchar 20

HoTenKH Họ tên khách hàng nvarchar 255

SDT Số điện thoại nchar 50

DiaChiGiaoHang Địa chỉ giao hàng nvarchar 255

Email Email khách hàng nchar 50

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

MaNV Mã nhân viên nchar 20

HoTenNV Họ tên nhân viên nvarchar 255

SDT Số điện thoại nchar 50

Email Email nhân viên nchar 50

MaNVQL Mã quản lý nchar 20

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

SoDH Mã sốđơn hàng nchar 20

NgayDH Ngày đặt hàng datetime

TrangThaiDH Trạng thái đơn int

NgayDuKienGiao Ngày dự kiến giao datetime

NgayThucTeGiao Ngày thực tế giao datetime

MaKH Mã khách hàng nchar 20

MaNV Mã nhân viên nchar 20

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

MaNCC Mã nhà cung cấp nchar 20

TenNCC Tên nhà cung cấp nvarchar 255

SDT Số điện thoại nchar 50

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

MaTH Mã thương hiệu nchar 20

TenTH Tên thương hiệu nvarchar 255

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

MaSP Mã sản phẩm nchar 20

TenSP Tên sản phẩm nvarchar 255

GiaSP Giá sản phẩm float

GiaKhuyenMai Giá khuyến mãi float 50

MaLoai Mã thể loại nchar 20

MaNCC Mã nhà cung cấp nchar 20

MoTa Mô tả sản phẩm nvarchar 255

SoLuongTon Số lượng tồn int

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

MaThuongHieu Mã thương hiệu nchar 20

MaSanPham Mã sản phẩm nchar 20

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

MaSP Mã sản phẩm nchar 20

SoDH Số đơn hàng nchar 20

SoLuong Số lượng đặt hàng int

GiaTien Đơn giá sản phẩm float

Tên trường Mô tả Kiểu dữ liệu Độ dài id Số đánh giá nchar 20

MaSP Mã sản phẩm nchar 20

MaKH Mã khách hàng nchar 20

TenDanhGia Tên đánh giá nvarchar 255

Nội dung Nội dung nvarchar 255

NgayDanhGia Ngày đánh giá datetime

CÀI ĐẶT CƠ SỞ D Ữ LI Ệ U

Tạo database

create database QLCuaHangMayTinh_TranNgocThinh on

Name=QLCuaHangMayTinh_TranNgocThinh, filename='D:\QLCuaHangMayTinh_TranNgocThinh.mdf', sizeMB, maxsize0MB,

Name=QLCuaHangMayTinh_logth2, filename='D:\QLCuaHangMayTinh_TranNgocThinh.ldf', size=2MB, maxsize=UNLIMITED,

Cài đặt các b ảng

2.2.1.Tạo bảng TheLoai create table TheLoai

MaTL nchar(20) not null primary key,

2.2.2.Tạo bảng KhachHang create table KhachHang

MaKH nchar(20) not null primary key,

2.2.3.Tạo bảng NhanVien create table NhanVien

MaNV nchar(20) not null primary key,

MaNVQL nchar(20), foreign key (MaNVQL) references NhanVien(MaNV)

2.2.4.Tạo bảng DonDatHang create table DonDatHang

SoDH nchar(20) not null primary key,

MaNV nchar(20) foreign key (MaKH) references KhachHang(MaKH), foreign key (MaNV) references NhanVien(MaNV)

2.2.5.Tạo bảng NhaCungCap create table NhaCungCap

MaNCC nchar(20) not null primary key,

2.2.6.Tạo bảng ThuongHieu create table ThuongHieu

MaTH nchar(20) not null primary key,

2.2.7.Tạo bảng SanPham create table SanPham

MaSP nchar(20) not null primary key,

SoLuongTon int, foreign key (MaLoai) references TheLoai(MaTL), foreign key (MaNCC) references NhaCungCap(MaNCC)

2.2.8.Tạo bảng ThuongHieuSanPham create table ThuongHieuSanPham

MaSanPham nchar(20), primary key (MaThuongHieu, MaSanPham), foreign key (MaThuongHieu) references ThuongHieu(MaTH), foreign key (MaSanPham) references SanPham(MaSP)

2.2.9.Tạo bảng ChiTietDH create table ChiTietDH

GiamGia float, primary key (MaSP, SoDH), foreign key (MaSP) references SanPham(MaSP), foreign key (SoDH) references DonDatHang(SoDH)

2.2.10.Tạo bảng DanhGiaSanPham create table DanhGiaSanPham

( id nchar(20) not null primary key,

NgayDanhGia datetime, foreign key (MaSP) references SanPham(MaSP),

Câu lệnh

Thêm dữ liệu vào bảng ThuongHieu

Code insert ThuongHieu(MaTH, TenTH, DiaChi, SDT) values ('TH001', 'Integrated Electronics', '2200 Mission College Blvd, Santa Clara,

TH002 corresponds to Advanced Micro Devices (AMD), located on the 9th floor of the Paxsky building at 13-15-17 Truong Dinh Street, Ward 6, District 3, Ho Chi Minh City, Vietnam, with customer support at hotro@amdvietnam.com.vn TH003 is Kingston, based at No 1-5 Li-Hsin Road, Science Based Industrial Park, Hsin-Chu, Taiwan, and reachable via asiasales@kingston.com.tw A TH004 entry is listed, but its brand name, address, and email are not provided in the current data.

'Gigabyte Technology', 'No.6, Baoqiang Rd., Xindian Dist., New

Taipei City 231, Taiwan'); insert ThuongHieu(MaTH, TenTH, DiaChi) values ('TH005', 'Micro-Star International Co Ltd', N'Tân Bắc, Đài Loan.');

Thêm dữ liệu vào bảng NhaCungCap

Bài viết trình bày hai câu lệnh SQL để chèn dữ liệu vào bảng NhaCungCap, mô tả thông tin của hai nhà cung cấp Câu lệnh đầu tiên thêm NCC001 với tên Dell, địa chỉ N'23 Nguyễn Thị Huỳnh, Phường 8, Quận Phú Nhuận, TP.HCM' và số điện thoại 0838424342 Câu lệnh thứ hai thêm NCC002 với tên FPT, địa chỉ N'Tòa nhà FPT Tân Thuận, Lô L29B-31B-33B, đường số 8, KCX Tân Thuận, phường Tân Thuận Đông, quận ' và có trường email Bài viết minh họa cách lưu trữ đầy đủ các trường MaNCC, TenNCC, DiaChi, SDT và email cho nhà cung cấp, nhằm quản lý dữ liệu hiệu quả trong cơ sở dữ liệu và tối ưu hóa nội dung liên quan đến quản trị nhà cung cấp. -**Support Pollinations.AI:** -🌸 **Ad** 🌸Powered by Pollinations.AI free text APIs [Support our mission](https://pollinations.ai/redirect/kofi) to keep AI accessible for everyone.

7, Thành phố Hồ Chí Minh, Việt

Nam.','02873023456','fptshop@fpt.com.vn');

Thêm dữ liệu vào bảng NhanVien

Code insert NhanVien(MaNV, HoTenNV, NgaySinh, GioiTinh, SDT,

Email) values('NV001',N'Trần Ngọc Thịnh','2001-02-

26',N'Nam','0384735254','ngocthinh1126@gmail.com') insert NhanVien(MaNV, HoTenNV, NgaySinh, GioiTinh, SDT,

Email, MaNVQL) values('NV002',N'Trần Đinh Diệu Mi','2001-09- 29',N'Nữ','0766651677','mi.tran290901@gmail.com','NV001') insert NhanVien(MaNV, HoTenNV, NgaySinh, GioiTinh, SDT,

Email, MaNVQL) values('NV003',N'Nguyễn Ngọc Duy','1997-1-

2',N'Nam','0384765325','duynguyen960416@gmail.com ','NV001') insert NhanVien(MaNV, HoTenNV, NgaySinh, GioiTinh, SDT,

Email, MaNVQL) values('NV004',N'Huỳnh Thanh Đông','2001-12-2',N'Nam','0384','dong@gmail.com ','NV001')

Thêm dữ liệu vào bảng KhachHang

Code insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH001',N'Phạm Đình Lộc','2000-01-

22',N'Nam','0939545848','locoham2000@gmail.com') insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH002',N'Lê Huy Hoàng','2001-12-

2',N'Nam','0945739505','lehuyhoang@gmail.com') insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH003',N'Trần Minh Anh','2001-11-

12',N'Nam','0939532548','minhanhtran@gmail.com') insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH004',N'Lê Đình Chiến','2001-01-

12',N'Nam','0945269505','chienprovip@gmail.com') insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH005',N'Huỳnh Thanh Đông','2001-04-

10',N'Nam','0939325248','dong2k1@gmail.com') insert KhachHang(MaKH, HoTenKH, NgaySinh, GioiTinh, SDT, Email) values('KH006',N'Nguyễn Thị Kim Vui','2001-05-

Thêm dữ liệu vào bảng TheLoai

Code insert TheLoai(MaTL, TenTL, MoTa) values ('TL001',N'CPU - Bộ vi xử lý',N'vi xử lý') insert TheLoai(MaTL, TenTL, MoTa) values ('TL002',N'Mainboard -

Bo Mạch Chủ',N'bo mạch chủ') insert TheLoai(MaTL, TenTL, MoTa) values ('TL003',N'VGA - Card Màn Hình',N'card đồ hoạ ') insert TheLoai(MaTL, TenTL, MoTa) values ('TL004',N'PSU -

Three computer hardware categories are defined in the catalog: TL005 Case - Computer Case, described as 'pc case'; TL006 RAM - Internal Memory, described as 'memory'; and TL007 Hard Drive (Ổ cứng) representing storage devices.

SSD',N'lưu trữ dữ liệu')

Thêm dữ liệu vào bảng SanPham

Code insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP001',N'CPU Intel Core i3-

10105F',2699000,'TL001','NCC002',N'CPU Intel Core i3-10105F là phiên bản nâng cấp của I3-10100F ',50) insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP002',N'CPU AMD Ryzen 7

5700G',9689000,'TL001','NCC002',N'Đánh giá CPU AMD Ryzen 7 5700G chính hãng, bảo hành dài',40) insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP003',N'Mainboard MSI Z590 PRO

MSI Z590 PRO WIFI is a premium MSI motherboard that uses the Intel Z590 chipset to deliver high-end performance As part of MSI's top-tier lineup, it includes built-in WiFi for seamless wireless connectivity and a robust feature set designed for gaming and demanding workloads This MSI Z590 PRO WIFI motherboard combines quality engineering with reliable stability, making it a strong choice for enthusiasts building a high-performance PC.

SoLuongTon) values ('SP004',N'Mainboard Gigabyte Z590 AORUS PRO AX',7879000,'TL002','NCC002',N'Mainboard Gigabyte Z590 AORUS PRO AX là bo mạch chủ sử dụng chipset Z590 của

Intel.',42) insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC,

SoLuongTon) values ('SP005',N'Mainboard MSI B560M

PRO',2500000,'TL002','NCC001',15) insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP006',N'CPU Intel Core i5-

10500',5599000,'TL001','NCC001',N'Dòng Core i5 thế hệ thứ 10 dành cho máy bàn của Intel.',70); insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP007',N'CPU Intel Core i5-

10400',5159900,'TL001','NCC001',N'Dòng Core i5 thế hệ thứ 10 dành cho máy bàn của Intel.',70); insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP008',N'Card màn hình Asus ROG STRIX- LC-RTX 3080 Ti-O12G-

GAMING',55449000,'TL003','NCC001',N'Nhân đồ họa: Nvidia RTX 3080Ti.',15); insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP009',N'Card màn hình Gigabyte RTX 3090 AORUS XTREME-24GD',66999000,'TL003','NCC001',N'Dung lượng bộ nhớ: 24Gb GDDR6X.',10); insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP0010',N'Card màn hình MSI RTX 3090

VENTUS 3X OC 24G',65999000,'TL003','NCC001',N'Dung lượng bộ nhớ: 24Gb GDDR6X.',8); insert SanPham(MaSP, TenSP, GiaSP, MaLoai, MaNCC, MoTa,

SoLuongTon) values ('SP0011',N'FSP Power Supply SFX PRO Series Model FSP450-50SAC',1379000,'TL004','NCC001',N'Đáp ứng tiêu chuẩn mới nhất SFX12V V3.3.',8);

Thêm dữ liệu vào bảng ThuongHieuSanPham

These statements populate the brand-to-product mapping in the ThuongHieuSanPham table by linking brand codes (MaThuongHieu) with product codes (MaSanPham) The resulting mappings include TH001–SP001, TH002–SP002, TH005–SP003, TH004–SP004, TH001–SP006, TH001–SP007, TH001–SP009, TH005–SP0010, and TH001–SP0011, reflecting how multiple brands are connected to various products within the catalog.

Thêm dữ liệu vào bảng DonDatHang

Code insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH001','2021/10/05 17:20:00',0,'2021/10/12

17:20:00','','KH001','NV001') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH002','2021/10/04 17:20:00',0,'2021/10/13

17:20:00','','KH001','NV001') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH003','2021/10/04 17:20:00',0,'2021/10/12

17:20:00','','KH002','NV001') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH004','2021/10/05 17:20:00',0,'2021/10/15

17:20:00','','KH002','NV001') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH005','2021/10/05 17:20:00',0,'2021/10/13

17:20:00','','KH002','NV002') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH006','2021/10/05 17:20:00',0,'2021/10/19

17:20:00','','KH002','NV002') insert into DonDatHang(SoDH, NgayDH, TrangThaiDH,

NgayDuKienGiao, NgayThucTeGiao, MaKH, MaNV) values('DH007','2021/10/05 17:20:00',0,'2021/10/19

Thêm dữ liệu vào bảng ChiTietDH

SQL inserts populate the ChiTietDH table with multiple order detail rows, each capturing MaSP, SoDH, SoLuong, GiaTien, and GiamGia The data shows DH001 includes SP001 with 2 units at 2699000 and a 100000 discount, and SP004 with 1 unit at 7879000 and a 300000 discount DH002 contains SP001 with 2 units at 2699000 and a 100000 discount, SP002 with 2 units at 2699000 and a 100000 discount, and SP003 with 2 units at 4999000 and a 500000 discount DH003 records SP001 with 2 units at 2699000 and a 100000 discount DH004 records SP003 with 2 units at 4999000 and a 500000 discount DH005 and DH006 each include SP002 with 2 units at 9689000 and a 1000000 discount DH007 includes SP003 with 2 units at 4999000 and a 500000 discount.

Thêm dữ liệu vào bảng DanhGiaSanPham

Code insert into DanhGiaSanPham(id, MaSP, MaKH, TenDanhGia,

ChatLuong, GiaTien, NoiDung, NgayDanhGia) values('DGSP001','SP001','KH001',N'CPU mạnh mẽ',5,2699000,N'Giao hàng nhanh, giá tốt','2021/10/29 07:20:00') insert into DanhGiaSanPham(id, MaSP, MaKH, TenDanhGia,

ChatLuong, GiaTien, NoiDung, NgayDanhGia) values('DGSP002','SP002','KH003',N'CPU mạnh mẽ, chất lượng',5,9689000,N'Sản phẩm ok','2021/11/1 12:45:00') insert into DanhGiaSanPham(id, MaSP, MaKH, TenDanhGia,

ChatLuong, GiaTien, NoiDung, NgayDanhGia) values('DGSP003','SP003','KH002',N'Mainboard quá chuẩn',5,4999000,N'Giao hàng nhanh, tốt','2021/10/1 17:00:00') insert into DanhGiaSanPham(id, MaSP, MaKH, TenDanhGia,

ChatLuong, GiaTien, NoiDung, NgayDanhGia) values('DGSP004','SP005','KH001',N'Mainboard tốt',4,7879000,N'Tốt','2021/10/21 17:20:00')

Câu 1: Cập nhật địa chỉ giao hàng = ‘79/8G QL 13, P26, Q Bình Thạnh’ với makh = ‘KH001’

Code update KhachHang set DiaChiGiaoHang=N'79/8G QL 13, P26, Q Bình Thạnh' where MaKH='KH001'

Câu 2: Cập nhật email= ‘dell@gmail.com’ với MaNCC = ‘NCC001’

Code update NhaCungCap set Email='dell@gmail.com' where MaNCC='NCC001'

Câu 1: Xoá dữ liệu của khách hàng có MaKH = ‘KH006’

Code delete from KhachHang where MaKH='KH006'

Câu 2: Xoá dữ liệu của thể loại có matl = ‘TL007’

Code delete from TheLoai where MaTL='TL007'

2.3.4.1 Câu truy vấn sử dụng điều kiện WHERE

Câu 1: Hiển thị 2 sản phẩm đầu tiên trong bảng sanpham, thông tin gồm masp, tensp, giasp, tenncc

Code select top(2) sp.MaSP, sp.TenSP, sp.GiaSP, ncc.TenNCC from SanPham sp, NhaCungCap ncc where sp.MaNCC = ncc.MaNCC

Câu 2: Hiển thị các sản phẩm có giá >= 500000 đến 2

Code select sp.MaLoai, count(*) as SoSanPham from SanPham sp group by sp.MaLoai having COUNT(*)>2

Câu 2: Cho biết mã thể loại nào có số sản phẩm >2

Code select c.SoDH, count(c.MaSP) as LoaiSP from ChiTietDH c group by c.SoDH having count(*)>=2

2.3.4.5 Câu truy vấn sử dụng LEFT JOIN, FULL JOIN, RIGHT JOIN Câu 1: Cho biết tensp, soluong, giatien, giamgia có sodh= ‘DH001’

Code select s.TenSP, c.SoLuong, c.GiaTien, c.GiamGia from SanPham s left join ChiTietDH c on c.MaSP = s.MaSP where c.SoDH='DH001'

Câu 2: Cho biết tên nhà cung cấp của mỗi sản phẩm, thông tin gồm masp, tensp, tenncc

Code select s.MaSP, s.TenSP, n.TenNCC from SanPham s left join NhaCungCap n on n.MaNCC = s.MaNCC

Câu 3: Trả về tất cả các hàng từ bảng khachhang và dondathang, thông tin gồm hotenkh, sodh, ngaydh, ngaydukiengiao, ngaythuctegiao,trangthaidh

Code select k.HoTenKH, d.SoDH, d.NgayDH, d.NgayDuKienGiao, d.NgayThucTeGiao, d.TrangThaiDH from KhachHang k full join DonDatHang d on k.MaKH = d.MaKH

Câu 4: Trả về tất cả các hàng từ bảng nhacungcap và dondathang, thông tin gồm tensp, tenncc, diachi

Code select s.TenSP, n.TenNCC, n.DiaChi from SanPham s full join NhaCungCap n on n.MaNCC = s.MaNCC

Câu 5: Hiển thị hotenkh, sodh, ngaydh, ngaydukiengiao, ngaythuctegiao, trangthaidh có trong bảng dondathang

Code select k.HoTenKH, d.SoDH, d.NgayDH, d.NgayDuKienGiao, d.NgayThucTeGiao, d.TrangThaiDH from KhachHang k right join DonDatHang d on k.MaKH = d.MaKH

Câu 6: Hiển thị hotennv, sodh, ngaydh, ngaydukiengiao, ngaythuctegiao, trangthaidh có trong bảng dondathang

Code select n.HoTenNV, d.SoDH, d.NgayDH, d.NgayDuKienGiao, d.NgayThucTeGiao, d.TrangThaiDH from NhanVien n right join DonDatHang d on d.MaNV = n.MaNV

2.3.4.6 Câu truy vấn sử dụng truy vấn con

Câu 1: Cho biết tổng số đơn hàng bán được của mỗi nhân viên

Code select n.MaNV, n.HoTenNV, truyvancon1.TongDonHang from NhanVien n,

(select d.MaNV, count(*) as TongDonHang from DonDatHang d group by d.MaNV) as truyvancon1 where n.MaNV = truyvancon1.MaNV

Câu 2: Cho biết sản phẩm có số lượng tồn 30

Code create view sanpham_soluongton as select * from SanPham where SoLuongTon > 30

Chạy thử select * from sanpham_soluongton

Câu 3: Cập nhật giakhuyenmai 00000 có masp = ‘SP001’ vào view_sanpham_soluongton

Code update sanpham_soluongton set GiaKhuyenMai 00000 where MaSP='SP001'

Chạy thử select * from sanpham_soluongton

Câu 1: Viết store procedure insert thể loại với matl và tentl được đưa vào từ ngoài

Code create procedure insert_theloai(@matl nchar(20), @tentl nvarchar(255)) as begin insert into TheLoai(MaTL, TenTL) values(@matl, @tentl); end

Chạy thử exec insert_theloai 'TL007', N'SSD - Ổ Cứng'

Câu 2: Viết store procedure cho biết các sách mà có thông tin của thương hiệu, thông tin gồm masp

Code create procedure thongtin_thuonghieusanpham as begin select s.MaSP from SanPham s intersect select thsp.MaSanPham from ThuongHieuSanPham thsp end

Chạy thử exec thongtin_thuonghieusanpham

Câu 3: Viết store procedure cho biết các sản phẩm có thông tin thương hiệu, hiển thị masp, tensp, soluongton

Code create procedure thongtin_thuonghieusanpham1 as begin select s.MaSP, s.TenSP, s.SoLuongTon from SanPham s where s.MaSP in (select s.MaSP intersect select thsp.MaSanPham from ThuongHieuSanPham thsp) end

Chạy thử exec thongtin_thuonghieusanpham1;

Câu 4: Viết store procedure xoá 1 dòng dữ liệu với tham số đầu vào là masp

Code create procedure xoa_sanpham(@masp nchar(20)) as begin delete from SanPham where MaSP = @masp; end

Chạy thử exec xoa_sanpham 'SP008'

Câu 1: Viết function thành tiền

Code create function thanhtien(@soluong int, @giatien float, @giamgia float) returns dec(10,2) as begin return @soluong*@giatien-@giamgia; end

Chạy thử select dbo.thanhtien(2,10000,5000) as ThanhTien;

Câu 2: Viết function cho biết số lượng sản phẩm có số lượng tồn lớn hơn số lượng tồn nhận giá trị từ bên ngoài

The dem_sanpham_soluongton is a SQL scalar function that takes an integer parameter named soluongton representing a minimum stock level, and it returns an integer count It declares a local variable @dem initialized to 0, then assigns @dem the result of counting rows from a subquery that selects the SoLuongTon column from the SanPham table where SoLuongTon is greater than or equal to @soluongton The function effectively counts how many products have stock on hand at or above the specified threshold It then returns @dem, providing a quick way to measure inventory against a minimum stock level This approach supports inventory management and reporting by giving developers an easy means to determine the number of items meeting a given stock criterion.

Chạy thử print dbo.dem_sanpham_soluongton(30)

Câu 3: Viết function tính tiền đơn hàng có sodh nhập từ bàn phím

Code create function thanhtien_donhang (@sodh nchar(20)) returns dec(10,2) as begin declare @thanhtien_donhang dec(10,2) select @thanhtien_donhang = sum(tt.thanhtien) from

(select *, dbo.thanhtien(soluong,giatien,giamgia) as thanhtien from ChiTietDH where SoDH = @sodh) as tt return @thanhtien_donhang end

Kết quả print dbo.thanhtien_donhang('DH002')

Câu 4: Viết function tính tổng số tiền của tất cả đơn hàng mà khách hàng đó đã mua có makh nhập từ bàn phím

Code create function tongtien_khachhang (@makh nchar(20)) returns dec(10,2) as begin declare @tongtien dec(10,2) select @tongtien = sum(tt.thanhtien) from

(select c.*, d.MaKH, dbo.thanhtien(soluong,giatien,giamgia) as thanhtien from ChiTietDH c full join DonDatHang d on d.SoDH c.SoDH where d.MaKH = @makh) as tt return @tongtien end

Kết quả print dbo.tongtien_khachhang('KH001')

Câu 5: Viết function trả về danh sách các sản phẩm gồm masp, tensp, giasp từ 1 thể loại nhập từ bàn phím

Code create function sanpham_theloai(@math nchar(20)) returns table as return select MaSP, TenSP, GiaSP from SanPham s where s.MaLoai = @math

Kết quả select * from sanpham_theloai('TL002')

Câu 6: Viết function trả về danh sách người dùng, khách hàng

Code create function danhsach_nguoidung() returns @lienhe table

( ma nchar(20), nguoidung nvarchar(20) ) as begin insert into @lienhe select manv, N'Nhân viên' from NhanVien insert into @lienhe select makh, N'Khách hàng' from KhachHang return; end

Kết quả select * from danhsach_nguoidung();

2.3.8.CLUSTER INDEX và NONE CLUSTER INDEX

tạo bảng khachhang_nonindex lấy dữ liệu từ bản khachhang select * into khachhang_noindex from KhachHang

Câu 1: Tạo index cluster cho bảng khachhang_noindex

Code create clustered index id_makh on khachhang_noindex(makh)

Câu 2: Đổi tên clustered index id_makh thành id_makh_khachhang

'khachhang_noindex.id_makh', 'id_makh_khachhang',

Câu 3: Tạo nonclustered index cho cột hotenkh của bảng khachhang

Code create nonclustered index id_hotenkh_customer on khachhang(hotenkh)

Câu 4: Tạo unique nonclustered index cho email của bảng nhanvien

Code create unique nonclustered index unionclus_nhanvien on nhanvien(email)

Câu 1: Khi xoá 1 dòng trong bảng ChiTietDH thì phải tăng số lượng tồn của sản phẩm

Code create trigger tr_xoaCTDH on ChiTietDH for delete as update SanPham set SoLuongTon = SoLuongTon + SoLuong from deleted where SanPham.MaSP = deleted.MaSP

Câu 2: Khi thêm 1 dòng trong bảng ChiTietDH thì phải trừ số lượng tồn của sản phẩm

This SQL trigger, named tr_themCTDH, fires on insert into ChiTietDH to enforce inventory checks during order creation It joins the inserted rows with SanPham on MaSP and counts any cases where SoLuongTon minus SoLuong would be negative If such rows exist, it prints the message “Not enough product to sell,” rolls back the transaction, and returns without changing data If stock is sufficient, it updates SanPham to decrement SoLuongTon by the ordered quantity from the inserted rows, keeping the inventory in sync with the new order.

Câu 3: Khi thay đổi cột số lượng trên bảng ChiTietDH thì cập nhật lại số lượng tồn trong bảng sản phẩm

An SQL trigger on chitietdh fires on UPDATE to enforce inventory integrity It declares a local @D and sets it to the number of affected rows where the product in SanPham matches both the old (deleted) and new (inserted) rows and where SoLuongTon + d.SoLuong - i.SoLuong would go negative If @D > 0, the trigger prints the message 'Không đủ sản phẩm để bán', rolls back the transaction, and exits Otherwise, it updates SanPham to reflect the new on-hand stock with SoLuongTon = SoLuongTon + d.SoLuong - i.SoLuong for the affected product Overall, the trigger prevents overselling during updates and maintains stock consistency.

Câu 4: Kiểm tra nếu dem >4 thì thông báo là không được mua quá 4 mặt hàng

SQL trigger tr_soCTDH on the ChiTietDH table enforces a maximum of four items per order by evaluating the number of detail rows for the same order during an insert; it checks the existing ChiTietDH rows against the newly inserted rows (inserted pseudo-table), and if the total count for a given SoDH exceeds four, it prints "The number of items cannot exceed 4" and rolls back the transaction to prevent the insert.

Câu 1: Sử dụng cursor backup dữ liệu của cơ sở dữ liệu

This SQL Server backup script declares variables for the database name, backup path, output filename, and a date-stamped suffix, fixes the backup directory to D:\backup\, and constructs a date string in yyyyMMdd format from GETDATE() It defines a cursor that selects the database name from master.dbo.sysdatabases where the name equals QLCuaHangMayTinh_TranNgocThinh, opens the cursor, fetches the database name into @name, builds the backup filename as the path plus the database name, an underscore, the date, and a bak extension, then executes BACKUP DATABASE @name TO DISK = @filename, and finally closes and deallocates the cursor.

Câu 2: Sử dụng cursor để thực hiện đọc dữ liệu từ bảng nhân viên

The SQL Server script demonstrates a cursor-based approach to enumerate all rows from the NhanVien table by declaring variables for employee code, name, and phone number, defining a cursor over the selection, and opening it to iterate through each row During the loop, it outputs the employee code, the employee name, and the phone number for every record, then advances to the next row until all data has been processed After finishing, the cursor is closed and deallocated to release resources.

Câu: Phục hổi dữ liệu mà mình đã sao lưu

Code restore database qlmy from disk = 'D:\backup\QLCuaHangMayTinh_TranNgocThinh'

Câu: Cấp quyền xem các bảng DonDatHang, SanPham, TheLoai,

DanhGiaSanPham, ThuongHieu, ThuongHieuSanPham, NhaCungCap và

KhachHang chỉ xem được MaKH, HoTenKH, SDT, DiaChiGiaoHang, Email, quyền thêm vào bảng DonDatHang,

tạo tài khoản create login nhanvien with password ='1';

tạo người dùng create user tran_ngoc_thinh for login nhanvien;

To grant data access for the user tran_ngoc_thinh, the database administrator issued SELECT permissions across key tables, including DonDatHang (orders), SanPham (products), and NhaCungCap (suppliers) The user also receives SELECT access to KhachHang (customers) with column-level visibility limited to MaKH, HoTenKH, SDT, DiaChiGiaoHang, and Email, ensuring only these fields are readable Additional SELECT rights cover TheLoai (categories), DanhGiaSanPham (product reviews), ThuongHieu (brands), and ThuongHieuSanPham (brand-specific products), enabling comprehensive read-only access to the catalog and related data.

TỔ NG K Ế T

• Hệ thống quản lý đầy đủ các chức năng phục vụ cho việc quản lý, bán hàng

• Quản lý được doanh thu của cửa hàng

• Khi bán hàng ra thì sẽ tự động cập nhật dữ liệu tồn trong sản phẩm giúp quản lý dễ dàng hơn.

• Có phân quyền nhân viên hạn chế truy chức năng truy cập vào dữ liệu giúp bảo đảm dữ liệu

• Tự động sao lưu dữ liệu đề phòng những trường hợp dữ liệu bị mất bất khả kháng

• Hệ cơ sở dữ liệu chưa được tối ưu.

• Tiếp tục học tập, nghiên cứu nâng cao kĩ năng để dần khắc phục được những hạn chế trên

• Xây dựng bảo mật dữ liệu tốt hơn

• Tối ưu hoá cơ sở dữ liệu giúp truy cập dữ liệu nhanh hơn.

Ngày đăng: 12/12/2022, 08:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w