Script SQL để tạo Database Shop Computer
-- Tạo cơ sở dữ liệu với tên ShopComputer1
CREATE DATABASE ShopComputer1;
-- Chọn cơ sở dữ liệu
USE ShopComputer1;
-- Tạo bảng LoaiSanPham để lưu thông tin các loại sản phẩm
CREATE TABLE LoaiSanPham (
MaLoai INT PRIMARY KEY,
TenLoai NVARCHAR(50) NOT NULL
);
-- Tạo bảng HangSanXuat để lưu thông tin các hãng sản xuất
CREATE TABLE HangSanXuat (
MaHang INT PRIMARY KEY,
TenHang NVARCHAR(50) NOT NULL,
QuocGia NVARCHAR(50) NULL,
Website NVARCHAR(100) NULL
);
-- Tạo bảng SanPham để lưu thông tin các sản phẩm
CREATE TABLE SanPham (
MaSP INT PRIMARY KEY,
TenSP NVARCHAR(100) NOT NULL,
Gia DECIMAL(18, 2) NOT NULL CHECK (Gia >= 0),
MoTa NVARCHAR(MAX) NULL,
HinhAnh NVARCHAR(255) NULL,
SoLuong INT NOT NULL CHECK (SoLuong >= 0),
MaLoai INT NOT NULL REFERENCES LoaiSanPham(MaLoai),
MaHang INT NOT NULL REFERENCES HangSanXuat(MaHang)
);
-- Tạo bảng KhachHang để lưu thông tin các khách hàng
CREATE TABLE KhachHang (
MaKH INT PRIMARY KEY,
HoTen NVARCHAR(50) NOT NULL,
Email NVARCHAR(50) NOT NULL UNIQUE,
MatKhau NVARCHAR(50) NOT NULL,
DiaChi NVARCHAR(255) NULL,
DienThoai NVARCHAR(20) NULL
);
-- Tạo bảng DonHang để lưu thông tin các đơn hàng
CREATE TABLE DonHang (
MaDH INT PRIMARY KEY,
NgayDat DATE NOT NULL DEFAULT GETDATE(),
TongTien DECIMAL(18, 2) NOT NULL CHECK (TongTien >= 0),
TrangThai NVARCHAR(20) NOT NULL CHECK (TrangThai IN (N'Chờ xác nhận', N'Đã xác nhận', N'Đang giao hàng', N'Đã giao hàng', N'Đã hủy')),
MaKH INT NOT NULL REFERENCES KhachHang(MaKH)
);
-- Tạo bảng ChiTietDonHang để lưu thông tin chi tiết các đơn hàng
CREATE TABLE ChiTietDonHang (
MaDH INT NOT NULL REFERENCES DonHang(MaDH),
MaSP INT NOT NULL REFERENCES SanPham(MaSP),
SoLuong INT NOT NULL CHECK (SoLuong > 0),
DonGia DECIMAL(18, 2) NOT NULL CHECK (DonGia >= 0),
ThanhTien AS SoLuong * DonGia,
PRIMARY KEY (MaDH, MaSP)
);
-- Thêm dữ liệu vào bảng LoaiSanPham
INSERT INTO LoaiSanPham (MaLoai, TenLoai) VALUES
(1, 'Laptop'),
(2, 'Desktop'),
(3, 'Tablet');
-- Thêm dữ liệu vào bảng HangSanXuat
INSERT INTO HangSanXuat (MaHang, TenHang, QuocGia, Website) VALUES
(1, 'Apple', N'Mỹ', 'https://www.apple.com/'),
(2, 'Samsung', N'Hàn Quốc', 'https://www.samsung.com/'),
(3, 'Dell', N'Mỹ', N'https://www.dell.com/'),
(4, 'Lenovo', N'Trung Quốc', 'https://www.lenovo.com/');
-- Thêm dữ liệu vào bảng SanPham
INSERT INTO SanPham (MaSP, TenSP, Gia, MoTa, HinhAnh, SoLuong, MaLoai, MaHang) VALUES
(1, 'MacBook Pro 16-inch', 2499.00, NULL, NULL, 100, 1, 1),
(2, 'Samsung Galaxy Book Pro 360', 1199.99, NULL, NULL, 80, 1, 2),
(3, 'Dell XPS 8940', 699.99, NULL, NULL, 50, 2, 3),
(4, 'Lenovo IdeaCentre AIO 3', 549.99, NULL, NULL, 40, 2, 4),
(5, 'iPad Pro 12.9-inch', 1099.00, NULL, NULL, 60, 3, 1),
(6, 'Samsung Galaxy Tab S7+', 849.99, NULL, NULL, 70, 3, 2);
-- Thêm dữ liệu vào bảng KhachHang
INSERT INTO KhachHang (MaKH, HoTen, Email, MatKhau, DiaChi, DienThoai) VALUES
(1, N'Nguyễn Văn A', 'nguyenvana@gmail.com', '123456', N'123 Võ Thị Sáu', '0123456789'),
(2, N'Trần Thị B', 'tranthib@gmail.com', '654321', N'456 Nguyễn Văn Trỗi', '0987654321'),
(3, N'Phạm Văn C', 'phamvanc@gmail.com', 'abcxyz', NULL, NULL);
-- Thêm dữ liệu vào bảng DonHang
INSERT INTO DonHang (MaDH, NgayDat, TongTien, TrangThai, MaKH) VALUES
(1, '2023-06-06', 3698.99, N'Đã giao hàng', 1),
(2, '2023-06-07', 2449.98, N'Đang giao hàng', 2);
-- Thêm dữ liệu vào bảng ChiTietDonHang
INSERT INTO ChiTietDonHang (MaDH, MaSP, SoLuong, DonGia) VALUES
(1, 1, 1, 2499.00),
(1, 6, 1, 849.99),
(2, 2, 1, 1199.99),
(2, 5, 1, 1099.00);