You are on page 1of 25

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Học Viện Công Nghệ Bưu Chính Viễn Thông


KHOA CNTT



Cơ Sở Dữ Liệu

Quản Lý CSDL Cửa Hàng Bán Sách

Giảng viên: Nguyễn Minh Hải


Sinh viên : Phạm Văn Ca
Lớp : D11CN6
Mã sv : B112104301
Khoa : Công Nghệ Thông Tin

Ngày 12, tháng 11, năm 2013


Phần 1: Thực trạng nhà sách hiện nay

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ờ.

Quy trình hoạt động của cửa hàng sách

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.

Các yêu cầu cụ thể:

A. Với nhà quản lý:

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ể.

B. Với nhân viên

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. Với khách hàng:

o Xuất hóa đơn cho khách hàng mua hàng.


o Tìm kiếm thông tin sách cho khách hàng nếu khách hàng có yêu cầu tìm kiếm
và kiểm tra xem sách đó còn hàng hay ko?
o Thay đổi thông tin khách hàng khi cần.

D. Với nhà xuất bản:

o Xuất hóa đơn cho nhà xuất bản.


o Tìm kiếm thông tin sách mà nhà xuất bản đã cung cấp cho cửa hàng sách.
o Thay đổi thông tin nhà xuất bản nếu cần thiết.

Phần 2: Xây dựng cơ sở

1 . Xác định các thực thể

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ý.

Phần 3: Xây dựng mô hình thực thể

BOOK gồm các thuộc tính:

B_ITEM (khóa chính)

B_NAME(tên sách)

B_AUTHORS(tên tác giả)

B_COST(giá cuốn sách)

B_DATE(năm xuất bản)

B_NUMBER(số lượng sách có)

BOOKSHELF gồm các thuộc tính:

BS_ITEM (khóa chính)

BS_NAME(tên kệ sách)

BS_ADDRESS(vị trí đặt kệ sách)

KIND_OF_BOOK gồm các thuộc tính:

KB_ITEM (khóa chính)

KB_NAME(tên loại sách)

EMPLOYEE gồm các thuộc tính:

EMP_ITEM (khóa chính)

EMP_SALARY(lương nhân viên)

EMP_NAME(tên nhân viên)

EMP_ADDRESS(địa chỉ nhân viên)

MANAGER gồm các thuộc tính:

MA_ITEM (khóa chính)


MA_NAME(tên nhà quản lý)

MA_ADDRESS(địa chỉ nhà quản lý)

MA_SALARY(lương nhà quản lý)

CUSTOMER gồm các thuộc tính:

C_ITEM (khóa chính)

C_NAME(tên khách hàng)

C_ADDRESS(địa chỉ khách hàng)

INVOICES_OUT gồm các thuộc tính:

OUT_ITEM (khóa chính)

OUT_DATE(ngày xuất hóa đơn cho khách hàng)

INVOICES_IN gồm các thuộc tính:

IN_ITEM (khóa chính)

IN_DATE(ngày nhập hóa đơn nhập kho)

PUBLISHER gồm các thuộc tính:

PUB_ITEM (khóa chính)

PUB_NAME(tên nhà xuất bản)

PUB_ADDRESS(địa chỉ nhà xuất bản)

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

MA_ITEM MA_NAME MA_SALARY MA_ADDRESS


BS_ITEM MA_ITEM KB_ITEM BS_ADDRESS BS_NAME

KB_ITEM KB_NAME

C_ITEM C_NAME C_ADDRESS

PUB_ADDRESS PUB_NAME PUB_ITEM

OUT_ITEM EMP_ITEM C_ITEM OUT_DATE

IN_ITEM EMP_ITEM IN_VALUES IN_DATE PUB_ITEM

(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;

Tạo bảng nhà xuất bản


-- -----------------------------------------------------
-- Table `mydb`.`PUBLISHER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`PUBLISHER` (
`PUB_ITEM` INT NOT NULL,
`PUB_NAME` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
`PUB_ADDRESS` VARCHAR(45) CHARACTER SET 'utf8' COLLATE
'utf8_unicode_ci' NOT NULL,
PRIMARY KEY (`PUB_ITEM`))
ENGINE = InnoDB;
Tạo bảng hóa đơn nhập kho
-- -----------------------------------------------------
-- Table `mydb`.`INVOICES_IN`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`INVOICES_IN` (
`IN_ITEM` INT NOT NULL,
`IN_DATE` DATETIME NOT NULL,
`EMPLOYEE_EMP_ITEM` INT NOT NULL,
`PUBLISHER_PUB_ITEM` INT NOT NULL,
PRIMARY KEY (`IN_ITEM`),
INDEX `fk_INVOICES_IN_EMPLOYEE1_idx` (`EMPLOYEE_EMP_ITEM`
ASC),
INDEX `fk_INVOICES_IN_PUBLISHER1_idx` (`PUBLISHER_PUB_ITEM`
ASC),
CONSTRAINT `fk_INVOICES_IN_EMPLOYEE1`
FOREIGN KEY (`EMPLOYEE_EMP_ITEM`)
REFERENCES `mydb`.`EMPLOYEE` (`EMP_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_INVOICES_IN_PUBLISHER1`
FOREIGN KEY (`PUBLISHER_PUB_ITEM`)
REFERENCES `mydb`.`PUBLISHER` (`PUB_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Tạo bảng hóa đơn xuất cho khách hàng
-- -----------------------------------------------------
-- Table `mydb`.`INVOICES_OUT`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`INVOICES_OUT` (
`OUT_ITEM` INT NOT NULL,
`OUT_DATE` DATETIME NOT NULL,
`EMPLOYEE_EMP_ITEM` INT NOT NULL,
`CUSTOMER_C_ITEM` INT NOT NULL,
PRIMARY KEY (`OUT_ITEM`),
INDEX `fk_INVOICES_OUT_EMPLOYEE1_idx`
(`EMPLOYEE_EMP_ITEM` ASC),
INDEX `fk_INVOICES_OUT_CUSTOMER1_idx` (`CUSTOMER_C_ITEM`
ASC),
CONSTRAINT `fk_INVOICES_OUT_EMPLOYEE1`
FOREIGN KEY (`EMPLOYEE_EMP_ITEM`)
REFERENCES `mydb`.`EMPLOYEE` (`EMP_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_INVOICES_OUT_CUSTOMER1`
FOREIGN KEY (`CUSTOMER_C_ITEM`)
REFERENCES `mydb`.`CUSTOMER` (`C_ITEM`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
Tạo bảng sách:
-- -----------------------------------------------------
-- Table `mydb`.`BOOK`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`BOOK` (
`B_ITEM` INT NOT NULL,
`B_NAME` VARCHAR(45) NOT NULL,
`B_AUTHORS` VARCHAR(45) NOT NULL,
`B_COST` INT NOT NULL,
`B_DATE` DATETIME NOT NULL,
`B_NUMBER` INT NOT NULL,
`KIND_OF_BOOK_KB_ITEM` INT NOT NULL,
`B_NUMBER` INT NOT NULL,
PRIMARY KEY (`B_ITEM`),
INDEX `fk_BOOK_KIND_OF_BOOK1_idx` (`KIND_OF_BOOK_KB_ITEM`
ASC),
CONSTRAINT `fk_BOOK_KIND_OF_BOOK1`
FOREIGN KEY (`KIND_OF_BOOK_KB_ITEM`)
REFERENCES `mydb`.`KIND_OF_BOOK` (`KB_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Bảng thể hiện mối quan hệ n-m giữa nhà xuất bản(PUBLISHER ) với sách (BOOK)
-- -----------------------------------------------------
-- Table `mydb`.`PUBLISHER_has_BOOK`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`PUBLISHER_has_BOOK` (
`PUBLISHER_PUB_ITEM` INT NOT NULL,
`BOOK_B_ITEM` INT NOT NULL,
PRIMARY KEY (`PUBLISHER_PUB_ITEM`, `BOOK_B_ITEM`),
INDEX `fk_PUBLISHER_has_BOOK_BOOK1_idx` (`BOOK_B_ITEM` ASC),
INDEX `fk_PUBLISHER_has_BOOK_PUBLISHER1_idx`
(`PUBLISHER_PUB_ITEM` ASC),
CONSTRAINT `fk_PUBLISHER_has_BOOK_PUBLISHER1`
FOREIGN KEY (`PUBLISHER_PUB_ITEM`)
REFERENCES `mydb`.`PUBLISHER` (`PUB_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_PUBLISHER_has_BOOK_BOOK1`
FOREIGN KEY (`BOOK_B_ITEM`)
REFERENCES `mydb`.`BOOK` (`B_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Bảng thể hiện mối quan hệ nhiều nhiều giữa hóa đơn nhập với sách(1 hóa đơn nhập
có thể nhập nhiều sách và 1 sách có thể nhập được bởi nhiều lần hay chính là nhập
nhiều hóa đơn)
-- -----------------------------------------------------
-- Table `mydb`.`INVOICES_IN_INCLUDE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`INVOICES_IN_INCLUDE` (
`INVOICES_IN_IN_ITEM` INT NOT NULL,
`BOOK_B_ITEM` INT NOT NULL,
`IN_NUMBER` INT NOT NULL,
INDEX `fk_INVOICES_IN_has_BOOK_BOOK2_idx` (`BOOK_B_ITEM`
ASC),
INDEX `fk_INVOICES_IN_has_BOOK_INVOICES_IN2_idx`
(`INVOICES_IN_IN_ITEM` ASC),
PRIMARY KEY (`BOOK_B_ITEM`, `INVOICES_IN_IN_ITEM`),
CONSTRAINT `fk_INVOICES_IN_has_BOOK_INVOICES_IN2`
FOREIGN KEY (`INVOICES_IN_IN_ITEM`)
REFERENCES `mydb`.`INVOICES_IN` (`IN_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_INVOICES_IN_has_BOOK_BOOK2`
FOREIGN KEY (`BOOK_B_ITEM`)
REFERENCES `mydb`.`BOOK` (`B_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Bảng thể hiện mối quan hệ nhiều nhiều giữa hóa đơn nhập với sách(một hóa đơn có
thể có nhiều sách và 1 sách có thể có trong nhiều hóa đơn xuất cho khách hàng)
-- -----------------------------------------------------
-- Table `mydb`.`INVOICES_OUT_INCLUDE`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`INVOICES_OUT_INCLUDE` (
`INVOICES_OUT_OUT_ITEM` INT NOT NULL,
`BOOK_B_ITEM` INT NOT NULL,
`OUT_NUMBER` INT NOT NULL,
INDEX `fk_INVOICES_OUT_has_BOOK_BOOK1_idx` (`BOOK_B_ITEM`
ASC),
INDEX `fk_INVOICES_OUT_has_BOOK_INVOICES_OUT1_idx`
(`INVOICES_OUT_OUT_ITEM` ASC),
PRIMARY KEY (`INVOICES_OUT_OUT_ITEM`, `BOOK_B_ITEM`),
CONSTRAINT `fk_INVOICES_OUT_has_BOOK_INVOICES_OUT1`
FOREIGN KEY (`INVOICES_OUT_OUT_ITEM`)
REFERENCES `mydb`.`INVOICES_OUT` (`OUT_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_INVOICES_OUT_has_BOOK_BOOK1`
FOREIGN KEY (`BOOK_B_ITEM`)
REFERENCES `mydb`.`BOOK` (`B_ITEM`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
B, Nhập dữ liệu.
Nhân viên:

Sách:
Kệ sách:

Khách hàng:

Loại sách:

Hóa đơn nhập sách:


Hóa đơn xuất cho khách hàng:

Nhà xuất bản:

Nhà quản lý:


Bảng thể hiện quan hệ nhiều nhiều giữa hóa đơn nhập hàng vớ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

C, Yêu cầu truy vấn


A. Người quản lý và nhân viên:
o In ra danh sách những đầu sách cần phải nhập thêm vào kho sách (giả
sử những đầu sách có số lượng <20) cho người quản lý:
truy vấn: SELECT * FROM BOOK WHERE B_NUMBER <20
kết quả in ra là các đầu sách cần nhập thêm:

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.

B. Thao tác khách hàng:

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

kết quả truy vấn là:

o Thêm 1 khách hàng mới vào danh sách khách hàng.


truy vấn:
INSERT INTO CUSTOMER(C_ITEM, C_NAME, C_ADDRESS)
VALUES (10010,'nguyen tien thanh','nam dinh')
kết quả trả về là:
o Tìm kiếm sách theo tên và tác giả(vd: tìm sách tên sách a hoặc của tác
giả a)
truy vấn:
SELECT * FROM BOOK WHERE B_NAME = 'sach a' OR
B_AUTHORS = 'tac gia a'
kết quả thu được là:

o Tìm kiếm sách theo nhà xuất bản


SELECT * FROM PUBLISHER,PUBLISHER_has_BOOK,BOOK
WHERE PUBLISHER_has_BOOK.BOOK_B_ITEM=BOOK.B_ITEM
AND
PUBLISHER.PUB_ITEM=PUBLISHER_has_BOOK.PUBLISHER_PU
B_ITEM AND PUBLISHER.PUB_NAME='nha xuat ban b'
kết quả thu được là :

You might also like