You are on page 1of 12

1) Mô tả bài toán

Nhà cung cấp sẽ cung cấp sản phẩm của mình cho siêu thị. Khi sản phẩm được
nhập tới kho dưới dạng lô sản phẩm, mỗi lô sản phẩm sẽ chỉ bao gồm môt loại
sản phẩm, số lượng, hạn sử dụng và ngày sản xuất. Sau đó nhân viên nhập kho sẽ
kiểm kê số lượng hàng nhập vào đảm bản số lượng trên hóa đơn trùng khớp với
số lượng thực tế.

Khi sản phẩm được nhập vào kho qua sự kiểm kê của nhân viên nhập kho, sản
phẩm sẽ được chia thành các loại sản phẩm như mỹ phẩm, đồ gia dụng, quần áo,
đồ đông lạnh, sách… được phân vào các khu vực cụ thể trong kho nhằm bảo
quản chất lượng sản phẩm một cách tốt nhất. Mỗi sản phẩm sẽ có một khu vực cụ
thể trong kho nhằm giúp cho công tác vận chuyển một cách dễ dàng.

Khi có yêu cầu từ trên kệ hàng xuống hoặc những sản phẩm đông lạnh có hạn sử
dụng ngắn, nhân viên xuất kho sẽ đóng gói sản phẩm, sau đó kiểm kê lại chính
xác số lượng xuất kho thì sẽ chuyển giao sản phẩm cho bên bán hàng. Trong
trường hợp sản phẩm bị trả về từ trên kệ hàng do không tiêu thụ được sản phẩm
hoặc hàng bị khách hàng đổi trả do bị lỗi thì nhân viên kho sẽ kiểm kê lại số
lượng đồng thời ghi lại nội dung đổi trả.

Đối với việc nhập hàng hay xuất hàng hoặc trả hàng, đều yêu cầu nhân viên phải
lập hóa đơn ghi lại thời gian nhập hàng cụ thể cùng với người chịu trách nhiệm
cho việc lập hóa đơn.

Xây dựng phần mềm hỗ trợ quản lý kho đáp ứng những yêu cầu sau:

Quản lý thông tin nhà cung cấp sản phẩm.

Quản lý số lượng hàng nhập kho đáp ứng được yêu cầu của siêu thị.

Quản lý số lượng hàng

Quản lý khu vực kho.


Thông tin được lưu trữ trong cơ sở dữ liệu, giúp truy xuất, sao lưu và phục hồi dễ
dàng, đồng bộ, nhanh chóng và đáng tin cậy.

Thông báo số lượng hàng dưới mức quy định, hoặc gần hết hạn sử dụng.

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


- Hệ thống giúp quản lý thông tin của từng nhân viên trong kho hàng bao gồm: id,
tên nhân viên, sdt , cmnd,ngày sinh, hình ảnh….Mỗi nhân viên sẽ có một mã nhân
viên duy nhất, một tài khoản duy nhất để đăng nhập vào hệ thống
- Hệ thống cho phép chủ kho thực hiện những chức năng sau: cập nhật, tra cứu và
hủy bỏ thông tin cá nhân của nhân viên.

2. Quản lý sản phẩm:


- Hệ thống quản lý thông tin của tất cả mặt hàng có trong kho. Mỗi mặt hàng sẽ có
một mã hàng riêng không trùng lặp
- Mỗi mã hàng sẽ bao gồm: mã hàng, tên sản phẩm, đơn vị tính, hình ảnh
- Người sử dụng có thểm thêm , sửa, xóa các sản phẩm.

3. Quản lý nhập kho


- Quản lý các lần nhập kho của hệ thống bao gồm : mã sản phẩm, tên sản phẩm, số
lượng, nhà cung cấp, thời gian nhập, hsd,ngày sản xuất…
- Người sử dụng có quyền tạo các phiếu nhập.

4. Quản lý nhà cung cấp:


- Hệ thống quản lý thông tin của các nhà cung cấp . Mỗi một nhà cung cấp sẽ có
một mã riêng.
- Mỗi mã nhà cung cấp sẽ bao gồm: id , tên nhà cung cấp, tên người đại diện, sdt,
địa chỉ , email, hình ảnh .
- Người sử dụng có thểm thêm , sửa, xóa các nhà cung cấp.

5. Kiểm tra số lượng hàng trong kho


- Quản lý được số lượng hàng, ngày nhập, ngày sản xuất và hạn sử dụng của sản
phẩm.
6. Quản lý khu vực và loại kho:
- Có các kho khác nhau trên một hoặc nhiều khu vực, và các kho đó chia làm 2 loại
kho khô và kho lạnh.
- Bao gồm id khu vực, tên khu vực, vị trí, id loại kho, tên loại kho.

2) Thực thể liên kết

San_pham và Loai_sp: Mỗi sản phẩm (San_pham) thuộc về một loại sản phẩm
(Loai_sp).

Loai_sp và Khu_vuc: Mỗi loại sản phẩm (Loai_sp) có thể được bán ở một khu vực
(Khu_vuc) nào đó.

Khu_vuc và Loai_kho: Mỗi khu vực (Khu_vuc) có một loại kho (Loai_kho) cụ thể.
Kho và Lo_san_pham: Mỗi kho (Kho) chứa một hoặc nhiều lô sản phẩm
(Lo_san_pham).

Chi_tiet_lo_sp và San_pham: Mỗi chi tiết lô sản phẩm (Chi_tiet_lo_sp) liên quan đến
một sản phẩm (San_pham) cụ thể.

Lo_san_pham và Phieu_nhap: Mỗi lô sản phẩm (Lo_san_pham) được nhập vào


thông qua một phiếu nhập (Phieu_nhap).

Phieu_nhap và Nhan_vien: Mỗi phiếu nhập (Phieu_nhap) được tạo ra bởi một nhân
viên (Nhan_vien).

Chi_tiet_phieu_nhap và Nguon_cc: Mỗi chi tiết phiếu nhập (Chi_tiet_phieu_nhap)


liên quan đến một nguồn cung cấp (Nguon_cc). Điều này được thể hiện qua khóa
ngoại id_nguon_cc trong bảng Chi_tiet_phieu_nhap.

Tai_khoan và Nhan_vien: Mỗi tài khoản (Tai_khoan) được quản lý bởi một nhân
viên (Nhan_vien
Với các mối quan hệ trên, chúng ta có thể thấy rõ các bảng đã đạt dạng chuẩn 3NF

3) Mô hình dữ liệu

In đậm là khóa chính, in nghiên là khóa ngoại

San_pham(id_sp, ten_sp, hinh_anh, id_loai_sp)

Loai_sp(id_loai_sp, ten_loai_sp, dvt, id_khu_vuc)

Khu_vuc(id_khu_vuc, ten_khu_vuc, vi_tri, id_loai_kho)

Loai_kho(id_loai_kho, ten_loai_kho)

Kho(id_kho, sl_san_pham, id_lo_sp, id_khu_vuc)

Chi_tiet_lo_sp(id_chi_tiet_sp, so_luong_sp, so_tien_sp, id_lo_sp, id_sp)

Lo_san_pham(id_lo_sp, hsd, nsx, id_phieu_nhap)

Phieu_nhap(id_phieu_nhap, thoi_gian, ghi_chu, id_nv, id_lo_sp)

Chi_tiet_phieu_nhap(id_ctpn, so_tien_lo, so_luong_lo, id_nguon_cc,


id_phieu_nhap)
Nguon_cc(id_nguon_cc, ten_nha_cc, ten_dai_dien, sdt, dia_chi, email, hinh_anh)

Nhan_vien(id_nv, ten_nv, sdt, cmnd, ngay_sinh, hinh_anh)

Tai_khoan(id_tk, ten_tai_khoan, mat_khau, id_nv, loai)

Chú thích

San_pham: Bảng này đại diện cho các sản phẩm với các thuộc tính như id sản
phẩm (id_sp), tên sản phẩm (ten_sp), hình ảnh (hinh_anh), và id loại sản phẩm
(id_loai_sp).

Loai_sp: Bảng này đại diện cho các loại sản phẩm với các thuộc tính như id loại
sản phẩm (id_loai_sp), tên loại sản phẩm (ten_loai_sp), đơn vị đo (dvt), và id khu
vực (id_khu_vuc).

Khu_vuc: Bảng này đại diện cho các khu vực với các thuộc tính như id khu vực
(id_khu_vuc), tên khu vực (ten_khu_vuc), vị trí (vi_tri), và id loại kho
(id_loai_kho).

Loai_kho: Bảng này đại diện cho các loại kho với các thuộc tính như id loại kho
(id_loai_kho) và tên loại kho (ten_loai_kho).

Kho: Bảng này đại diện cho các kho với các thuộc tính như id kho (id_kho), số
lượng sản phẩm (sl_san_pham), id lô (id_lo_sp), và id khu vực (id_khu_vuc).

Chi_tiet_lo_sp: Bảng này đại diện cho các chi tiết của các lô sản phẩm với các
thuộc tính như id chi tiết (id_chi_tiet_sp), số lượng sản phẩm (so_luong_sp), giá
sản phẩm (so_tien_sp), id lô (id_lo_sp), và id sản phẩm (id_sp).

Lo_san_pham: Bảng này đại diện cho các lô sản phẩm với các thuộc tính như id lô
(id_lo_sp), hạn sử dụng (hsd), ngày sản xuất (nsx), và id phiếu nhập
(id_phieu_nhap).

Phieu_nhap: Bảng này đại diện cho các phiếu nhập với các thuộc tính như id
phiếu nhập (id_phieu_nhap), thời gian (thoi_gian), ghi chú (ghi_chu), id nhân viên
(id_nv), và id lô (id_lo_sp).
Chi_tiet_phieu_nhap: Bảng này đại diện cho các chi tiết của các phiếu nhập với
các thuộc tính như id chi tiết (id_ctpn), giá lô (so_tien_lo), số lượng lô
(so_luong_lo), id nguồn cung cấp (id_nguon_cc), và id phiếu nhập
(id_phieu_nhap).

Nguon_cc: Bảng này đại diện cho các nguồn cung cấp với các thuộc tính như id
nguồn cung cấp (id_nguon_cc), tên nhà cung cấp (ten_nha_cc), tên đại diện
(ten_dai_dien), số điện thoại (sdt), địa chỉ (dia_chi), email (email), và hình ảnh
(hinh_anh).

Nhan_vien: Bảng này đại diện cho các nhân viên với các thuộc tính như id nhân
viên (id_nv), tên nhân viên (ten_nv), số điện thoại (sdt), số CMND (cmnd), ngày
sinh (ngay_sinh), và hình ảnh (hinh_anh).

Tai_khoan: Bảng này đại diện cho các tài khoản với các thuộc tính như id tài
khoản (id_tk), tên tài khoản (ten_tai_khoan), mật khẩu (mat_khau), id nhân viên
(id_nv), và loại (loai).

4) Chuẩn hóa bảng chuẩn 3NF

1. Loai_sp(id_loai_sp, ten_loai_sp, dvt, id_khu_vuc): Trong trường hợp


này, id_loai_sp là khóa chính. Các thuộc tính khác
(ten_loai_sp, dvt, id_khu_vuc) đều phụ thuộc hoàn toàn vào id_loai_sp. Do đó,
bảng Loai_sp đạt đến 3NF.

2. Khu_vuc(id_khu_vuc, ten_khu_vuc, vi_tri, id_loai_kho): Tương


tự, id_khu_vuc là khóa chính và các thuộc tính khác đều phụ thuộc hoàn toàn
vào id_khu_vuc. Do đó, bảng Khu_vuc đạt đến 3NF.

3. Loai_kho(id_loai_kho, ten_loai_kho): id_loai_kho là khóa chính


và ten_loai_kho phụ thuộc hoàn toàn vào id_loai_kho. Do đó,
bảng Loai_kho đạt đến 3NF.

4. Kho(id_kho, sl_san_pham, id_lo_sp, id_khu_vuc): id_kho là khóa chính và các


thuộc tính khác đều phụ thuộc hoàn toàn vào id_kho. Do đó, bảng Kho đạt đến
3NF.
5. Chi_tiet_lo_sp(id_chi_tiet_sp, so_luong_sp, so_tien_sp, id_lo_sp,
id_sp): id_chi_tiet_sp là khóa chính và các thuộc tính khác đều phụ thuộc hoàn
toàn vào id_chi_tiet_sp. Do đó, bảng Chi_tiet_lo_sp đạt đến 3NF.

6. Lo_san_pham(id_lo_sp, hsd, nsx, id_phieu_nhap): id_lo_sp là khóa chính và


các thuộc tính khác đều phụ thuộc hoàn toàn vào id_lo_sp. Do đó,
bảng Lo_san_pham đạt đến 3NF.

7. Phieu_nhap(id_phieu_nhap, thoi_gian, ghi_chu, id_nv,


id_lo_sp): id_phieu_nhap là khóa chính và các thuộc tính khác đều phụ thuộc
hoàn toàn vào id_phieu_nhap. Do đó, bảng Phieu_nhap đạt đến 3NF.

8. Chi_tiet_phieu_nhap(id_ctpn, so_tien_lo, so_luong_lo, id_nguon_cc,


id_phieu_nhap): id_ctpn là khóa chính và các thuộc tính khác đều phụ thuộc
hoàn toàn vào id_ctpn. Do đó, bảng Chi_tiet_phieu_nhap đạt đến 3NF.

9. Nguon_cc(id_nguon_cc, ten_nha_cc, ten_dai_dien, sdt, dia_chi, email,


hinh_anh): id_nguon_cc là khóa chính và các thuộc tính khác đều phụ thuộc
hoàn toàn vào id_nguon_cc. Do đó, bảng Nguon_cc đạt đến 3NF.

10. Nhan_vien(id_nv, ten_nv, sdt, cmnd, ngay_sinh, hinh_anh): id_nv là khóa


chính và các thuộc tính khác đều phụ thuộc hoàn toàn vào id_nv. Do đó,
bảng Nhan_vien đạt đến 3NF.

11. Tai_khoan(id_tk, ten_tai_khoan, mat_khau, id_nv, loai): id_tk là khóa chính và


các thuộc tính khác đều phụ thuộc hoàn toàn vào id_tk. Do đó,
bảng Tai_khoan đạt đến 3NF.

 Mô hình đạt dạng chuẩn 3NF

5 ) Các câu lệnh tạo bảng

-- Tạo bảng Tài Khoản

CREATE TABLE Tai_Khoan (

Id_tk INT NOT NULL AUTO_INCREMENT,

Ten_tai_khoan VARCHAR(30) NOT NULL,


Mat_khau VARCHAR(30) NOT NULL,

Id_nv INT NOT NULL,

Loai_tk INT NOT NULL,

PRIMARY KEY (Id_tk)

);

-- Tạo bảng Nhân Viên

CREATE TABLE Nhan_vien (

Id_nv INT NOT NULL AUTO_INCREMENT,

Ten_nv VARCHAR(100) NOT NULL,

Sdt VARCHAR(100) NOT NULL,

Cmnd VARCHAR(100) NOT NULL,

Ngay_sinh DATE NOT NULL,

Hinh_anh LONGBLOB,

PRIMARY KEY (Id_nv)

);

-- Tạo bảng Sản Phẩm

CREATE TABLE San_pham (

Id_sp INT NOT NULL AUTO_INCREMENT,

Ten_sp VARCHAR(100) NOT NULL,

Hinh_anh LONGBLOB,

Id_loai_sp INT NOT NULL,

PRIMARY KEY (Id_sp)


);

-- Tạo bảng Loại Sản Phẩm

CREATE TABLE Loai_sp (

Id_loai_sp INT NOT NULL AUTO_INCREMENT,

Ten_loai_sp VARCHAR(100) NOT NULL,

Dvt VARCHAR(100),

Id_khu_vuc INT NOT NULL,

PRIMARY KEY (Id_loai_sp)

);

-- Tạo bảng Khu vực

CREATE TABLE Khu_vuc (

Id_khu_vuc INT NOT NULL AUTO_INCREMENT,

Ten_khu_vuc VARCHAR(100),

Vi_tri VARCHAR(100),

Id_loai_kho INT NOT NULL,

PRIMARY KEY (Id_khu_vuc)

);

-- Tạo bảng Kho

CREATE TABLE Kho (

Id_kho INT NOT NULL AUTO_INCREMENT,

Sl_san_pham INT,
Id_lo_sp INT,

Id_khu_vuc INT NOT NULL,

PRIMARY KEY (Id_kho)

);

-- Tạo bảng Loại kho

CREATE TABLE Loai_kho (

Id_loai_kho INT NOT NULL AUTO_INCREMENT,

Ten_loai_kho VARCHAR(100),

PRIMARY KEY (Id_loai_kho)

);

-- Tạo bảng Chi Tiết Lô Sản Phẩm

CREATE TABLE chi_tiet_lo_sp (

Id_chi_tiet_sp INT NOT NULL AUTO_INCREMENT,

So_luong_sp INT,

So_tien_sp INT,

Id_lo_sp INT,

Id_sp INT,

PRIMARY KEY (Id_chi_tiet_sp)

);

-- Tạo bảng Lô Sản Phẩm

CREATE TABLE Lo_san_pham (


Id_lo_sp INT NOT NULL AUTO_INCREMENT,

Hsd DATE,

Nsx DATE,

Id_phieu_nhap INT,

PRIMARY KEY (Id_lo_sp)

);

-- Tạo bảng Phiếu Nhập

CREATE TABLE Phieu_nhap (

Id_phieu_nhap INT NOT NULL AUTO_INCREMENT,

Thoi_gian DATETIME,

Ghi_chu VARCHAR(100),

Id_nv INT,

Id_lo_sp INT,

PRIMARY KEY (Id_phieu_nhap)

);

-- Tạo bảng Chi Tiết Phiếu Nhập

CREATE TABLE Chi_tiet_phieu_nhap (

Id_ctpn INT NOT NULL AUTO_INCREMENT,

So_tien_lo INT,

So_luong_lo INT,

Id_nguon_cc INT,

Id_phieu_nhap INT,
PRIMARY KEY (Id_ctpn)

);

You might also like