Trong trường hợp này, vì đã tìm thấy siêu khoá {A,B,C}, nó chứa tất cả các thuộc tính, nên nó là khóa của lược đồ quan hệ này.Vậy, trong ví dụ này, khóa của lược đồ quan hệ được xác định
Cơ Sở Dữ Liệu Tập Trung
Phủ Tối thiểu
"Tập phụ thuộc hàm tối thiểu là tập mà thỏa mãn các điều kiện sau:
Mỗi phụ thuộc hàm trong tập chỉ có một thuộc tính ở vế phải, không có thuộc tính dư thừa. Không thể thay thế bất kỳ phụ thuộc hàm X → A nào trong tập bằng phụ thuộc hàm Y →
A, với Y là tập con của X và vẫn giữ nguyên tính đúng của các phụ thuộc hàm.
Không thể loại bỏ bất kỳ phụ thuộc hàm nào ra khỏi tập mà vẫn giữ nguyên tính đúng của tập phụ thuộc hàm.
Tập tối thiểu các phụ thuộc hàm có thể được hiểu như tập không chứa thông tin dư thừa. Điều kiện 1 đảm bảo rằng mỗi phụ thuộc hàm đều đúng theo cấu trúc cơ bản chỉ với một thuộc tính ở vế phải, điều kiện 2 đảm bảo không có thuộc tính nào không cần thiết ở vế trái và điều kiện
3 đảm bảo không có phụ thuộc hàm nào thừa thãi Tập phụ thuộc hàm tối thiểu cũng được gọi là phủ tối thiểu."
Tìm Tất Cả Các Khóa
Dữ liệu vào: Q(U), tập phụ thuộc hàm F
Dữ liệu ra: tất cả các khóa của Q
Bước 1: Xác định tất cả các tập con của Q Để xác định tất cả các tập con của một lược đồ quan hệ Q(U) với U={A1, A2, , An} ta lần lượt duyệt tất cả 2n-1 tập hợp con khác rỗng của U (n là số thuộc tính của Q) Kết quả tìm được giả sử là các tập thuộc tính:
Bước 2: Tính Xi + Nếu Xi + = U thì Xi là siêu khoá Giả sử sau bước này có m siêu khoá:
Bước 3 Tìm các khóa từ tập siêu khóa S Xét mọi Si và Sj con của S (i ≠ j), nếu Si Sj thì ta loại Sj ra khỏi S Kết quả S còn lại chính là tập tất cả các khoá cần tìm
Giả sử có một lược đồ quan hệ với tập thuộc tính :U={A,B,C} và tập phụ thuộc
Bước 1: Xác định tất cả các tập con của U Đối với U={A,B,C}, ta xem xét tất cả các tập con khác rỗng, tức là 2^3−1=7 tập con:
Bước 2: Tính toán siêu khoá Kiểm tra các tập con trong S xem có tập nào chứa tất cả các thuộc tính của U không. Ở đây, {A,B,C} là siêu khoá vì nó chứa tất cả các thuộc tính trong U.
Bước 3: Tìm các khóa từ tập siêu khoá S Trong trường hợp này, vì đã tìm thấy siêu khoá {A,B,C}, nó chứa tất cả các thuộc tính, nên nó là khóa của lược đồ quan hệ này.
Vậy, trong ví dụ này, khóa của lược đồ quan hệ được xác định là{A,B,C} dựa trên thuật toán đã mô tả.
Nhận Diện Các Dạng Chuẩn
Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 1 nếu mọi thuộc tính trong Q đều là các thuộc tính đơn Tức là những giá trị trong các thuộc tính đều không thể phân chia được nữa.
Ví Dụ :Giả sử có lược đồ quan hệ:
Xét một thể hiện quan hệ được định nghĩa trên lược đồ CHUYENMON sau:
Trong đó thuộc tính MonHoc là thuộc tính kép Để có được dạng chuẩn 1 cho quan hệ trên, ta có thể tách thuộc tính kép thành thuộc tính đơn như sau:
Một lược đồ quan hệ Q đạt dạng chuẩn 2 nếu Q đạt dạng chuẩn 1 và tất cả các thuộc tính không khoá của Q đều phụ thuộc đầy đủ vào khoá.
Ví Dụ :iả sử chúng ta có một lược đồ quan hệ cho các đơn hàng trong một cửa hàng online: Lược đồ quan hệ: DON_HANG(SODH, NGAYDH, KHACHHANG, MAHH, SOLUONG) Trong đó:
SODH là số đơn hàng
NGAYDH là ngày đặt hàng
KHACHHANG là mã khách hàng
MAHH là mã hàng hóa
SOLUONG là số lượng hàng hóa trong đơn hàng
Và chúng ta có các phụ thuộc hàm như sau:
F = {SODH → NGAYDH, KHACHHANG; SODH, MAHH → SOLUONG}
Lược đồ này đã đạt dạng chuẩn 1 (1NF) vì không có các thuộc tính có giá trị lặp lại trong bất kỳ bộ nào. Để kiểm tra dạng chuẩn 2, chúng ta xem xét các phụ thuộc hàm và xác định xem các thuộc tính không phải là khóa chính có phụ thuộc đầy đủ vào khóa hay không.
Trong F, ta có phụ thuộc hàm SODH → NGAYDH, KHACHHANG, nghĩa là NGAYDH và KHACHHANG phụ thuộc vào SODH Tuy nhiên, cả hai thuộc tính này không phụ thuộc đầy đủ vào khóa chính {SODH, MAHH}.
Vì vậy, lược đồ quan hệ DON_HANG không đạt dạng chuẩn 2 (2NF) do có phụ thuộc hàm bộ phận Để đạt 2NF, chúng ta cần cắt phụ thuộc hàm này ra khỏi khóa chính.
1.3.3 3NF Định nghĩa 1 Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 3 nếu Q ở dạng chuẩn 2 và mọi thuộc tính không khóa của Q đều không phụ thuộc bắc cầu vào bất kỳ khóa nào Định nghĩa 2 Một lược đồ quan hệ Q đạt 3NF nếu mọi phụ thuộc hàm không hiển nhiên X→A (A là 1 thuộc tính) thỏa:
Hoặc X là một siêu khoá của Q
Hoặc A là một thuộc tính khoá
Ví Dụ :Giả sử chúng ta có một lược đồ quan hệ cho việc lưu trữ thông tin về đơn hàng và sản phẩm:
Lược đồ quan hệ: DON_HANG(SODH, NGAYDH, KHACHHANG, MAHH, TENHH, SOLUONG)
SODH là số đơn hàng
NGAYDH là ngày đặt hàng
KHACHHANG là mã khách hàng
MAHH là mã hàng hóa
TENHH là tên hàng hóa
SOLUONG là số lượng hàng hóa trong đơn hàng
Và chúng ta có các phụ thuộc hàm như sau:
F = {SODH → NGAYDH, KHACHHANG; MAHH → TENHH}
Kiểm tra 3NF: Để kiểm tra xem lược đồ quan hệ này có đạt 3NF hay không, chúng ta cần kiểm tra xem các thuộc tính không phải là khóa có phụ thuộc bắc cầu vào khóa không.
Trong F, ta có phụ thuộc hàm SODH → NGAYDH, KHACHHANG, nghĩa là NGAYDH và KHACHHANG phụ thuộc vào SODH Đây không phải là phụ thuộc bắc cầu vào khóa, vì SODH không phải là khóa chính của lược đồ.
Ngoài ra, ta có phụ thuộc hàm MAHH → TENHH, trong đó TENHH là một thuộc tính không phải là khóa và phụ thuộc vào MAHH, nhưng MAHH cũng không phải là khóa chính. Như vậy, lược đồ quan hệ DON_HANG không đạt 3NF vì có phụ thuộc bắc cầu vào các khóa không phải là khóa chính Để đạt 3NF, chúng ta cần cắt phụ thuộc hàm này ra khỏi các thuộc tính không phải là khóa.
Một lược đồ quan hệ Q được gọi là ở dạng chuẩn BC nếu mọi phụ thuộc hàm không hiển nhiên của F đều có vế trái chứa khóa.
Ví Dụ : Cho quan hệ R = (ABCDGH), khóa là AB và tập phụ thuộc hàm F = {AB → C, AB → D,
AB → GH} là quan hệ đạt chuẩn BCNF.
1.3.5 Chuẩn Hóa Lược Đồ CSDL
- Chuẩn hóa cơ sở dữ liệu là một quá trình thiết kế bảng trong cơ sở dữ liệu, chia các bảng lớn thành các bảng nhỏ hơn và liên kết chúng bằng các mối quan hệ Chuẩn hóa giúp giảm thiểu dư thừa dữ liệu và loại bỏ các bất thường khi cập nhật cơ sở dữ liệu.
- Có một số dạng chuẩn hóa cơ bản:
+ Dạng chuẩn 1 (1NF): Một bảng được gọi là ở dạng chuẩn 1NF nếu các giá trị của tất cả các thuộc tính đều phải là nguyên tử (đơn, không phân chia được) Nó không chứa các thuộc tính có giá trị lặp hoặc đa trị.
+ Dạng chuẩn 2 (2NF): Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó là 1NF và các thuộc tính không khóa phải phụ thuộc hàm đầy đủ vào khóá chính.
+ Dạng chuẩn 3 (3NF): Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó là 2NF và các thuộc tính không khóá phải phụ thuộc trực tiếp vào khóá chính.
+ Dạng chuẩn Boye Code (BCNF): Một quan hệ ở dạng chuẩn BCNF nếu quan hệ đó là 3NF và không có thuộc tính khóa mà phụ thuộc hàm vào thuộc tính không khóá.
Một ví dụ về chuẩn hóa cơ sở dữ liệu từ INF đến 3NF:
INF (First Normal Form): Giả sử chúng ta có một bảng chưa ở 1NF như sau:
MASV HOTEN DIACHI MAMON TENMON DIEM
A02 Trần An 56 Mã Mây M01 CSDL 8
6 8 9 Để chuyển bảng này về INF, chúng ta cần phải đảm bảo rằng mỗi ô trong bảng chỉ chứa một giá trị đơn và mỗi dòng (bản ghi) cần phải là duy nhất.
Chuẩn Hóa lược Đồ Sử Dụng Thuật Toán 7.10 Trang 150 - Phân Rã Đến 3NF
- Chuẩn hóa lược đồ CSDL sử dụng thuật toán 7.10 trang 150 - Phân rã đến 3NF là một quy trình chuẩn hóa cơ sở dữ liệu để đảm bảo rằng dữ liệu được tổ chức một cách hiệu quả Các bước cơ bản trong quá trình này :
Bước 1: Xác định tất cả các phụ thuộc hàm trong lược đồ quan hệ
Bước 2: Xác định tất cả các khóa chính và khóa phụ T Bước 3: Xác định tất cả các thuộc tính không phụ thuộc vào khóa chính
Bước 4: Xác định tất cả các thuộc tính phụ thuộc vào khóa chính
Bước 5: Tạo các bảng mới dựa trên các thuộc tính phụ thuộc vào khóa chính
Ví Dụ :Giả sử chúng ta có một quan hệ R = (ABCD) với tập phụ thuộc hàm F = {AB -> C,
AB -> D, B -> DC} và khóa chính là AB.
Bước 1: Xác định tất cả các phụ thuộc hàm trong lược đồ quan hệ Trong trường hợp này, chúng ta có F = {AB -> C, AB →> D, B →> DC}.
Bước 2: Xác định tất cả các khóa chính và khóa phụ Trong trường hợp này, khóa chính là AB.
Bước 3: Xác định tất cả các thuộc tính không phụ thuộc vào khóa chính Trong trường hợp: này, chúng ta không có thuộc tính nào không phụ thuộc vào khóá chính T Bước 4: Xác định tất cả các thuộc tính phụ thuộc vào khóa chính Trong trường hợp này, chúng ta có C và D phụ thuộc vào khoa chính AB.
Bước 5: Tạo các bảng mới dựa trên các thuộc tính phụ thuộc vào khóa chính Trong trường hợp này, chúng ta tạo ra hai bảng mới: R1 = (ABC) và R2 = (ABD) với tập phụ thuộc hàm F1 = {AB -> C} và F2 = {AB -> D}.
Bước 6: Xác định các thuộc tính không phụ thuộc vào khóa chính và tạo các bảng mới dựa trên chúng Trong trường hợp này, chúng ta không có thuộc tính nào không phụ thuộc vào khoá chính.
Bước 7: Xác định các thuộc tính còn lại và tạo các bảng mới dựa trên chúng Trong trường hợp này, chúng ta không có thuộc tính nào còn lại.
Vậy, sau quá trình chuẩn hóa, chúng ta có hai bảng mới R1 = (ABC) và R2 = (ABD) thay cho bảng ban đầu R = (ABCD).
Cơ Sở Dữ Liệu Phân Tán (Cơ Bản)
Phần 2: Cơ sở dữ liệu phân tán (Cơ bản)
(13) [Cơ sở dữ liệu phân tán] Phân tán cơ sở dữ liệu trong Microsoft SQL Server 2012 - Lược đồ phân mảnh - YouTube
Cho CSDL quản lý vật tư như sau:
1 ChiNhanh(MaCN, ChiNhanh, Diachi, SoDT)
2 Nhanvien(MaNV,Ho,Ten,Diachi, Ngaysinh, Luong, MaCN)
3 Kho(Makho, Tenkho, Diachi, MaCN)
5 Dathang(MasoDDH, Ngay, NhaCC,MaNV,Makho)
6 CTDDH(MasoDDH,MaVT,Soluong,Dongia)
7 PhieuNhap(MaPN,Ngay,MasoDDH,MaNV,Makho)
8 CTPN(MaPN,MaVT,Soluong,Dongia)
9 PhieuXuat(MaPX,Ngay,HotenKH, MaNV,Makho)
10 CTPX(MaPX,MaVT,Soluong,Dongia)
Yêu cầu : Giả sử công ty có 2 chi nhánh: Chi nhánh 1 (CN1), chi nhánh 2 (CN2)
Phân tán CSDL QLVT ra làm 3 mảnh với điều kiện :
-QLVT được đặt trên server 1: Chứa thông tin của các phiếu phát sinh thuộc CN1
-QLVT được đặt trên server 2 : Chứa thông tin của các phiếu phát sinh thuộc CN2
-QLVT được đặt trên server 3 : Chứa thông tin các nhân viên, kho của cả 2 chi nhánh
CREATE TABLE ChiNhanh ( MaCN INT PRIMARY KEY, ChiNhanh VARCHAR(255), Diachi VARCHAR(255), SoDT VARCHAR(20));
FOREIGN KEY (MaCN) REFERENCES ChiNhanh(MaCN) );
FOREIGN KEY (MaCN) REFERENCES ChiNhanh(MaCN)
FOREIGN KEY (MaNV) REFERENCES Nhanvien(MaNV),
FOREIGN KEY (Makho) REFERENCES Kho(Makho)
REFERENCES Dathang(MasoDDH), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT)
FOREIGN KEY (MasoDDH) REFERENCES Dathang(MasoDDH), FOREIGN KEY (MaNV) REFERENCES Nhanvien(MaNV), FOREIGN KEY (Makho) REFERENCES Kho(Makho)
FOREIGN KEY (MaPN) REFERENCES PhieuNhap(MaPN), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT) );
FOREIGN KEY (MaNV) REFERENCES Nhanvien(MaNV), FOREIGN KEY (Makho) REFERENCES Kho(Makho) );
FOREIGN KEY (MaPX) REFERENCES PhieuXuat(MaPX), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT));
Dữ liệu Thêm Vào để giải quyết bài toán:
Chèn dữ liệu vào bảng ChiNhanh:
INSERT INTO ChiNhanh (MaCN, ChiNhanh, Diachi, SoDT) VALUES
Chèn dữ liệu vào bảng Nhanvien
INSERT INTO Nhanvien (MaNV, Ho, Ten, Diachi, Ngaysinh, Luong, MaCN) VALUES
Chèn dữ liệu vào bảng Kho
INSERT INTO Kho (Makho, Tenkho, Diachi, MaCN)
Chèn dữ liệu vào bảng Vattu
INSERT INTO Vattu (MaVT, TenVT, DVT)
Chèn dữ liệu vào bảng Dathang
INSERT INTO Dathang (MasoDDH, Ngay, NhaCC, MaNV, Makho) VALUES
Chèn dữ liệu vào bảng CTDDH
INSERT INTO CTDDH (MasoDDH, MaVT, Soluong, Dongia) VALUES
Chèn dữ liệu vào bảng PhieuNhap
INSERT INTO PhieuNhap (MaPN, Ngay, MasoDDH, MaNV, Makho) VALUES
Chèn dữ liệu vào bảng CTPN
INSERT INTO CTPN (MaPN, MaVT, Soluong, Dongia) VALUES
Chèn dữ liệu vào bảng PhieuXuat
INSERT INTO PhieuXuat (MaPX, Ngay, HotenKH, MaNV, Makho) VALUES
Chèn dữ liệu vào bảng CTPX
INSERT INTO CTPX (MaPX, MaVT, Soluong, Dongia) VALUES
B1: Tạo thư mục để lưu trữ và truyền dữ liệu:
B3: Where theo điều kiện MaCN là 3 tức là toàn bộ dữ liệu liên quan tới CN3 sẽ vào CSDL mà muốn quản lý:
B4: Phương thức Snapshot Agent Security:
B7: Chọn Database để phân tán dữ liệu:
Hiển thị như thế này là thành công
- Sau khi phân tán sẽ tự động sinh 1 cột là xong Phần 3: Cấu Trúc Dữ Liệu NoSQL-MongoDB(Cơ Bản)
Phần này em sẽ thực hành với bộ dữ liệu Student cô hay cho trên lớp.
1 Truy vấn dữ liệu với phương thức find(): a db.collection.find(query, projection)
Tìm tất cả học sinh khối “A”:
Hiển thị tên và điểm toán của tất cả học sinh:
Tìm tên “ Trần Thị Chi “ và hiện tất cả thông tin về học sinh này : b Phân trang với phương thức limit() và skip()
Nếu muốn lấy 3 học sinh đầu tiên trong collection thì ta dùng limit(3):
Nếu ta muốn lấy 2 học sinh sau 5 học sinh đầu tiên thì vừa dùng skip(5) và limit (2): c Sắp xếp dữ liệu với sort()
Sắp xếp điểm khối từ cao xuống thấp theo bảng chữ cái và sắp xếp tăng dần theo số của điểm toán :
2 Truy vấn tất cả dữ liệu trong collection:
3 Truy vấn dữ liệu với điều kiện:
Câu lệnh truy vấn học sinh có điểm sinh 10 và hóa 10 dùng câu lệnh này có thể phục vụ cho việc trao giấy khen lọc ra học sinh đi thi học sinh giỏi.
4 Truy vấn với điều kiện phức tạp:
Tìm tất cả học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn 7, nhưng không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8:
$or được sử dụng để kết hợp điều kiện học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn7.
$and được sử dụng để kết hợp điều kiện không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8.
- Tìm tất cả học sinh thuộc khối "A" hoặc "A1" có điểm Toán lớn hơn 7 và điểm Anh lớn hơn hoặc bằng 8, nhưng không có điểm Hóa nhỏ hơn 8:
Trong truy vấn này, chúng ta sử dụng:
$or để chọn học sinh thuộc khối "A" hoặc "A1".
Các điều kiện về điểm số Toán và Anh.
$not kết hợp với $lt (nhỏ hơn) để loại bỏ các học sinh có điểm Hóa nhỏ hơn 8.
5 Truy vấn chỉ trả về một số trường cụ thể:
Trả về tên và khối học của học sinh tiện cho việc thống kê số lượng học sinh của từng khối:
2 Truy vấn dữ liệu: Các toán tử truy vấn (Query and projection operators)
Các toán tử truy vấn (Query operators) trong MongoDB là các toán tử dùng để xác định các điều kiện trong câu truy vấn Dưới đây là một số toán tử thường được sử dụng:
$gte: Lớn hơn hoặc bằng
$lte: Nhỏ hơn hoặc bằng
Ví dụ tất cả học sinh có điểm toán trên 5 dùng $gt :
$and: Kết hợp nhiều điều kiện với AND logic
$or: Kết hợp nhiều điều kiện với OR logic
$not: Phủ định một điều kiện
$nor: Kết hợp nhiều điều kiện với NOR logic
Dùng $or để truy vấn học sinh thuộc khối A và B:
$exists: Kiểm tra sự tồn tại của một trường trong tài liệu
$type: Kiểm tra kiểu dữ liệu của một trường
Dùng $exists để tìm tất cả học sinh có điểm anh và toán :
$regex: Tìm kiếm theo biểu thức chính quy (regular expression)Dùng toán tử này để tìm tên học sinh bắt đầu bằng “Hoàng”:
$: Trả về một phần của một mảng dựa trên điều kiện $elemMatch: Trả về phần tử của một mảng dựa trên điều kiện
$slice: Trả về một phần của mảng
3 Collection methods (4 nhóm) a Insertion Methods: insertOne: Chèn một tài liệu mới vào bộ sưu tập. insertMany: Chèn nhiều tài liệu mới vào bộ sưu tập.
Thêm lại hai trường vừa xóa bên dưới : b Query Methods: find: Tìm các tài liệu trong bộ sưu tập dựa trên điều kiện. findOne: Tìm một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. Hai lệnh này khá cơ bản em có sử dụng phía trên nhiều nên không ví dụ: c Update Methods: updateOne: Cập nhật một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện.Dùng lên updateOne để cập nhật điểm toán của “Trần Thị Chi” từ 7 lên 10:
Dùng find để tìm tên “Trần Thị Chi với điểm toán ”:
Thành công updateMany: Cập nhật nhiều tài liệu trong bộ sưu tập dựa trên điều kiện. replaceOne: Thay thế một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. d Deletion Methods: deleteOne: Xóa một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. deleteMany: Xóa nhiều tài liệu trong bộ sưu tập dựa trên điều kiện.
Xóa 2 trường có id 3 và 6 /sử dụng deletemany :
4 Quản trị CSDL (User Management Methods -Role Management Methods
Cấu Trúc Dữ Liệu NoSQL-MongoDB(Cơ Bản)
Truy vấn dữ liệu với phương thức find()
a db.collection.find(query, projection)
Tìm tất cả học sinh khối “A”:
Hiển thị tên và điểm toán của tất cả học sinh:
Tìm tên “ Trần Thị Chi “ và hiện tất cả thông tin về học sinh này : b Phân trang với phương thức limit() và skip()
Nếu muốn lấy 3 học sinh đầu tiên trong collection thì ta dùng limit(3):
Nếu ta muốn lấy 2 học sinh sau 5 học sinh đầu tiên thì vừa dùng skip(5) và limit (2): c Sắp xếp dữ liệu với sort()
Sắp xếp điểm khối từ cao xuống thấp theo bảng chữ cái và sắp xếp tăng dần theo số của điểm toán :
Truy vấn dữ liệu với điều kiện
Câu lệnh truy vấn học sinh có điểm sinh 10 và hóa 10 dùng câu lệnh này có thể phục vụ cho việc trao giấy khen lọc ra học sinh đi thi học sinh giỏi.
Truy vấn với điều kiện phức tạp
Tìm tất cả học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn 7, nhưng không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8:
$or được sử dụng để kết hợp điều kiện học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn7.
$and được sử dụng để kết hợp điều kiện không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8.
- Tìm tất cả học sinh thuộc khối "A" hoặc "A1" có điểm Toán lớn hơn 7 và điểm Anh lớn hơn hoặc bằng 8, nhưng không có điểm Hóa nhỏ hơn 8:
Trong truy vấn này, chúng ta sử dụng:
$or để chọn học sinh thuộc khối "A" hoặc "A1".
Các điều kiện về điểm số Toán và Anh.
$not kết hợp với $lt (nhỏ hơn) để loại bỏ các học sinh có điểm Hóa nhỏ hơn 8.
Truy vấn chỉ trả về một số trường cụ thể
Trả về tên và khối học của học sinh tiện cho việc thống kê số lượng học sinh của từng khối:
Truy vấn dữ liệu: Các toán tử truy vấn (Query and projection operators)
Các toán tử truy vấn (Query operators) trong MongoDB là các toán tử dùng để xác định các điều kiện trong câu truy vấn Dưới đây là một số toán tử thường được sử dụng:
$gte: Lớn hơn hoặc bằng
$lte: Nhỏ hơn hoặc bằng
Ví dụ tất cả học sinh có điểm toán trên 5 dùng $gt :
$and: Kết hợp nhiều điều kiện với AND logic
$or: Kết hợp nhiều điều kiện với OR logic
$not: Phủ định một điều kiện
$nor: Kết hợp nhiều điều kiện với NOR logic
Dùng $or để truy vấn học sinh thuộc khối A và B:
$exists: Kiểm tra sự tồn tại của một trường trong tài liệu
$type: Kiểm tra kiểu dữ liệu của một trường
Dùng $exists để tìm tất cả học sinh có điểm anh và toán :
$regex: Tìm kiếm theo biểu thức chính quy (regular expression)Dùng toán tử này để tìm tên học sinh bắt đầu bằng “Hoàng”:
$: Trả về một phần của một mảng dựa trên điều kiện $elemMatch: Trả về phần tử của một mảng dựa trên điều kiện
$slice: Trả về một phần của mảng
Collection methods (4 nhóm)
a Insertion Methods: insertOne: Chèn một tài liệu mới vào bộ sưu tập. insertMany: Chèn nhiều tài liệu mới vào bộ sưu tập.
Thêm lại hai trường vừa xóa bên dưới : b Query Methods: find: Tìm các tài liệu trong bộ sưu tập dựa trên điều kiện. findOne: Tìm một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. Hai lệnh này khá cơ bản em có sử dụng phía trên nhiều nên không ví dụ: c Update Methods: updateOne: Cập nhật một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện.Dùng lên updateOne để cập nhật điểm toán của “Trần Thị Chi” từ 7 lên 10:
Dùng find để tìm tên “Trần Thị Chi với điểm toán ”:
Thành công updateMany: Cập nhật nhiều tài liệu trong bộ sưu tập dựa trên điều kiện. replaceOne: Thay thế một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. d Deletion Methods: deleteOne: Xóa một tài liệu đầu tiên trong bộ sưu tập dựa trên điều kiện. deleteMany: Xóa nhiều tài liệu trong bộ sưu tập dựa trên điều kiện.
Xóa 2 trường có id 3 và 6 /sử dụng deletemany :
Sharding Methods
6 Chỉ mục trường đơn (Single Field Indexes)
7 Chỉ mục hỗn hợp (Compound Indexes)
8 Chỉ mục duy nhất (Unique Indexes)
9 Chỉ mục rời rạc (Sparse Indexes)
10.Time-to-Live Indexes (TTL Indexes)
13.Replication Methods (Các phương thức nhân bản dữ liệu)14.Sharding Methods