MongoBD là một cơ sở dữ liệu không quan hệ, nó giúp cho chúng ta làm quen với một CSDL không có ràng buộc. Truy vấn dể dàng hơn. Dưới đây là tài liệu ôn tập thực hành trên máy: Trình bày mô hình quan hệ của đề tài, mỗi quan hệ biểu diễn các phụ thuộc hàm tương ứng. Dùng thuật toán tìm tất cả khóa để xác định tất cả khóa của lược đồ quan hệ, từ đó chọn ra khóa chính cho mỗi lược đồ quan hệ. Xác định dạng chuẩn cao nhất cho mỗi lược đồ. Phân rã các lược đồ chuẩn có chuẩn ≤ 2 thành các lược đồ con đạt chuẩn cao hơn (trong các lược đồ đã thiết kế phải giả định có tối thiểu 2 lược đồ có chuẩn ≤ 2 ). Chọn 1 phép phân rã để kiểm tra bảo toàn thông tin, bảo toàn phụ thuộc hàm. Trình bày mô hình quan hệ cuối cùng sau khi đã chuẩn hóa, nêu ra dạng chuẩn của toàn cơ sở dữ liệu, diễn giải các thuộc tính của từng quan hệ.
ÔN TẬP NOSQL Cho Database QUANLYNHANVIEN với collection document đ ược nh ập c ấu trúc sau: PHONGBAN(MaPH, TenPH, DiaDiem) NHANVIEN (MaNV, HoTen, NgaySinh, Phai, DiaChi, Luong, MaPH) DEAN (MaDA, TenDA, ViTri, SoLuong, NgayBD) PHANCONG (id_PC, MaNV, MaDA, ThoiGian) THANNHAN (MaNV, TenTN, NgaySinh, QuanHe) ============================================== ================== Phần 1: Thực lệnh MongoDB Câu 1: Viết lệnh tạo CSDL QUANLYNHANVIEN NoSQL? >use QUANLYNHANVIEN switched to db.QUANLYNHANVIEN Câu 2: Viết lệnh xóa database QUANLYNHANVIEN? >db dropDatabase() Câu 3: Viết lệnh tạo collection theo cấu trúc với kiểu liệu phù hợp? >db.CreateCollection ( “PHONGBAN”, { { MaPH: {$type: "string"}}, { TenPH: {$type: "string"}}, { DiaDiem: {$type: "string"}} }) >db.CreateCollection ( “NHANVIEN”, { { MaNV: {$type: "string"}}, { HoTen: {$type: "string"}}, { NgaySinh: {$type: "date"}}, { Phai: {$type: "string"}}, { Luong: {$type: fload}}, { MaPH: {$type: "string"}} }) Câu 4: Viết lệnh xóa collection vừa tạo? >db PHONGBAN Drop() >db.NHANVIEN Drop() Câu 5: Thực chèn document collection vừa tạo trên? a) Thêm liệu vào collection >db.PHONGBAN.Insert({ MaPH: "PH001", TenPH: "Nhân sự", DiaDiem: "Lầu 2A"}) b) Thêm nhiều liệu vào >db.PHONGBAN.Insert ( [ { MaPH: "PH001", TenPH: "Nhân sự", DiaDiem: "Lầu 2A"}, { MaPH: "PH002", TenPH: "Bảo Vệ", DiaDiem: "Lầu 1B"} ]) Câu 6: Thay tên nhân viên có mã NV001 thành Bậu Nè? >db NHANVIEN UpdateOne({ MaNV: “NV001”},{ $set: { HoTen: "Bậu Nè"}}) Câu 7: Cập nhật lương nhân viên Mèo Méo Meo từ 6500000 thành 7000000? >db NHANVIEN Update ({ HoTen: “Mèo Méo Meo”}, { Luong: 6500000}, { $set: { Luong: 7000000}, { multi: true}}) ============================================== =================== Phần 2: Thực truy vấn liệu MongoDB Câu 1: Cho biết đề án có vị trí Tân Phú Ngày bắt đầu 20/10/2019? >db DEAN Find ({$and: [ {ViTri: “Tân phú”}, {NgayBD: “20/10/2019”}]}) Câu 2: Lấy tất nhân viên có địa Quảng Trị họ tên Hữu Thắng? >db.NHANVIEN.find({ $or : [{ DiaChi: “QuangTri”}, { HoTen: "Hữu Thắng"}] }).pretty() Câu 3: Tìm nhân viên nam phân công làm đề án thời gian 01/07/2019? >db.NHANVIEN find ({ id: 1, Phai: “Nam”} Comment: [{ id: db.PHANCONG.find ({ ThoiGian: “01/07/2019’}) }] ) Câu 4: Những đề án phân công trước ngày 20/11/2019? >db.DEAN.find ( { NgayBD: { $lt: “20/11/2019”}}) Câu 5: Cho biết đề án Tân Phú có số lượng đăng ký lớn 50 người? >db.DEAN.find ({ $and: [ { ViTri: “Tân phú”}, { SoLuong : { $gt: 50}}]}).perty() Câu 6: Cho biết Đề án có số lượng từ 50 đến 100 người? >db.DEAN.find ({ $and: [ { SoLuong: {$gte: 50}, { SoLuong: { $lte: 100}}]}).perty() Câu 7: Cho biết nhân viên có lương cao nhất, lương thấp nhất? >db.NHANVIEN.find ({ $and: [ { Luong: {$Max}}, { Luong : { $Min }}]}) Câu 8: Tìm đê án bắt đầu 10/10/2020 có số lượng từ 20 đến 50 người? >db DEAN.find ( {NgayBD: “10/10/2020”, { $and: [ { SoLuong: {$gte: 20}, { SoLuong: { $lte: 50} } ] } ) Câu 9: Xóa nhân viên làm đề án có mã DA001 có thời gian nhỏ 20/1/2020? >db.NHANVIEN.Remove ( { MaNV: 1, HoTen: 1} Comment: [ { id_PC: db.PHANCONG.find ( { MaDA: “DA001”}, { ThoiGian: {$lt: “20/01/2020”} } ) ] } ) ============================================== ================== Phần 3: Thực truy vấn nâng cao với Aggregation Câu 1: Cho biết thân nhân tên Bi Perry sinh vào ngày 09/04/1998? >db.THANNHAN Aggregate ( [ {$match: { TenTN: “Bi Perry”, NgaySinh: “09/04/1998” } ] ) Câu 2: Cho biết có nhân viên có địa TP HCM? >db.NHANVIEN.aggregate( [ { $group : { MaNV : { DiaChi : “TP.HCM” } , count: {$sum:1 } } } ] ) Câu 3: Cho biết tên địa điểm phòng ban? db.PHONGBAN.aggregate( [ { $project : { TenPH : , DiaDiem : } } ] ) Câu 4: Với đề án hiển thị vị trí theo ký tự in HOA, tên đề án theo ký tự in thường Số lượng tăng lên lần so với số lượng gốc db.DEAN.aggregate([ { $project : { _id: 0, ViTri.Upper {$Upper: “ViTri” }, TenDA.Lower {$Lower: “TenDA” }, SoLuong {$Multiply: [SoLuong,2] } } ]) Câu 5: Sắp xếp nhân viên theo lương tăng dần, giảm dần theo ngày sinh l b ản ghi đầu tiên? db.NHANVIEN.aggregate( [ { $sort : { Luong : 1, NgaySinh: -1 } }, {$limit: 2} ] ) Câu 6: Cho biết có bao nhiên nhân viên nữ có địa Hà Nội, Sắp xếp kết tìm theo thứ tăng dần theo Lương lấy kết tìm db.NHANVIEN.aggregate([ // Đầu tiên lấy phái nữ { $match : { "Phai": "Nữ" } }, // Tiếp đếm số lượng NV theo địa { $group : { _id : "$DiaChi", count: { $sum: } } }, // Thứ xếp tăng theo Lương { $sort : { Luong: } }, //Cuối lấy kết { $limit : } ]) ĐỀ ÔN TẬP MẪU Cho Database QUANLYNHAHANG có cấu trúc sau: Nhanvien (id_NV, Hoten, Phai, ChucVu, Dienthoai, LuongCB); Khach (idKH, TenKH, Dienthoai, Diachi) SanPham (id_SP, TenSP, TimeBH, SoLuongTon, DonGia) HoaDon (ID_HD, NgayLap, TenKH, Tongtien) CT_Hoadon (ID_HD, TenSP, Soluong, DonGia, ThanhTien) Câu 1: (3 điểm) Thực lệnh MongoDB a) b) c) d) Viết lệnh tạo database QUANLYNHAHANG? Viết lệnh xóa database QUANLYNHAHANG? Viết lệnh tạo collection bất kỳ? Viết lệnh nhập document vào collection vừa tạo? Câu 2: (1 điểm) Thực lệnh update cập nhật Số điện thoại khách hàng Văn Bi từ 09643355 thành 096100001? Câu 3: (3 điểm) Truy vấn liệu MongoDB a) Tìm hóa đơn lập ngày 20/03/2020 có giá trị từ 100 đến 200 ngàn? b) Tìm nhữn khách hàng mua hàng vào ngày 16/06/2020? c) Cho biết sản phẩm có thời gian bảo hành từ 12 đến 24 tháng? Câu 4: (3 điểm) Truy vấn nâng cao với Aggregation a) Cho biết có nhân viên có chức vụ nhân viên bán hàng? b) Cho biết thông tin khách hàng có tên Ngọc Mai có địa Hà Nội? c) Cho biết có bao nhiên nhân viên nữ có chức vụ quản lý, Sắp xếp kết tìm theo thứ tăng dần theo Lương lấy kết tìm ... viên nam phân công làm đề án thời gian 01/07/2019? >db.NHANVIEN find ({ id: 1, Phai: “Nam”} Comment: [{ id: db.PHANCONG.find ({ ThoiGian: “01/07/2019’}) }] ) Câu 4: Những đề án phân công trước ngày... ============================================== =================== Phần 2: Thực truy vấn liệu MongoDB Câu 1: Cho biết đề án có vị trí Tân Phú Ngày bắt đầu 20/10/2019? >db DEAN Find ({$and: [ {ViTri: “Tân... “20/11/2019”}}) Câu 5: Cho biết đề án Tân Phú có số lượng đăng ký lớn 50 người? >db.DEAN.find ({ $and: [ { ViTri: “Tân phú”}, { SoLuong : { $gt: 50}}]}).perty() Câu 6: Cho biết Đề án có số lượng từ 50