Professional Documents
Culture Documents
BTL CSDL
BTL CSDL
Cơ Sở Dữ Liệu
Thông qua quá trình tìm hiêu, khảo sát trực tiếp tại nhiều các cửa hang siêu thị sách,
ta có thể nhận thấy các khâu quản lý mua bán sách, thống kê, quản lý khách hàng,
nhà cung cấp, nhân viên còn nhiều tồn đọng cần được giải quyết.
Cửa hàng bán sách mà em đã khảo sát là một cửa hàng bán sách có qui mô trung
bình với nhiều loại sách khác nhau. Hàng ngày cửa hàng đón nhận nhiều khách hàng
đến mua sách. Sau mỗi lần giao dịch (mua bán sách) thì công tác quản lý, kinh doanh
tốn rất nhiều thời gian, công sức, giấy tờ, số sách. Là một cửa hàng với nhiều loại
sách khác nhau vì vậy việc quản lý nhân viên,khách hàng mua bán, thanh toán không
tránh khỏi những sai sót, nhầm lẫn. Mọi quá trình mua bán sách, nhập sách từ nhà
cung cấp đều bằng giấy viết tay và lưu trữ bằng giấy mất nhiều thời gian và công sức
rất rễ xảy ra nhầm lẫn, mất mát.
Công việc quản lý nhân viên từ lý lịch, công việc, đặc biệt là mối quan hệ với nhà
cung cấp, với khách hàng đều chỉ mang cái nhìn tổng quát về công việc kinh doanh
của cửa hàng. Người quản lý cửa hàng rất khó khăn trong việc nắm bắt các thông tin
về nhà cung cấp, khách hàng, số lượng sách đã bán được, số lượng sách còn tồn
trong kho, loại sách nào bán chạy để có thê đưa ra biện pháp kinh doanh kịp thời..
Mỗi khi muốn thống kê, báo cáo về hoạt động kinh doanh của cửa hàng mình các
nhân viên lại phải tìm tòi, lùng sục tùng hoá đơn, số sách mất nhiều thời gian, vì vậy
các nhà quản lý khó nắm bắt được hoạt động kinh doanh thường xuyên của cửa hàng
mình dẫn đến sự chậm chễ trong việc đưa ra chiến lược kinh doanh.
Bên cạnh đó sự phát triển không ngừng của công nghệ thông tin, việc ứng dụng công
nghệ thông tin vào việc quản lý sẽ giúp cửa hàng trở nên dễ dàng và tiện lợi hơn rất
nhiều so với việc làm thủ công bằng tay và giấy tờ.
khi cửa hàng có nhu cầu nhập sách về nhân viên sẽ báo cho người quản lý cửa hàng
người quản lý sẽ xem xét xem cần nhập những loại sách gì, tìm hiểu và lên hệ với nhà
cung cấp, nếu là nhà cung cấp mới thì phải gọi điện trao đối về khả năng cung ứng,
tìm hiếu kỹ rồi mới tiến hành đặt hàng. Khi nhà cung cấp đưa hàng tới thì nhân viên
sẽ tiến hành kiểm tra xem có đảm bảo yêu cầu về số lượng và chất lượng như nhà
quản lý đă yêu cầu không. Nếu đảm bảo yêu cầu thì nhập sách vào kho, khi sách được
nhập vào kho thì phải cộng thêm số lượng sách vào kho đó, sau đó là viết hoá đơn
nhập, rồi gửi khách hàng một bản, gửi nhà quản lý một bản, nhà quản lý sẽ ký rồi
thanh toán với nhà cung cấp. Công việc còn lại của nhân viên là thống kê sách trong
kho và các loại sách sau mỗi lần nhập để báo cho người quản lý.Khi có khách hàng
đến mua sách sẽ có nhân viên chuyên tiếp đón khách hàng, khách hàng vào mua sách
sẽ được những nhân viên tiếp thị về các loại sách mà khách hàng cần mua như số
lượng sách được khuyến mại, giảm giá. Khi khách hàng đồng ý mua sách thì nhân
viên sẽ xem sách đó có còn trong kho sách không, nếu không còn thì tiếp thị cho
khách hàng các loại sách tương tự hoặc hẹn khách hàng vào thời gian gần nhất đến
nhận sách, nếu còn hàng thì nhân viên sẽ lập hoá đơn bán,và lưu hoá đơn bán đó,
khách hàng nhận hoá đơn bán đến thanh toán với người quản lý, khách hàng sẽ nhận
được phiếu thanh toán, nếu khách hàng mua nhiều sách với số lượng lớn có nhu cầu
vận chuyến thì sẽ có nhân viên vận chuyên cho khách hàng.
o Hỗ trợ người quản lý tìm kiếm các thông tin về các đầu sách, thông tin về hóa
đơn, khách hàng, tình hình kho hàng sách…
o Hồ trợ đắc lực cho người quản lý giúp người quản lý nhận định một cách tống
thể nhất về tình hình hoạt động, kinh doanh của cửa hàng mình.
o Hỗ trợ công việc tìm kiếm của người quản lý 1 cách tốt nhất và nhanh nhất có
thể.
o Hỗ trợ nhân viên tìm kiếm các thông tin liên quan đến sách như số lượng, đơn
giá, khuyến mại giảm giá để nhân viên kịp thời có thông tin tiếp thị cho khách
hàng.
o Hỗ trợ nhân viên tìm kiếm các loại sách, tên sách một cách nhanh chóng, thống
kê số lượng sách còn tồn trong kho.
o Giúp nhân viên tìm kiếm thông tin khách hàng, nhà cung cấp một cách nhanh
chóng, chính xác.
o Nhập số liệu một cách nhanh chóng, chính xác.
o Đảm bảo công việc lưu trữ chuẩn xác, tìm kiếm các thông tin về khách hàng,
nhà cung cấp nhanh chóng, chính xác.
o Trợ giúp nhân viên trong việc thống kê doanh thu từng ngày của cửa hàng nếu
cần.
Cửa hàng bán sách ABC cần quản lý việc mua bán sách với mô tả như sau:
BOOK: là 1 thực thể bao gồm các cuốn sách có trong cửa hàng sách. Mỗi cuốn sách
được xác định bởi 1 mã sách duy nhất,tên cuốn sách, giá cuốn sách, tác giả cuốn
sách, năm xuất bản cuốn sách,số lượng sách đang có.
KIND_OF_BOOK: là 1 thực thể bao gồm các loại sách có trong cửa hàng sách. Mỗi
loại sách được xác định bởi mã loại sách duy nhất, tên loại sách.
PUBLISHER: là 1 thực thể bao gồm các nhà xuất bản cung cấp sách cho cửa hàng
sách. Mỗi nhà xuất bản xác định bởi mã nhà xuất bản (duy nhất), tên nhà xuất bản,
địa chỉ nhà xuất bản.
BOOKSHELF: là 1 thực thể xác bao gồm các kệ sách có trong cửa hàng bán sách.
Mỗi kệ sách xác định bởi mã kệ sách(duy nhất), tên kệ sách, vị trí đặt kệ sách.
CUSTOMER: là 1 thực thể bao gồm các khách hàng mua sách trong cửa hàng bán
sách. Mỗi khách hàng được xác định bởi mã khách hàng duy nhất, tên khách hàng,
địa chỉ khách hàng.
INVOICES_OUT: là 1 thực thể bao gồm hóa đơn xuất ra cho khách hàng khi mua
hàng. Hóa đơn xuất được lưu lại trong csdl với các thông tin như mã hóa đơn(duy
nhất), ngày xuất hóa đơn.
INVOICES_IN: là 1 thực thể bao gồm hóa đơn nhập vào khi nhập sách từ nhà xuất
bản. Mỗi hóa đơn nhập vào được lưu lại trong csdl với các thông tin như mã hóa đơn
nhập(duy nhất), ngày nhập hóa đơn.
EMPLOYEE: là 1 thực thể bao gồm các nhân viên làm việc trong cửa hàng sách. Mỗi
nhân viên được xác định bởi mã nhân viên duy nhất, tên nhân viên, mức lương nhân
viên, địa chỉ của nhân viên.
MANAGER: là 1 thực thể bao gồm các nhà quản lý làm việc trong cửa hàng sách.
Mỗi nhà quản lý được xác định bởi mã nhà quản lý duy nhất, tên nhà quản lý,địa chỉ
nhà quản lý, lương nhà quản lý.
B_NAME(tên sách)
BS_NAME(tên kệ sách)
Trong đó:
o 1 nhân viên chỉ làm việc tại 1 kệ sách duy nhất nhưng 1 kệ sách có thể có nhiều
nhân viên cùng làm việc 1 lúc.
o 1 nhân viên có thể kiểm tra nhiều hóa đơn xuất cho khách hàng cũng như hóa
đơn nhập hàng từ nhà xuất bản nhưng 1 hóa đơn(xuất cho khách hàng mua
sách hay hóa đơn nhập hàng từ nhà xuất bản) chỉ được kiểm tra bởi 1 nhân
viên duy nhất.
o 1 nhân viên chịu sự quản lý của 1 nhà quản lý duy nhất nhưng 1 nhà quản lý có
thể quản lý nhiều nhân viên cùng 1 lúc.
o 1 nhà quản lý chỉ có thể quản lý 1 kệ sách duy nhất và 1 kệ sách cũng chỉ được
quản lý bởi 1 nhà quản lý duy nhất.
o 1 kệ sách chỉ chứa 1 loại sách duy nhất và 1 loại sách thì chỉ nằm trên 1 kệ
sách duy nhất.
o 1 loại sách có thể gồm nhiều cuốn sách nhưng 1 cuốn sách chỉ thuộc 1 loại
sách duy nhất
o 1 khách hàng có thể có nhiều hóa đơn mua sách nhưng 1 hóa đơn mua sách chỉ
xác định 1 khách hàng duy nhất.
o 1 hóa đơn xuất cho khách hàng có thể chứ nhiều cuốn sách và mỗi cuốn sách
có thể được xuất hiện trong nhiều hóa đơn khác nhau.
o 1 nhà xuất bản cung cấp nhiều cuốn sách cho cửa hàng và 1 cuốn sách có thể
được cung cấp bởi nhiều nhà xuất bản.
o 1 nhà xuất bản có thể có nhiều hóa đơn nhập nhưng 1 hóa đơn nhập hàng chỉ
xác định với 1 nhà xuất bản duy nhất.
o 1 hóa đơn nhập hàng có thể bao gồm nhập nhiều sách và 1 cuốn sách có thể
thuộc nhiều hóa đơn nhập hàng.
EMP_ITEM BS_ITEM MA_ITEM EMP_SALARY EMP_NAME EMP_ADDRESS
KB_ITEM KB_NAME
(INVOICES_IN INCLUDE)
IN_ITEM IN_NUMBER B_ITEM
(INVOICES_OUT INCLUDE)
B_NUMBER B_NAME B_AUTHORS B_COST B_DAT PUB_ITEM KB_ITEM B_ITEM
OUT_ITEM OUT_NUMBE B_ITEM
E
R
Hình ảnh thiết kế trên Mysql (sử dụng phần mềm mysql workbench trong mysql)
Phần 4: câu lệnh truy vấn
A,Khởi tạo
Tạo bảng người quản lý:
CREATE TABLE IF NOT EXISTS `mydb`.`MANAGER` (
`MA_ITEM` INT NOT NULL,
`MA_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`MA_SALARY` INT NOT NULL,
`MA_ADDRESS` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
PRIMARY KEY (`MA_ITEM`))
ENGINE = InnoDB;
Tạo bảng loại sách:
-- -----------------------------------------------------
-- Table `mydb`.`KIND_OF_BOOK`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`KIND_OF_BOOK` (
`KB_ITEM` INT NOT NULL,
`KB_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
PRIMARY KEY (`KB_ITEM`))
ENGINE = InnoDB;
Tạo bảng kệ chứa sách:
-- -----------------------------------------------------
-- Table `mydb`.`BOOKSHELF`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`BOOKSHELF` (
`BS_ITEM` INT NOT NULL,
`BS_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`BS_ADDRESS` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`MANAGER_MA_ITEM` INT NOT NULL,
`KIND_OF_BOOK_KB_ITEM` INT NOT NULL,
PRIMARY KEY (`BS_ITEM`),
INDEX `fk_BOOKSHELF_MANAGER1_idx` (`MANAGER_MA_ITEM`
ASC),
INDEX `fk_BOOKSHELF_KIND_OF_BOOK1_idx`
(`KIND_OF_BOOK_KB_ITEM` ASC),
CONSTRAINT `fk_BOOKSHELF_MANAGER1`
FOREIGN KEY (`MANAGER_MA_ITEM`)
REFERENCES `mydb`.`MANAGER` (`MA_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_BOOKSHELF_KIND_OF_BOOK1`
FOREIGN KEY (`KIND_OF_BOOK_KB_ITEM`)
REFERENCES `mydb`.`KIND_OF_BOOK` (`KB_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Tạo bảng nhân viên
-- -----------------------------------------------------
-- Table `mydb`.`EMPLOYEE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`EMPLOYEE` (
`EMP_ITEM` INT NOT NULL,
`EMP_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`EMP_SALARY` INT NOT NULL,
`EMP_ADDRESS` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`BOOKSHELF_BS_ITEM` INT NOT NULL,
`MANAGER_MA_ITEM` INT NOT NULL,
PRIMARY KEY (`EMP_ITEM`),
INDEX `fk_EMPLOYEE_BOOKSHELF_idx` (`BOOKSHELF_BS_ITEM`
ASC),
INDEX `fk_EMPLOYEE_MANAGER1_idx` (`MANAGER_MA_ITEM` ASC),
CONSTRAINT `fk_EMPLOYEE_BOOKSHELF`
FOREIGN KEY (`BOOKSHELF_BS_ITEM`)
REFERENCES `mydb`.`BOOKSHELF` (`BS_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_EMPLOYEE_MANAGER1`
FOREIGN KEY (`MANAGER_MA_ITEM`)
REFERENCES `mydb`.`MANAGER` (`MA_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Tạo bảng khách hàng:
-- -----------------------------------------------------
-- Table `mydb`.`CUSTOMER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`CUSTOMER` (
`C_ITEM` INT NOT NULL,
`C_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`C_ADDRESS` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
PRIMARY KEY (`C_ITEM`))
ENGINE = InnoDB;
Sách:
Kệ sách:
Khách hàng:
Loại sách:
Bảng thể hiện quan hệ giữa hóa đơn xuất với sách
Bảng thể hiện quan hệ giữa nhà xuất bản với sách
o In ra danh sách nhân viên mà nhà quản lý có mã 10001 đang quản lý:
truy vấn:
SELECT * FROM EMPLOYEE
WHERE EMPLOYEE.MANAGER_MA_ITEM =10001
kết quả là:
o In ra tất cả hóa đơn nhập mà nhân viên có mã 10002 thực hiện:
truy vấn:
SELECT*FROM INVOICES_IN WHERE
INVOICES_IN.EMPLOYEE_EMP_ITEM=10003
kết quả trả về 1 kết quả duy nhất là:
o Liệt kê tất cả danh sách nhân viên đang làm việc ở kệ sách b mã 10002
truy vấn:
SELECT*FROM EMPLOYEE WHERE
EMPLOYEE.BOOKSHELF_BS_ITEM=10002
kết quả truy vấn trả về là:
o In ra danh sách các hóa đơn đã giao dịch từ ngày 30/11/2011 đến ngày
4/10/2013
truy vấn:
SELECT * FROM INVOICES_IN WHERE IN_DATE > ‘2011-11-30'
AND IN_DATE < '2013-10-04'
kết quả trả về là:
o Thay đổi tên cho nhân viên có tên
UPDATE EMPLOYEE SET EMP_NAME='nhan vien d6' WHERE
EMP_ITEM=10014
kết quả là: tên nhân viên có mã 10014 đã được đổi tên từ ‘nha vien c7’
được đổi thành ‘nhan vien d6’
o In ra danh sách những nhà xuất bản cung cấp sách có tên sách a với mã
sách là 10001và số lượng sách đang có trong kho.
truy vấn:
SELECT * FROM INVOICES_IN,PUBLISHER,INVOICES_IN_INCLUDE
WHERE INVOICES_IN_INCLUDE.BOOK_B_ITEM=10001 AND
INVOICES_IN_INCLUDE.INVOICES_IN_IN_ITEM=INVOICES_IN.IN_IT
EM AND
INVOICES_IN.PUBLISHER_PUB_ITEM=PUBLISHER.PUB_ITEM
kết quả truy vấn là:
o Thao tác nhập thêm sách vào kho và cập nhật lại số lượng sách là tổng hợp
của 2 truy vấn tạo mới hóa đơn nhập và update lại sách. Ngoài ra cũng cần
có thao tác xuất ra hóa đơn nhập cho nhà xuất bản.
o Hiển thị tất cả các hóa đơn cho khách hàng có tên là ‘nguyen van a’ mã
khách hàng là 10001:
SELECT * FROM CUSTOMER, INVOICES_OUT,
INVOICES_OUT_INCLUDE WHERE CUSTOMER.C_NAME =
'nguyen van a' AND INVOICES_OUT.CUSTOMER_C_ITEM =
CUSTOMER.C_ITEM AND
INVOICES_OUT_INCLUDE.INVOICES_OUT_OUT_ITEM =
INVOICES_OUT.OUT_ITEM