Việc lưu trữ và quản lý thông tin về linh kiện điện tử mộtcách hiệu quả là rất quan trọng đối với các doanh nghiệp hoạt động trong lĩnh vực này.Cơ sở dữ liệu database là một hệ thống tập
GIỚI THIỆU TỔNG QUAN VỀ PHẦN MỀM MY SQL
My SQL là gì?
MySQL là một hệ quản trị cơ sở dữ liệu phổ biến và mạnh mẽ, được sử dụng rộng rãi trên toàn cầu Đây là một hệ thống quản lý cơ sở dữ liệu mã nguồn mở, có khả năng lưu trữ và truy xuất dữ liệu một cách hiệu quả, linh hoạt và đáng tin cậy Dưới đây là một tổng quan về MySQL:
• Độ Phổ Biến và Ổn Định: MySQL là một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất trên thế giới Sự ổn định và hiệu suất của nó đã được chứng minh qua nhiều năm và được sử dụng trong nhiều ứng dụng khác nhau, từ các trang web nhỏ đến các hệ thống doanh nghiệp lớn.
• Hỗ Trợ Đa Nền Tảng: MySQL hỗ trợ trên nhiều nền tảng hệ điều hành khác nhau như Windows, Linux và macOS, làm cho nó linh hoạt trong việc triển khai trên nhiều môi trường khác nhau.
• Tính Bảo Mật: MySQL cung cấp các tính năng bảo mật mạnh mẽ, bao gồm phân quyền người dùng, mã hóa dữ liệu và các công cụ kiểm tra an ninh, giúp bảo vệ dữ liệu một cách an toàn.
• Hiệu Năng Cao: MySQL được tối ưu hóa để đạt được hiệu năng cao trong việc xử lý truy vấn và ghi dữ liệu, làm cho nó trở thành lựa chọn phổ biến cho các ứng dụng yêu cầu xử lý dữ liệu nhanh và hiệu quả.
• Hỗ Trợ Cộng Đồng Rộng Rãi: Cộng đồng người dùng MySQL rất lớn và hoạt động tích cực, cung cấp tài liệu, hỗ trợ và các công cụ phát triển mở rộng.
• Công Cụ Quản Lý Dữ Liệu: MySQL đi kèm với các công cụ quản lý như MySQL Workbench, giúp người dùng dễ dàng quản lý cơ sở dữ liệu, tạo bảng, truy vấn và quản lý quyền truy cập.
Hình 1: Cách thức hoạt động của My SQL
Cách thức hoạt động My SQL
Hình ảnh trên giải thích cấu trúc cơ bản về việc giao tiếp giữa client-server model Một máy client sẽ liên lạc với máy server trong một mạng nhất định Mỗi client có thể gửi một request từ giao diện người dùng (Graphical user interface – GUI) trên màn hình, và server sẽ trả về kết quả như mong muốn Miễn là cả hai hiểu nhau Cách vận hành chính trong môi trường MySQL cũng như vậy:
- MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa sự liên quan giữa các bảng đó.
- Client sẽ gửi yêu cầu SQL bằng một lệnh đặc biệt trên MySQL.
- Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client.
Dữ liệu và cấu trúc trong My SQL
Các kiểu số nguyên tiêu chuẩn của SQL như INTEGER (or INT) và SMALLINT đều được hỗ trợ bởi MySQL Và các mở rộng tiêu chuẩn, MySQL cũng hỗ trợ các kiểu số nguyên khác như TINYINT, MEDIUMINT, và BIGINT Bảng dưới đây sẽ liệt kê các kiểu và không gian lưu trữ đòi hỏi và phạm vi của chúng (Giá trị nhỏ nhất, lớn nhất cho kiểu số nguyên có dấu, và không dấu).
Kiểu dữ liệu Độ dài (số byte )
Giá trị nhỏ nhất (Có dấu)
Giá trị lớn nhất (Có dấu)
Giá trị nhỏ nhất (Khôn g dấu)
Giá trị lớn nhất (Không dấu)
Kiểu dữ liệu FLOAT và DOUBLE mô tả gần đúng các giá trị số thực MySQL sử dụng 4 bytes để lưu trữ dữ liệu FLOAT và 8 bytes dành cho kiểu dữ liệu DOUBLE.
Một số chấm động (floating-point number) không thể không có dấu (unsigned) Bạn có thể định nghĩa độ dài phần nguyên (M) và độ dài phần thập phân (D) Điều này không bắt buộc và mặc định là 10,2, ở đây 10 là độ dài phần nguyên còn 2 là số số thập phân Phần thập phân có thể sử dụng 24 vị trí cho một số FLOAT.
Một số chấm động DOUBLE (Độ chính xác gấp
2) cũng không thể không có dấu (unsigned) Bạn có thể định nghĩa độ dài phần nguyên (M) và độ dài phần thập phân (D) Điều này không bắt buộc và mặc định là 16,4, ở đó 16 là độ dài phần nguyên còn 4 là độ dài phần thập phân Phần thập phân có thể sử dụng tới 53 vị trí cho một số DOUBLE REAL là một từ đồng nghĩa với DOUBLE.
Kiểu dữ liệu Độ dài
Giá trị nhỏ nhất (Có dấu)
Giá trị lớn nhất (Có dấu)
Giá trị nhỏ nhất (Không
Giá trị lớn nhất (Không
1.3.3 Kiểu dấu chấm cố định (Fixed-Point Types)
Kiểu dấu chấm cố định (Fixed-Point data type) được sử dụng để bảo vệ độ chính xác (precision), ví dụ như với dữ liệu tiền tệ Trong MySQL kiểu DECIMAL và
NUMERIC lưu trữ chính xác các dữ liệu số MySQL 5.6 lưu trữ giá trị DECIMAL theo định dạng nhị phân.
Trong SQL chuẩn, cú pháp DECIMAL(5,2) nghĩa là độ chính xác (precision) là 5, và 2 là phần thập phân (scale), nghĩa là nó có thể lưu trữ một giá trị có 5 chữ số trong đó có 2 số thập phân Vì vậy giá trị lưu trữ sẽ là -999.99 tới 999.99 Cú pháp DECIMAL(M) tương đương với DECIMAL(M,0) Tương tự DECIMAL tương đương với
DECIMAL(M,0) ở đây M mặc định là 10 Độ dài tối đa các con số cho DECIMAL là 65.
1.3.4 Kiểu dữ liệu Bit (Bit Value Types)
Kiểu dữ liệu BIT được sử dụng để lưu trữ trường giá trị bit Kiểu BIT(N) có thể lưu trữ N giá trị bit N có phạm vi từ 1 tới 64 Để chỉ định giá trị các bit, có thể sử dụng b'value' value là dẫy các số nhị phân 0 hoặc 1 Ví dụ b'111' mô tả số 7, và b'10000000' mô tả số 128.
1.3.5 Kiểu số và thuộc tính
MySQL hỗ trợ một mở rộng cho việc tùy chọn chỉ định độ dài hiển thị là một số nguyên trong dấu ngoặc ngay sau từ khóa kiểu dữ liệu.
TYPE(N) Tại đây N là một số nguyên hiển thị chiều rộng cho kiểu độ dài lên đến N chữ số.
ZEROFILL Các khoảng đệm (padding) được thay thế bởi số 0 Ví dụ với cột kiểu INT(3) ZEROFILL, 7 sẽ hiển thị là 007.
Các kiểu dữ liệu ngày tháng và thời gian đại diện bao gồm DATE, TIME,
DATETIME, TIMESTAMP, and YEAR Mỗi kiểu có một phạm vi hợp lệ.
1.3.7 Kiểu dữ liệu DATETIME, DATE, và TIMESTAMP
Kiểu dữ liệu Mô tả Định dạng hiển thị Phạm vi
Sử dụng khi bạn cần giá trị lưu trữ cả hai thông tin ngày tháng và thời gian.
Sử dụng khi bạn muốn lưu trữ chỉ thông tin ngày tháng.
Lưu trữ cả hai thông tin ngày tháng và thời gian
Giá trị này sẽ được chuyển đổi từ múi giờ hiện tại sang UTC trong khi lưu trữ, và sẽ chuyển trở lại múi giờ hiện tại khi lấy dữ liệu ra.
MySQL lấy và hiển thị thời gian theo định dạng ''HH:MM:SS' (hoặc định dạng 'HHH:MM:SS' đối với các giá trị giờ lớn) Giá trị của TIME có thể trong khoảng '-
838:59:59' tới '838:59:59' Phần thời gian có thể lớn bởi vì kiểu TIME có thể không chỉ mô tả thời gian của một ngày (Vốn chỉ có tối đa 24 giờ), mà nó có thể là thời gian trôi qua hoặc khoảng thời gian giữa hai sự kiện (Cái mà có thể lớn hơn 24h thậm trí có giá trị âm).
Kiểu dữ liệu YEAR được sử dụng 1-byte để mô tả giá trị Nó có thể khai báo YEAR(2) hoặc YEAR(4) chỉ định rõ chiều rộng hiển thị là 2 hay 4 ký tự Nếu không chỉ rõ chiều rộng mặc định là 4 ký tự YEAR(4) và YEAR(2) khác nhau định dạnh hiển thị nhưng có cùng phạm vi giá trị Với định dạng 4 số, MySQL hiển thị giá trị YEAR theo định dạng YYYY, với phạm vi 1901 tới 2155, hoặc 0000 Với định dạng 2 số, MySQL chỉ hiển thị 2 số cuối; ví dụ 70 (1970 hoặc 2070) hoặc 69 (2069) Bạn có thể chỉ định giá trị YEAR theo một vài định dạng khác nhau: Độ dài chuỗi Phạm vi
Một số có 4 con số 1901 tới 2155.
Giá trị từ '0' tới '99' MySQL chuyển đổi '0' tới '69' tương đương với giá trị YEAR từ 2000-2069 Và '70' tới '99' tương đương với YEAR từ 1970 tới 1999.
Một số có 1 hoặc 2 chữ số
Giá trị 1 từ 99 MySQL chuyển đổi giá trị từ 1 tới 69 tương đương với YEAR từ 2001 tới 2069 Và 70 tới 99 tương đương với YEAR từ 1970 tới 1999.
Các kiểu dữ liệu String bao gồm:
1.3.11 Kiểu dữ liệu CHAR và VARCHAR
Kiểu dữ liệu CHAR và VARCHAR là giống nhau, nhưng khác nhau ở cách chúng được lưu trữ và truy xuất Chúng cũng khác nhau về chiều dài tối đa và giữ lại hay không khoảng trắng phía trước (trailing spaces).
Kiểu dữ liệu Mô tả Định dạng hiển thị Phạm vi các ký tự
Chứa chuỗi không phải nhị phân (non-binary strings) Độ dài là cố định như khi bạn khai báo cột của bảng Khi lưu trữ chúng được độn thêm bên phải (right-padded) để có độ dài chỉ được chỉ định.
Khoảng trắng phía trước (Trailing spaces) được loại bỏ
Chứa các chuỗi không phải nhịn phân (non-binary strings) Cột là chuỗi có chiều dài thay đổi.
Giá trị từ 0 tới 255 với MySQL trước phiên bản 5.0.3 Và
0 tới 65,535 với các phiên bản MySQL 5.0.3 hoặc mới hơn.
1.3.12 Kiểu dữ liệu BINARY và VARBINARY
Các kiểu dữ liệu BINARY và VARBINARY tương tự như CHAR và VARCHAR, ngoại trừ việc chúng có chứa các chuỗi nhị phân chứ không phải là chuỗi non-binary. Kiểu dữ liệu Mô tả Phạm vi các bytes
BINARY Chứa các chuỗi nhị phân (Binary Strings) Giá trị từ 0 tới 255
Chứa các chuỗi nhị phân (Binary Strings)
Giá trị từ 0 tới 255 đối với MySQL trước 5.0.3, và 0 tới 65,535 với MySQL 5.0.3 và mới hơn
1.3.13 Kiểu dữ liệu BLOB và TEXT
BLOB là một đối tượng nhị phân lớn (Binary Large OBject) có thể chứa một lượng lớn dữ liệu Có bốn loại BLOB, TINYBLOB, BLOB, MEDIUMBLOB, và
MÔ TẢ HỆ THỐNG CỬA HÀNG LINH KIỆN ĐIỆN TỬ
Giới thiệu chung về linh kiện điện tử
Hệ thống cửa hàng linh kiện điện tử là một hệ thống bao gồm các cửa hàng bán lẻ linh kiện điện tử, nhà cung cấp linh kiện điện tử và các kênh phân phối linh kiện điện tử.
Hệ thống này cung cấp cho khách hàng một cách dễ dàng để tìm kiếm và mua sắm linh kiện điện tử.
2.1.1 Các thành phần của hệ thống cửa hàng linh kiện điện tử:
• Cửa hàng bán lẻ linh kiện điện tử: Đây là nơi khách hàng có thể mua sắm linh kiện điện tử Các cửa hàng bán lẻ linh kiện điện tử thường được phân loại theo các loại linh kiện điện tử mà họ bán, chẳng hạn như cửa hàng bán linh kiện máy tính, cửa hàng bán linh kiện điện thoại, cửa hàng bán linh kiện điện tử công nghiệp, v.v.
• Nhà cung cấp linh kiện điện tử: Đây là những doanh nghiệp sản xuất hoặc nhập khẩu linh kiện điện tử Nhà cung cấp linh kiện điện tử cung cấp linh kiện điện tử cho các cửa hàng bán lẻ linh kiện điện tử và các kênh phân phối linh kiện điện tử khác.
• Các kênh phân phối linh kiện điện tử: Đây là các doanh nghiệp trung gian phân phối linh kiện điện tử từ nhà cung cấp đến cửa hàng bán lẻ linh kiện điện tử Các kênh phân phối linh kiện điện tử bao gồm các nhà phân phối, đại lý, nhà bán buôn, v.v.
2.1.2 Chức năng của cửa hàng linh kiện điện tử
Cửa hàng linh kiện điện tử cung cấp cho khách hàng các chức năng sau:
• Tìm kiếm linh kiện điện tử: Khách hàng có thể tìm kiếm linh kiện điện tử theo tên, loại, nhà sản xuất, v.v.
• So sánh giá cả: Khách hàng có thể so sánh giá cả của các linh kiện điện tử từ các cửa hàng khác nhau.
• Đặt hàng linh kiện điện tử: Khách hàng có thể đặt mua linh kiện điện tử trực tuyến hoặc tại cửa hàng.
• Thanh toán linh kiện điện tử: Khách hàng có thể thanh toán linh kiện điện tử bằng tiền mặt, thẻ tín dụng, thẻ ghi nợ, v.v.
• Giao hàng linh kiện điện tử: Linh kiện điện tử sẽ được giao đến địa chỉ của khách hàng.
2.1.3 Lợi ích của cửa hàng linh kiện điện tử
Hệ thống cửa hàng linh kiện điện tử mang lại nhiều lợi ích cho khách hàng, bao gồm:
• Tiện lợi: Khách hàng có thể dễ dàng tìm kiếm, so sánh giá cả và đặt mua linh kiện điện tử.
• Đa dạng: Khách hàng có thể lựa chọn linh kiện điện tử từ nhiều cửa hàng khác nhau.
• Cạnh tranh: Giá cả linh kiện điện tử thường cạnh tranh hơn so với mua trực tiếp từ nhà sản xuất.
2.1.4 Tương lai của cửa hàng linh kiện điện tử
Trong tương lai, hệ thống cửa hàng linh kiện điện tử sẽ tiếp tục phát triển và mở rộng Khách hàng sẽ có nhiều lựa chọn hơn về linh kiện điện tử và giá cả sẽ ngày càng cạnh tranh hơn.
Quy trình hoạt động của cửa hàng linh kiện điện tử
Bước đầu tiên trong quy trình hoạt động của cửa hàng linh kiện điện tử là nhập hàng từ nhà cung cấp Nhà cung cấp linh kiện điện tử có thể là các doanh nghiệp sản xuất hoặc nhập khẩu linh kiện điện tử.
Quy trình nhập hàng bao gồm các bước sau:
• Tìm kiếm nhà cung cấp: Cửa hàng linh kiện điện tử cần tìm kiếm nhà cung cấp uy tín, cung cấp các linh kiện điện tử chất lượng với giá cả cạnh tranh.
• Làm đơn đặt hàng: Cửa hàng linh kiện điện tử gửi đơn đặt hàng cho nhà cung cấp, bao gồm thông tin về các linh kiện điện tử cần đặt mua, số lượng, giá cả, thời gian giao hàng, v.v.
• Nhận hàng: Nhà cung cấp sẽ giao hàng cho cửa hàng linh kiện điện tử theo thời gian đã thỏa thuận.
Sau khi nhập hàng, cửa hàng linh kiện điện tử cần chuẩn bị hàng hóa để bày bán. Công việc chuẩn bị hàng hóa bao gồm các bước sau:
• Kiểm tra hàng hóa: Cửa hàng linh kiện điện tử cần kiểm tra kỹ lưỡng hàng hóa khi nhận từ nhà cung cấp để đảm bảo chất lượng.
• Phân loại hàng hóa: Cửa hàng linh kiện điện tử cần phân loại hàng hóa theo loại, hãng sản xuất, v.v để thuận tiện cho việc bày bán và quản lý.
• Bảo quản hàng hóa: Cửa hàng linh kiện điện tử cần bảo quản hàng hóa đúng cách để đảm bảo chất lượng.
Bước quan trọng nhất trong quy trình hoạt động của cửa hàng linh kiện điện tử là bán hàng Công việc bán hàng bao gồm các bước sau:
• Tiếp đón khách hàng: Nhân viên bán hàng cần tiếp đón khách hàng một cách nhiệt tình và chu đáo.
• Tư vấn khách hàng: Nhân viên bán hàng cần tư vấn cho khách hàng về các loại linh kiện điện tử, tính năng, giá cả, v.v để khách hàng lựa chọn được sản phẩm phù hợp.
• Giao dịch: Nhân viên bán hàng cần thực hiện các thủ tục giao dịch mua bán với khách hàng, bao gồm ghi hóa đơn, thu tiền, v.v.
Cửa hàng linh kiện điện tử cần có chính sách hậu mãi tốt để đảm bảo quyền lợi của khách hàng Chính sách hậu mãi bao gồm các nội dung sau:
• Bảo hành: Cửa hàng linh kiện điện tử cần thực hiện chính sách bảo hành linh kiện điện tử theo quy định của nhà sản xuất.
• Hỗ trợ kỹ thuật: Cửa hàng linh kiện điện tử cần hỗ trợ kỹ thuật cho khách hàng trong quá trình sử dụng linh kiện điện tử.
Quản lý kho hàng là công việc quan trọng giúp cửa hàng linh kiện điện tử kiểm soát số lượng và chất lượng hàng hóa Công việc quản lý kho hàng bao gồm các bước sau:
• Thống kê hàng hóa: Cửa hàng linh kiện điện tử cần thường xuyên thống kê số lượng và chất lượng hàng hóa trong kho.
• Kiểm kê hàng hóa: Cửa hàng linh kiện điện tử cần kiểm kê hàng hóa định kỳ để đảm bảo tính chính xác của số liệu thống kê.
• Sắp xếp hàng hóa: Cửa hàng linh kiện điện tử cần sắp xếp hàng hóa trong kho một cách khoa học để thuận tiện cho việc tìm kiếm và xuất nhập hàng.
Quản lý tài chính là công việc quan trọng giúp cửa hàng linh kiện điện tử kiểm soát dòng tiền và thu chi Công việc quản lý tài chính bao gồm các bước sau:
• Thống kê thu chi: Cửa hàng linh kiện điện tử cần thường xuyên thống kê thu chi để nắm bắt tình hình tài chính của cửa hàng.
• Lập báo cáo tài chính: Cửa hàng linh kiện điện tử cần lập báo cáo tài chính định kỳ để theo dõi tình hình tài chính của cửa hàng.
• Kiểm soát chi phí: Cửa hàng linh kiện điện tử cần kiểm soát chi phí một cách chặt chẽ để đảm bảo lợi nhuận.
Marketing là công việc quan trọng giúp cửa hàng linh kiện điện tử quảng bá thương hiệu và thu hút khách hàng Công việc marketing bao gồm các hoạt động sau:
• Quảng cáo: Cửa hàng linh kiện điện tử có thể sử dụng các kênh quảng cáo như truyền hình, báo chí, internet
MÔ HÌNH QUAN HỆ THỰC THỂ ERD
Hình 2: Mô hình quan hệ thực thể ERD
MÔ HÌNH DỮ LIỆU QUAN HỆ RD
Tên quan hệ Thuộc tính Khóa
HoaDon MaHD, MaKH, NgayMua, MaHD
MaNV NhaCungCap MaNCC, TenNCC, DiaChi MaNCC
GiaNhap, MaLoai MaSP SanPham_NhaCungCap MaSP, MaNCC MaSP, MaNCC
SoLuong, GiaBan MaCTHD Dưới đây là mô tả chi tiết về từng quan hệ:
• NhanVien lưu trữ thông tin về nhân viên, bao gồm mã số nhân viên, tên, quê quán, và ngày tháng năm sinh Mã số nhân viên là khóa chính của quan hệ này.
• LuongNhanVien lưu trữ thông tin về mức lương của nhân viên, bao gồm mã số nhân viên và mức lương Mã số nhân viên là khóa chính của quan hệ này, đồng thời cũng là khóa ngoại liên kết với quan hệ NhanVien.
• TaiKhoan lưu trữ thông tin về tài khoản của nhân viên, bao gồm mã số nhân viên, tên đăng nhập và mật khẩu Mã số nhân viên là khóa chính của quan hệ này, đồng thời cũng là khóa ngoại liên kết với quan hệ NhanVien.
• KhachHang lưu trữ thông tin về khách hàng, bao gồm mã số khách hàng, tên, địa chỉ, và số điện thoại Mã số khách hàng là khóa chính của quan hệ này.
• HoaDon lưu trữ thông tin về hóa đơn, bao gồm mã số hóa đơn, mã số khách hàng, ngày mua, và mã số nhân viên Mã số hóa đơn là khóa chính của quan hệ này Mã số khách hàng và mã số nhân viên là khóa ngoại liên kết với các quan hệ KhachHang và NhanVien tương ứng.
• NhaCungCap lưu trữ thông tin về nhà cung cấp, bao gồm mã số nhà cung cấp, tên, và địa chỉ Mã số nhà cung cấp là khóa chính của quan hệ này.
• LoaiSanPham lưu trữ thông tin về loại sản phẩm, bao gồm mã số loại sản phẩm và tên Mã số loại sản phẩm là khóa chính của quan hệ này.
• SanPham lưu trữ thông tin về sản phẩm, bao gồm mã số sản phẩm, tên, mô tả, giá nhập, và mã số loại sản phẩm Mã số sản phẩm là khóa chính của quan hệ này Mã số loại sản phẩm là khóa ngoại liên kết với quan hệ LoaiSanPham.
• SanPham_NhaCungCap lưu trữ thông tin về mối quan hệ giữa sản phẩm và nhà cung cấp, bao gồm mã số sản phẩm và mã số nhà cung cấp Mã số sản phẩm và mã số nhà cung cấp là khóa chính của quan hệ này, đồng thời cũng là khóa ngoại liên kết với các quan hệ SanPham và NhaCungCap tương ứng.
• ChiTietHoaDon lưu trữ thông tin về chi tiết hóa đơn, bao gồm mã số chi tiết hóa đơn, mã số hóa đơn, mã số sản phẩm, số lượng, và giá bán Mã số chi tiết hóa đơn là khóa chính của quan hệ này Mã số hóa đơn và mã số sản phẩm là khóa ngoại liên kết với các quan hệ HoaDon và SanPham tương ứng.
Mô hình dữ liệu quan hệ này thể hiện mối quan hệ giữa các thực thể trong cơ sở dữ liệu.
CÁC BẢN GHI LOGIC CỦA ĐỐI TƯỢNG
NhanVien
MaNV (INT, Primary Key): Mã số duy nhất để phân biệt giữa các nhân viên. TenNV (VARCHAR(255)): Tên của nhân viên.
QueQuan (VARCHAR(255)): Quê quán của nhân viên.
NamSinh (DATE): Ngày tháng năm sinh của nhân viên.
LuongNhanVien
MaNV (INT, Primary Key, Foreign Key): Mã số nhân viên, là khóa ngoại liên kết với bảng NhanVien.
Luong (DECIMAL(18, 2)): Mức lương của nhân viên.
TaiKhoan
MaNV (INT, Primary Key, Foreign Key): Mã số nhân viên, là khóa ngoại liên kết với bảng NhanVien.
TenDangNhap (VARCHAR(50)): Tên đăng nhập của nhân viên.
MatKhau (VARCHAR(255)): Mật khẩu của nhân viên.
KhachHang
MaKH (INT, Primary Key): Mã số duy nhất để phân biệt giữa các khách hàng. TenKH (VARCHAR(255)): Tên của khách hàng.
DiaChi (VARCHAR(255)): Địa chỉ của khách hàng.
DienThoai (VARCHAR(15)): Số điện thoại của khách hàng.
HoaDon
MaHD (INT, Primary Key): Mã số duy nhất để phân biệt giữa các hóa đơn.
MaKH (INT, Foreign Key): Mã số khách hàng, là khóa ngoại liên kết với bảng KhachHang.
NgayMua (DATE): Ngày mua của hóa đơn.
MaNV (INT, Foreign Key): Mã số nhân viên, là khóa ngoại liên kết với bảngNhanVien.
NhaCungCap
MaNCC (INT, Primary Key): Mã số duy nhất để phân biệt giữa các nhà cung cấp. TenNCC (VARCHAR(255)): Tên của nhà cung cấp.
DiaChi (VARCHAR(255)): Địa chỉ của nhà cung cấp.
LoaiSanPham
MaLoai (INT, Primary Key): Mã số duy nhất để phân biệt giữa các loại sản phẩm.TenLoai (VARCHAR(255)): Tên của loại sản phẩm.
SanPham
MaSP (INT, Primary Key): Mã số duy nhất để phân biệt giữa các sản phẩm.
TenSP (VARCHAR(255)): Tên của sản phẩm.
MoTa (VARCHAR(MAX)): Mô tả về sản phẩm.
GiaNhap (DECIMAL(18, 2)): Giá nhập của sản phẩm, phải lớn hơn 0.
MaLoai (INT, Foreign Key): Mã số loại sản phẩm, là khóa ngoại liên kết với bảngLoaiSanPham.
SanPham_NhaCungCap
MaSP (INT, Primary Key, Foreign Key): Mã số sản phẩm, là khóa ngoại liên kết với bảng SanPham.
MaNCC (INT, Primary Key, Foreign Key): Mã số nhà cung cấp, là khóa ngoại liên kết với bảng NhaCungCap.
ChiTietHoaDon
MaCTHD (INT, Primary Key): Mã số duy nhất để phân biệt giữa các chi tiết hóa đơn.
MaHD (INT, Foreign Key): Mã số hóa đơn, là khóa ngoại liên kết với bảng HoaDon.
MaSP (INT, Foreign Key): Mã số sản phẩm, là khóa ngoại liên kết với bảng SanPham.
SoLuong (INT): Số lượng sản phẩm trong chi tiết hóa đơn.
GiaBan (DECIMAL(18, 2)): Giá bán của sản phẩm trong chi tiết hóa đơn.
GIẢI THÍCH VÀ CÁCH XÂY DỰNG, CHUẨN HÓA DỮ LIỆU
CÁCH XÂY DỰNG
Bước 1: Xác định mục đích và yêu cầu của CSDL
Bước đầu tiên cần làm là xác định mục đích và yêu cầu của CSDL Điều này sẽ giúp bạn xác định các bảng cần thiết và các cột cần có trong mỗi bảng.
Trong trường hợp này, CSDL được sử dụng để lưu trữ thông tin về khách hàng, hóa đơn, sản phẩm, nhà cung cấp và nhân viên Do đó, các bảng cần thiết bao gồm:
Bước 2: Thiết kế các bảng
Sau khi xác định các bảng cần thiết, bạn cần thiết kế các bảng đó Điều này bao gồm xác định tên cột, kiểu dữ liệu của mỗi cột và các ràng buộc (chẳng hạn như khóa chính và ràng buộc ngoại khóa).
Trong trường hợp này, các bảng đã được thiết kế như sau:
Bảng Tên cột Kiểu dữ liệu Ràng buộc
MaKH INT Ràng buộc ngoại khóa với KhachHang.MaKH
MaHD INT Ràng buộc ngoại khóa với HoaDon.MaHD
ChiTietHoaDon MaSP INT Ràng buộc ngoại khóa với SanPham.MaSP
MaLoai INT Ràng buộc ngoại khóa với LoaiSanPham.MaLoai
LoaiSanPham MaLoai INT Khóa chính
SanPham_NhaCungCa p MaSP INT Ràng buộc ngoại khóa với SanPham.MaSP
LuongNhanVien MaNV INT Khóa chính
TaiKhoan MaNV INT Khóa chính
Sau khi thiết kế các bảng, ta cần chuẩn hóa CSDL Điều này sẽ giúp cải thiện tính toàn vẹn dữ liệu và hiệu suất truy vấn.
Sau khi chuẩn hóa CSDL, ta có thể tạo CSDL bằng cách sử dụng công cụ quản lý CSDL.
Trong trường hợp này, ta sử dụng công cụ quản lý SQL Server Management Studio.
Sau khi tạo CSDL, ta có thể thêm dữ liệu vào CSDL Ta sử dụng công cụ quản lý CSDL hoặc truy vấn SQL để thêm dữ liệu.
Sau khi tạo CSDL, ta cần bảo trì CSDL Điều này bao gồm việc cập nhật dữ liệu, sửa lỗi và sao lưu CSDL.
Trong trường hợp này, ta có thể sử dụng công cụ quản lý CSDL hoặc truy vấnSQL để cập nhật dữ liệu, sửa lỗi và sao lưu CSDL.
CÁC CHUẨN
MaCTHD MaHD MaSP SoLuong GiaBan
MaCTHD MaHD MaSP SoLuong GiaBan
MaSP TenSP MoTa GiaNhap MaLoai
MaSP TenSP MoTa GiaNhap MaLoai
TRUY VẤN TRÊN MYSQL
Hiển thị tất cả thông tin của bảng KhachHang MaKH, TenKH, DiaChia, DienThoai trong ngày '2023-01-16
SELECT KH.MaKH, KH.TenKH, KH.DiaChi, KH.DienThoai
JOIN HoaDon HD ON KH.MaKH = HD.MaKH
Liệt kê tên và giá nhập của tất cả sản phẩm bắt đầu bằng chữ 'C'
Liệt kê thông tin hóa đơn và tên khách hàng tương ứng
SELECT HoaDon.MaHD, NgayMua, TenKH
INNER JOIN KhachHang ON HoaDon.MaKH = KhachHang.MaKH;
Hiển thị thông tin sản phẩm MaSP, TenSP, GiaNhap và tên nhà cung cấp TenNCC
SELECT SanPham.MaSP, SanPham.TenSP, SanPham.GiaNhap, NhaCungCap.TenNCC FROM SanPham
JOIN SanPham_NhaCungCap ON SanPham.MaSP = SanPham_NhaCungCap.MaSPJOIN NhaCungCap ON SanPham_NhaCungCap.MaNCC = NhaCungCap.MaNCC;
Liệt kê tên nhân viên và tên đăng nhập tương ứng
INNER JOIN TaiKhoan ON NhanVien.MaNV = TaiKhoan.MaNV;
Liệt kê tất cả sản phẩm của loại 'RAM'
INNER JOIN LoaiSanPham ON SanPham.MaLoai = LoaiSanPham.MaLoai
Hiển thị tất cả chi tiết hóa đơn với tên sản phẩm và giá bán
SELECT ChiTietHoaDon.MaCTHD, HoaDon.MaHD, TenSP, SoLuong, GiaBan
INNER JOIN SanPham ON ChiTietHoaDon.MaSP = SanPham.MaSP
INNER JOIN HoaDon ON ChiTietHoaDon.MaHD = HoaDon.MaHD;
Tính tổng giá trị của tất cả các hóa đơn trong ngày '2023-01-15'
SELECT SUM(TongGiaTri) AS TongGiaTriHoaDon
SELECT HoaDon.MaHD, SUM(SoLuong * GiaBan) AS TongGiaTri
INNER JOIN ChiTietHoaDon ON HoaDon.MaHD = ChiTietHoaDon.MaHD
WHERE HoaDon.NgayMua = '2023-01-15' Điều kiện ngày cụ thể
Tìm khách hàng có số lượng đơn hàng mua nhiều nhất Đồng thời, liệt kê các sản phẩm mà khách hàng đó đã mua nhiều nhất
SELECT TOP 1 KH.MaKH, KH.TenKH, COUNT(DISTINCT HD.MaHD) AS
INNER JOIN HoaDon HD ON KH.MaKH = HD.MaKH
GROUP BY KH.MaKH, KH.TenKH
SELECT TC.TenKH, SP.TenSP, COUNT(CTHD.MaHD) AS SoLuongMua
INNER JOIN HoaDon HD ON TC.MaKH = HD.MaKH
INNER JOIN ChiTietHoaDon CTHD ON HD.MaHD = CTHD.MaHD
INNER JOIN SanPham SP ON CTHD.MaSP = SP.MaSP
GROUP BY TC.TenKH, SP.TenSP