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.
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.
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`
--
-----------------------------------------------------
`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 <20kế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
truy vấn:
SELECT * FROM EMPLOYEE WHERE EMPLOYEE.MANAGER_MA_ITEM =1000
1
kết quả là:
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à:
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:
truy vấn:
SELECT*FROM EMPLOYEE WHERE EMPLOYEE.BOOKSHELF_BS_ITEM=10002
kết quả truy vấn trả về là:
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'
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_ITEMtruy vấn:
SELECT * FROM INVOICES_IN,PUBLISHER,INVOICES_IN_INCLUDE WHERE INVOICES_IN_INCLUDE.BOOK_B_ITEM=10001
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:
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_ITEMSELECT * FROM CUSTOMER, INVOICES_OUT, INVOICES_OUT_INCLUDE WHERE CUSTOMER.C_NAME = 'nguyen van a' AND INVOICES_OUT.CUSTOMER_C_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à:
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 =
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à :
Casinos Near Me - Mapyro
Trả lờiXóaFind Casinos Near Me 김천 출장마사지 near you on Mapyro. Casino is 이천 출장안마 located at 10th 김포 출장안마 street 문경 출장마사지 in Hanover and features a casino, a full-service spa, 제주 출장샵 and a spa.