Thứ Bảy, 17 tháng 10, 2015

                          Bài Tập Môn Cơ Sở Dữ Liệu

Đề Bài:
             Quản lí của hàng sách
Người thực hiện:  Ngô Xuân Cường   MSV: 1466704
                             Nguyễn Văn Bẩy    MSV: 1401295
                             Nguyễn Sĩ Giang    MSV: 1400207
Giảng viên: Trần Nguyên Hoàng




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ácthô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.
Phn 2: Xây dng 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ấto   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.







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:
     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:
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 =1000
1
kết quả là:

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à:

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à: 

Thay đổi tên cho nhân viên có tên
UPDATE EMPLOYEE SET EMP_NAME='nhan vien d6' WHERE EMP_ITEM=10014kế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’


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_ITEM 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.
A.     Thao tác khách hàng:

Hin th tt 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à:


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à:


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à:

 Tìm kiếm sách theo nhà xuất bản
SELECT * FROM PUBLISHER,PUBLISHER_has_BOOK,BOOKWHERE PUBLISHER_has_BOOK.BOOK_B_ITEM=BOOK.B_ITEM AND PUBLISHER.PUB_ITEM=PUBLISHER_has_BOOK.PUBLISHER_PUB_ITEM  AND PUBLISHER.PUB_NAME='nha xuat ban b'
kết quả thu được là :