Tài liệu Bài giảng Table: 1
BÀI 2: TABLE
1.1 Cửa sổ Design (thiết kế)
1.1.1 Các kiểu dữ liệu và các thuộc tính
1.1.1.1 Text
• Field size : số ký tự tối đa
• Format : Qui định dữ liệu xuất. Ví dụ: “ > ” : đổi tất cả ký tự nhập vào thành chữ hoa; “ < ” :
đổi tất cả ký tự nhập vào thành chữ thường
• Caption : Tên của field được hiện ở cửa sổ Datasheet
• Default value : giá trị mặc định
• Validation Rule : Ràng buộc miền giá trị của giá trị nhập
• Validation Text : Thông báo khi nhập dữ liệu sai so với ràng buộc ở trên.
• Required (Yes / No ) : Bắt buộc nhập dữ liệu
• Allow Zero Length(Yes/No) : được nhập chuỗi rỗng
• Indexes (No, Yes(duplicate OK), Yes(No Duplicate)) : sắp xếp dữ liệu
• Input Mask : Qui định dữ liệu nhập. Bạn có thể phối hợp các ký tự điều khiển sau:
0 : Vị trí dành cho một ký số 0-9 (bắt buộc nhập)
9 : Vị trí dành cho một ký số 0-9 (không bắt buộc)
...
11 trang |
Chia sẻ: hunglv | Lượt xem: 2380 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Bài giảng Table, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1
BÀI 2: TABLE
1.1 Cửa sổ Design (thiết kế)
1.1.1 Các kiểu dữ liệu và các thuộc tính
1.1.1.1 Text
• Field size : số ký tự tối đa
• Format : Qui định dữ liệu xuất. Ví dụ: “ > ” : đổi tất cả ký tự nhập vào thành chữ hoa; “ < ” :
đổi tất cả ký tự nhập vào thành chữ thường
• Caption : Tên của field được hiện ở cửa sổ Datasheet
• Default value : giá trị mặc định
• Validation Rule : Ràng buộc miền giá trị của giá trị nhập
• Validation Text : Thông báo khi nhập dữ liệu sai so với ràng buộc ở trên.
• Required (Yes / No ) : Bắt buộc nhập dữ liệu
• Allow Zero Length(Yes/No) : được nhập chuỗi rỗng
• Indexes (No, Yes(duplicate OK), Yes(No Duplicate)) : sắp xếp dữ liệu
• Input Mask : Qui định dữ liệu nhập. Bạn có thể phối hợp các ký tự điều khiển sau:
0 : Vị trí dành cho một ký số 0-9 (bắt buộc nhập)
9 : Vị trí dành cho một ký số 0-9 (không bắt buộc)
# : Vị trí dành cho một ký số 0-9, dấu +, -, trống
L : Vị trí dành cho một ký tự chữ (bắt buộc)
? : Vị trí dành cho một ký tự chữ hoặc trống (không bắt buộc)
A : Vị trí dành cho một ký tự chữ hoặc số (bắt buộc)
a : Vị trí dành cho một ký tự chữ hoặc số (không bắt buộc)
& :Vị trí dành cho một ký tự bất kỳ (bắt buộc)
C : Vị trí dành cho một ký tự bất kỳ (không bắt buộc)
. ; : , Dấu . ; : ,
< : Các ký tự bên phải ký hiệu biến thành chữ thường
: Các ký tự bên phải ký hiệu biến thành chữ hoa
Ví dụ :
Input Mask Dữ liệu đúng Dữ liệu sai
0000 1234, 3568 123, 123A
0099 12, 123, 1234 1, 12A
Nếu bạn qui định Input Mask là Password thì những ký tự đánh vào sẽ hiển thị dấu * (dạng mật
khẩu)
1.1.1.2 Number
Field size
Giá trị Miền giá trị Số số lẻ Số Byte
Byte 0 đến 255 0 1
Integer - 32768 đến 32767 0 2
Long Integer - 214783648 đến 214783647 0 4
2
Single - 3.4 x 1038 đến 3.4 x 1038 7 4
Double -1.79 x 10308 đến 1.79 x 10308 15 8
Format
Dạng Hiển thị Mô tả
General Number 3456.789
Currency $ 3,456.79 Có ký hiệu tiền tệ ở đầu và có dấu cách hàng ngàn
Fixed 3456.79 Số số lẻ cố định
Standard 3,456.79 Có dấu cách hàng ngàn
Percent 79% Dạng phần trăm
Scientific 3.46E+03
DecimalPlace : Số chữ số thập phân
1.1.1.3 Date/Time
Format
Dạng Hiển thị
General Date 19/6/94 5:34:23 PM
Long Date Sunday, June 19, 1994
Medium Date 19-June- 94
Short Date 19/06/94
Long Time 5:34:23 PM
Medium Time 5:34 PM
Short Time 17:34
1.1.1.4 Yes/No
Format : Yes/No True/False On/Off
bỏ trống : hiển thị -1/0
“Nam”;”Nữ” : hiển thị Nam/ Nữ
Trong các trường hợp trên đều phải chọn Lookup – Display control : Text box
Khi nhập dữ liệu : chỉ nhập 1 hoặc 0.
1.1.1.5 Lookup
Row source Type Table/Query
Table/Query : dữ liệu lấy từ Table hay Query
Value List : dữ liệu tự nhập vào
Field List : Dữ liệu là tên các field
Row Source : tên Table/Query hoặc dữ liệu tự nhập KhachHang
Bound Column : cột được chọn để lấy giá trị 1
Column Count : Số cột hiển thị 1
Limit To List : No có thể nhập giá trị khác nội dung trong Combo Box
3
1.2 Các thao tác xử lý thiết kế Table
1.2.1 Chèn 1 Field vào giữa các Field hiện có
- Nhắp Mouse ở ô xám bên trái dòng ứng với Field bị chèn
- Ấn phím Insert (hoặc chọn Menu Insert, chọn Rows)
- Khai báo tên và kiểu dữ liệu của field
1.2.2 Xóa Field
- Nhắp Mouse ở ô xám bên trái dòng ứng với Field xóa
- Ấn phím Delete (hoặc chọn Menu Edit, Delete Rows).
1.2.3 Thay đổi vị trí Field
- Nhắp Mouse ở ô xám bên trái dòng ứng với Field muốn thay đổi khi Mouse có dạng mũi tên
- Đặt Mouse ở vị trí trên và kéo Mouse
1.3 CHẾ ĐỘ DATASHEET
1.3.1 Vào/ ra chế độ Datasheet View
- Chế độ Datasheet View cho phép xem và cập nhật dữ liệu của Table.
- Vào chế độ Datasheet View :
o Nếu đang ở cửa sổ Database :Đánh dấu tên Table, Nhắp Open
o Nếu đang ở chế độ Design View : Menu View, Datasheet View
- Ra khỏi chế độ Datasheet View :
o Chuyển sang chế độ Design View: Menu View, Design View
o Đóng cửa sổ Table hoặc Menu File, Close
1.3.2 Các thao tác cập nhật dữ liệu
1.3.2.1 Thêm Record
Chỉ được thêm vào cuối Table
1.3.2.2 Sửa chữa Record
1.3.2.3 Xóa Record
Nhắp Mouse tại ô xám bên trái của Record xóa
Ấn Delete
4
1.3.2.4 Tìm kiếm
Bước 1 : Nhắp mouse tại cột chứa giá trị muốn tìm và tại dòng bắt đầu tìm
Bước 2 : Chọn Menu Edit, Find hoặc Ctrl - F sẽ hiệp hộp thoại
Bước 3 : Khai báo giá trị tìm và cách tìm
Find What : Gõ giá trị tìm
Look In : Tên field(tìm trong 1 field) hoặc Tên Table ( tìm trong tất cả các field)
Search : Hướng tìm
Up : tìm lên trên
Down : tìm xuống dưới
All : Tìm trên toàn bộ
Match : Chọn cách so sánh giá trị tìm với giá trị trong ô
Start of Field : Giá trị tìm là phần đầu của ô
Any Part of Field: Giá trị tìm là 1 phần (bất kỳ) trong ô
Whole Field : Giá trị tìm bằng giá trị trong ô
Match Case : Tìm có phân biệt chữ hoa, chữ thường (nếu chọn)
Search Field as Formatted: Tìm theo dạng hiện của cột (nếu chọn)
Bước 4 : Thi hành lệnh
- Nhắp Find First để bắt đầu tìm. Nếu tìm thấy Access sẽ đánh dấu khối dữ liệu tại vị trí tìm
thấy.
- Muốn tìm tiếp nhắp Find Next
- Chọn Close khi chấm dứt tìm
1.3.2.5 Thay thế : Replace
Tuơng tự tìm kiếm nhưng có thêm ô Replace With (nội dung thay thế)
1.3.2.6 Sao chép và di chuyển dữ liệu
- Sao chép :
+ Đánh dấu dữ liệu cần sao chép, chọn Menu Edit, Copy
+ Đưa con trỏ đến vị trí đích, chọn Menu Edit, Paste
- Di chuyển :
5
+ Đánh dấu dữ liệu cần di chuyển, chọn Menu Edit, Cut
+ Đưa con trỏ đến vị trí mới, chọn Menu Edit, Paste
1.3.2.7 Nhập và sửa chữa dữ liệu kiểu OLE Object
Bước 1 : Nhắp ở ô nhập
Bước 2 : Chọn Menu Insert, chọn Object, hiện hộp thoại
Bước 3 : Chọn
• Create New: Tạo mới đối tượng và chọn phần mềm tạo đối tượng, OK.
• Create From File: Chọn đối tượng là 1 file và gõ tên tập tin hoặc nhắp nút lệnh Browse để
chọn file.
Bước 4: Nếu xem/sửa đối tượng: Nhắp đúp tại ô chứa đối tượng.
1.3.3 Các thao tác điều chỉnh trên cửa sổ Datasheet View
1.3.3.1 Chọn Font chữ
Chọn Menu Format, Font và chọn Font chữ
1.3.3.2 Điều chỉnh độ rộng cột
- Chọn cột cần điều chỉnh
- Nếu điều chỉnh nhanh bằng Mouse:
o Đặt mouse tại cạnh phải ô tên cột
o Kéo mouse hoặc nhắp đúp (độ rộng cột vừa đủ)
- Nếu điều chỉnh cột bằng lệnh Menu Format, Column Width sẽ hiện hộp thoại và chọn 1 trong
3 lệnh sau:
o Column Width: độ rộng tùy chọn
o Standard Width: độ rộng mặc nhiên
o Best Fit: độ rộng vừa đủ
- Xong chọn OK
1.3.3.3 Thay đổi vị trí cột
- Nhắp tại tên cột chọn (chọn cột)
- Đặt Mouse ở ô tên cột, kéo Mouse
6
1.3.3.4 Ẩn cột
Nhắp ở cột chọn, chọn Menu Format, Hide Column
Nếu cần hiện lại cột đã ẩn: Nhắp Menu Format, chọn Unhide Column sẽ hiện hộp thoại.
o Nhắp tại hộp chọn ở tên cột cần hiện (có chọn hiện, bỏ chọn ẩn)
o Nhắp Close khi chấm dứt
1.3.3.5 Giữ cố định cột
Bước 1: Giữ cố định cột
Chọn các cột cần cố định,
chọn Menu Format, Freeze Columns.
Bước 2: Nếu cần thôi giữ cố định cột:
Chọn Menu Format, UnFreeze All Columns
1.3.3.6 Sắp xếp Record
- Nếu khóa sắp xếp là 1 cột , có thể thực hiện theo 2 cách sau
C1 : Nhắp tại cột chọn, nhắp nút để sắp xếp tăng dần hoặc để sắp xếp giảm dần.
C2 : Chọn Menu Records, Sort, Sort Ascending (tăng dần)/Sort Descending (giảm dần).
- Nếu khóa sắp gồm nhiều cột
Bước 1: Menu Records, Filter, Advanced Filter/Sort sẽ hiện cửa sổ
• Dòng Field: nhắp chọn cột làm khóa sắp ở bảng phần
trên, rồi kéo thả vào 1 cột tại dòng này (các cột trên dòng
Field được sắp từ trái sang phải theo thứ tự ưu tiên).
• Dòng Sort: chọn Ascending (sắp tăng dần) hoặc
Descending (sắp giảm dần).
• Ví dụ : sắp xếp theo thứ tự tăng dần theo Tên và giảm dần
theo họ
Bước 2: Thi hành lệnh : chọn Menu Filter,
Apply Filter/Sort
Bỏ sắp xếp : bấm vào nút hoặc chọn Filter , Remove Filter/Sort
1.3.3.7 Lọc Record
- Nếu điều kiện lọc theo 1 cột: Nhắp nút phải Mouse tại cột này.
• Nếu lọc theo 1 giá trị của cột : bạn nhớ đắp nút phải Mouse tại giá trị cần lọc , rồi chọn
Filter By Selection hoặc gõ điều kiện lọc tại mục Filter For → Xong gõ Enter.
- Nếu điều kiện lọc theo nhiều cột:
• Bước 1: Khai báo điều kiện lọc : Nhắp Menu Records, Filter, Advanced Filter/Sort.
Các dòng nội dung: Field: Chọn các cột làm điều kiện lọc.
Criteria, or...: Qui định điều kiện lọc
• Bước 2: Thi hành lệnh lọc : bấm vào nút hoặc chọn Menu
Filter, Apply Filter/Sort).
- Nếu cần hiện lại tất cả các mẫu tin thì nhắp nút phải Mouse tại 1 vị trí nào đó
trong bảng rồi chọn Remove Filter/Sort hoặc nhắp tại nút.
7
1.3.4 4. In nhanh dữ liệu
Chọn Menu File, Print sẽ hiện hộp thoại Print
All: In tất cả các mẫu tin
Pages: In theo trang từ trang ở ô From đến
trang ở ô To.
Selected Record (s): Chỉ in các mẫu tin đang
chọn
1.4 SAO CHÉP, XÓA, ĐỔI TÊN
TABLE
Để thực hiện sao chép, xóa, đổi tên Table, cần phải trở
về cửa sổ CSDL.
1.4.1 Sao chép
Bước 1: Đánh dấu tên Table
Bước 2: Chọn Menu Edit, Copy
Bước 3: Chọn Menu Edit, Paste sẽ hiện 1 hộp thoại
Table Name: Khai báo tên Table đích.
Paste Options: Chọn dạng sao chép
Structure Only: Chỉ lấy cấu trú Table
Structure and data: Lấy cấu trúc Table và dữ liệu
Append Data to Existing Table: Thêm dữ liệu vào cuối Table đích (đang tồn tại).
1.4.2 Đổi tên
Nhắp nút phải Mouse tại Table cần đổi tên, chọn Rename.
Gõ tên mới cho Table, xong gõ Enter
1.4.3 Xóa
Chọn Table, ấn Delete (hoặc nhắp nút phải mouse tại Table, chọn Delete).
1.4.4 Copy một Table từ CSDL khác
Chọn Menu File, Get External Data-> Import (Hoặc nhắp nút phải Mouse tại phần trống ở
cửa sổ Database, rồi chọn Import).
Chọn File chứa dữ liệu cần Import, chọn Import thì sẽ hiện hộp thoại Import Object
Chọn table hay đối tượng khác , Ok
8
BÀI TẬP
BÀI 2 : CÁC THAO TÁC ĐỐI VỚI TABLE
1. Thay đổi các thuộc tính của các field như sau
Cở sở dữ liệu HoaDon.MDB
Field Data Type Decription Các thuộc tính
MaNV Số nguyên Mã nhân viên
Ho Text Họ nhân viên Tối đa 20 ký tự, bắt buộc nhập
Ten Text Tên nhân viên Tối đa 8 ký tự
Nu Yes/No Phái của NV Hiển thị Nam/Nữ, mặc định Nữ
NgayNV Date/time Ngày nhận việc <=ngày hiện tại
Diachi Text Địa chỉ Tối đa 40 ký tự
Dienthoai Text Điện thoại
MASP Số nguyên Tên sản phẩm
TenSP Text Tên sản phẩm Tối đa 25 ký tự , bắt buộc nhập
MAHD Text Mã số học sinh 5 ký tự số
DonViTinh Text Đơn vị tính Tối đa 20 ký tự , bắt buộc nhập
DonGia Số thực Đơn gía Có 2 chữ số thập phân
PHAI Yes/No Phái của học sinh Hiện thị Nam/Nữ, mặc định Nữ
NGAYSINH Date/Time Ngày sinh của HS Hiện thị dạng dd/mm/yyyy < ngày hiện tại
MaKH Text Mã khách hàng Tối đa 10 ký tự
TenCty Text Tên công ty Tối đa 30 ký tự
Diachi Text Địa chỉ
Thanhpho Text Thành phố
NgayLapHD Date/Time Ngay lập HD <=Date() , bắt buộc nhập
NgayNhapHang Date/Time Ngày nhận hàng >=Date()
SoLuong Số nguyên Số lượng >=0
Cơ sở dữ liệu KQTHI.MDB
Field Data Type Decription Các thuộc tính
LOP Text Tên lớp 4 ký tự : ký tự đầu là chữ và 3 ký tự sau là số
GIAOVIEN Text Họ tên giáo viên Tối đa 25 ký tự , bắt buộc nhập
MAHS Text Mã số học sinh 5 ký tự số
HO Text Họ của học sinh Tối đa 17 ký tự , bắt buộc nhập
TEN Text Tên của học sinh Tối đa 8 ký tự , bắt buộc nhập
PHAI Yes/No Phái của học sinh Hiện thị Nam/Nữ, mặc định Nữ
NGAYSINH Date/Time Ngày sinh của HS Hiện thị dạng dd/mm/yyyy < ngày hiện tại
TOAN Số thực Điểm môn Toan
LY Số thực Điểm môn Ly
HOA Số thực Điểm môn Hoa
VAN Số thực Điểm môn Van
Có 1 chữ số thập phân, điệu kiện >=0 và <=10
Table SanPham
Mã SP Tên SP Đơn vị tính Đơn giá tonkho Hình
2 Gia vị Thùng 40.00
3 Bánh kem Cái 10.00
4 Bơ Kg 38.00
5 Bánh mì Cái 8.00
6 Nem Kg 23.79
9
7 Táo Kg 5.00
8 Cá hộp Thùng 62.50
9 Sữa Hộp 5.00
10 Rượu Chai 230.50
Table NhanVien
Mã NV Họ Tên Nữ Ngày NV Địa chỉ Điện thoại Hình ảnh
1 Nguyễn Ngọc Nga Nam 3/29/2000 19 Hùng Vương P4 Q5 8356153
2 Hà Vĩnh Phát NỮ 7/12/2000 89 Đồng Khởi Q1 8352074
3 Trần Tuyết Oanh Nam 2/27/2001 26 Lê Quý Đôn P6 Q3 8557798
4 Nguyễn Kim Ngọc Nam 3/30/2001 178 Hậu Giang P6 Q6 8553278
5 Trương Duy Hùng NỮ 9/13/2002 77 Trương Định P6 Q3 8940295
6 Lương Bá Thắng NỮ 9/13/2002 92 Lê Thánh Tôn Q1 8940549
7 Lâm Sơn Hoàng NỮ 11/29/2002 74 Ký Con Q1 8740374
8 Nguyễn Minh Hồng NỮ 1/30/2000 224 Lạc Long Quân 8352578
9 Vương Ngọc Lan Nam 10/12/2000 227 Hai Bà Trưng P6 Q3 8651636
Table KhachHang
Mã KH Tên Cty Địa chỉ Thành phố Điện thoại
KH001 Cơ điện nông nghiệp 03 311 Hai Bà Trưng P8 Q3 TP HCM ( 08) 8970364
KH002 Giày An lạc 761 Trần Hưng Đạo P1 Huế (054) 8456005
KH003 Du lịch An Phú 233 Nguyễn Trãi P2 KHÁNH HOA (058) 8124780
KH004 Giày may 32 811 Trần Hưng Đạo P1 Hà Nội ( 04) 8951320
KH005 Sản xuất hàng Mỹ thuật 7 Trang Tử P14 KHÁNH HOA (058) 8512230
KH006 Xây dựng Bình Minh 155 Tô Hiến Thành Cần Thơ (071) 8547896
KH007 Hóa chất vật liệu điện 282 Trần Hưng Đạo P11 Cần Thơ (071) 8450057
Table HoaDon
Mã HD Mã KH Mã NV Ngày lập HD Ngày nhận hàng LoaiPhieu
00001 KH005 4 1/27/2002 2/6/2002 X
00002 KH004 4 2/7/2002 2/17/2002 X
00003 KH005 4 2/8/2002 2/18/2002 X
00004 KH004 6 3/9/2002 3/19/2002 N
00005 KH003 6 4/16/2002 4/26/2002 N
00006 KH005 4 5/17/2002 5/27/2002 X
00007 KH002 8 6/23/2002 7/3/2002 X
00008 KH003 1 7/2/2002 7/12/2002 N
00009 KH001 8 8/7/2002 8/17/2002 N
00010 KH004 2 10/9/2002 10/19/2002 X
00011 KH003 2 1/16/2003 1/26/2003 X
00012 KH002 4 1/21/2003 1/31/2003 N
00013 KH004 1 2/28/2003 3/10/2003 N
00014 KH001 2 4/3/2003 4/13/2003 X
00015 KH002 1 5/6/2003 5/16/2003 X
00016 KH003 4 7/10/2003 7/20/2003 N
00017 KH002 3 8/17/2003 8/27/2003 N
00018 KH001 5 9/19/2003 9/29/2003 X
00019 KH003 1 11/20/2003 11/30/2003 X
00020 KH001 8 12/25/2003 1/4/2004 N
10
Table ChiTietHoaDon
MaHĐ MaSP SoLuong DonGia MaHĐ MaSP SoLuong DonGia
00001 6 9 23.79 00011 8 3 62.5
00002 2 25 40 00012 8 28 62.5
00002 10 25 230.5 00012 5 15 8
00003 10 35 230.5 00013 6 15 23.79
00004 10 12 230.5 00013 10 45 230.5
00004 6 20 23.79 00014 10 30 230.5
00004 4 30 38 00014 8 15 62.5
00004 8 12 62.5 00015 10 66 230.5
00005 4 6 38 00015 2 40 40
00005 3 6 10 00016 7 42 5
00006 3 8 10 00016 10 20 230.5
00006 5 15 8 00017 8 20 62.5
00006 10 20 230.5 00017 10 10 230.5
00007 4 10 38 00018 10 4 230.5
00007 6 20 23.79 00018 5 18 8
00008 4 30 38 00018 2 15 40
00008 5 6 8 00019 4 12 38
00009 8 12 62.5 00019 7 28 5
00010 4 6 38 00019 5 15 8
00010 6 30 23.79 00020 3 4 10
00011 5 14 8
2. Chèn vào Table NHAN VIEN field Ngay sinh nằm trước field NgayNV và điền dữ
liệu vào như sau :
Tên Ngay sinh
Nga 25/03/80
Phát 12/04/81
Oanh 16/08/78
Ngọc 07/12/81
Hùng 09/11/79
Thắng 18/08/80
Hoàng 15/01/77
Hồng 17/03/82
Lan 19/05/83
3. Chèn vào table HOADON field TienUngTruoc nằm trước field NgayLapHD và điền
dữ liệu vào như sau :
10144 100000
10145 150000
10148 180000
10150 200000
10156 140000
4. Hãy xóa field DienThoai trong table NHAN VIEN.
5. Hãy xóa field DienThoai trong table KHACHHANG.
11
6. Hãy di chuyển field ThanhPho trong table KHACHHANG ra trước fielD DiaChi.
7. Hãy di chuyển field DonGia trong table NHANVIEN ra trước field DonViTinh .
8. Mở table NHANVIEN và định dạng ký tự trong table này như sau : Font : VNI-Helve ,
Fontsize : 12 và Color : xanh dương.
9. Định dạng mặc định ký tự như sau : Font : VNI-Times, Font size : 12, Color : đen.
10. Giấu field DiaChi và NgayNV trong table NHANVIEN
11. Giấu field DiaChi và Thanh Pho trong table KHACHHANG.
12. Cho xuất hiện lại các field vừa giấu
13. Đổi tên field TenCTy trong table KHACHHANG thành CongTy.
14. Đổi tên field DiaChi trong table NHANVIEN thành NhaRieng.
15. Mở table CHI TIET HOA DON và thực hiện các yêu cầu sau :
a. Sắp xếp bảng tăng dân theo So Luong
b. Sắp xếp bảng tăng dân theo MaHD
c. Sắp xếp bảng tăng dân theo MaSP và giảm dần theo So Luong
d. Lọc các record có MaSP=1
e. Lọc các record có MaSP=1 và MaSP=2
f. Lọc các record có So Luong > 15
Lọc các record có MaSP=1 và SoLuong > 1
Các file đính kèm theo tài liệu này:
- CHUONG_2.pdf