1. Tổng quan về Table
Công dụng: Bảng là đối tượng duy nhất trong Access dùng để lưu trữ dữ liệu. Các đối tượng khác như Query (truy vấn), Form (biểu mẫu), Report (báo cáo) chỉ là công cụ để khai thác, hiển thị hoặc in ấn dữ liệu từ các bảng.
Cấu trúc: Bảng được tổ chức thành các hàng (row) và cột (column).
Cột (Field/Trường): Lưu trữ một thuộc tính riêng lẻ của đối tượng. Ví dụ: Trường
HoTen,NgaySinh,DiaChi. Mỗi trường có một tên duy nhất trong bảng và một kiểu dữ liệu xác định.Hàng (Record/Bản ghi): Lưu trữ thông tin về một đối tượng cụ thể. Ví dụ: Một hàng là tất cả thông tin của nhân viên “Nguyễn Văn A”.
Quy tắc đặt tên trong Access:
Tên (của Table, Field, Query, Form,…) có độ dài tối đa 64 ký tự.
Không được trùng lặp trong cùng một phạm vi (ví dụ: hai Field trong một Table không thể trùng tên).
Không được sử dụng các ký tự đặc biệt như dấu chấm (
.), dấu chấm than (!), dấu móc vuông ([ ]), dấu nháy đơn (')…Nên đặt tên không dấu, viết liền hoặc sử dụng dấu gạch dưới (
_) để phân cách. Ví dụ:MaNV,HoTen,NgaySinh.
2. Thiết kế Bảng bằng chế độ Design View
Đây là cách tạo bảng “thủ công”, cho phép người dùng tự do khai báo và định nghĩa chi tiết các trường.
Các bước thực hiện:
B1: Khởi tạo CSDL mới (nếu chưa có).
Mở Access 2016, chọn
Blank desktop database.Đặt tên file cho CSDL tại mục
File Name(ví dụ:QLNhanVien.accdb).Chọn thư mục lưu trữ và nhấn
Create.
B2: Chuyển sang chế độ Design View.
Sau khi tạo CSDL, Access sẽ tự động tạo một bảng mới và mở ở chế độ Datasheet View (hiển thị dạng lưới).
Trên thanh Ribbon, chọn tab
Home-> nhómViews-> chọnDesign View.Một hộp thoại yêu cầu đặt tên cho bảng hiện ra, nhập tên (ví dụ:
NHANVIEN) và nhấnOK.
B3: Khai báo các trường (Field).
Cửa sổ thiết kế bảng hiện ra với 3 cột chính:
Field Name: Nhập tên trường (ví dụ:
MaNV,HoTen).Data Type: Chọn kiểu dữ liệu cho trường (xem bảng chi tiết bên dưới).
Description: (Tùy chọn) Nhập chú thích, mô tả cho trường để dễ quản lý sau này.
B4: Thiết lập khóa chính (Primary Key).
Chọn trường (hoặc nhiều trường bằng cách giữ phím
Ctrl) muốn làm khóa chính. Khóa chính dùng để xác định duy nhất mỗi bản ghi, không được trùng và không được để trống.Trên thanh Ribbon (tab
Design), nhấn vào biểu tượngPrimary Key. Một biểu tượng chìa khóa sẽ xuất hiện bên cạnh trường đã chọn.Ví dụ: Chọn trường
MaNVlàm khóa chính.
B5: Khai báo các thuộc tính cho trường (Field Properties).
Ở nửa dưới của cửa sổ Design View, chọn từng trường để khai báo các thuộc tính chi tiết cho trường đó (xem phần 3).
B6: Lưu Table.
Nhấn
Ctrl + Shoặc nhấn vào biểu tượng đĩa mềm ở góc trên bên trái (Quick Access Toolbar) để lưu lại cấu trúc bảng.
3. Các kiểu dữ liệu (Data Types) trong Access
| Kiểu dữ liệu | Ý nghĩa và Mô tả | Kích thước lưu trữ |
|---|---|---|
| Short Text | Dùng cho văn bản ngắn, như tên, địa chỉ, số điện thoại. | Tối đa 255 ký tự. |
| Long Text | Dùng cho văn bản dài, ghi chú, mô tả. (Thay thế cho kiểu Memo trước đây). | Tối đa 65.535 ký tự. |
| Number | Lưu trữ các giá trị số dùng để tính toán. Có nhiều kích thước (Field Size) khác nhau như Byte, Integer, Long Integer, Single, Double. | Tùy thuộc vào Field Size. |
| Date/Time | Lưu trữ ngày tháng và giờ. | 8 byte. |
| Currency | Lưu trữ giá trị tiền tệ, tránh làm tròn số trong tính toán. | 8 byte. |
| AutoNumber | Tự động tạo một số duy nhất cho mỗi bản ghi mới. Thường được dùng làm khóa chính. | 4 byte (16 byte cho Replication ID). |
| Yes/No | Lưu trữ giá trị Boolean (Đúng/Sai, Có/Không). | 1 bit. |
| OLE Object | Lưu trữ các đối tượng được nhúng hoặc liên kết như hình ảnh, tài liệu Word, bảng Excel. | Lên tới 2 GB. |
| Hyperlink | Lưu trữ đường dẫn đến một trang web, một file, hoặc một địa chỉ email. | Mỗi phần của liên kết có thể chứa tối đa 2048 ký tự. |
| Attachment | Cho phép đính kèm nhiều loại file khác nhau (hình ảnh, tài liệu) vào một bản ghi, tương tự như file đính kèm trong email. | Nén hiệu quả, không giới hạn dung lượng (tùy vào không gian CSDL). |
| Calculated | Lưu trữ kết quả của một biểu thức tính toán dựa trên các trường khác trong cùng một bảng. | Phụ thuộc vào kiểu dữ liệu của kết quả. |
| Lookup Wizard… | Không phải là một kiểu dữ liệu. Nó tạo một trường cho phép chọn giá trị từ một bảng khác hoặc từ một danh sách có sẵn. | Tùy thuộc vào kiểu dữ liệu thực tế của trường. |
Lưu ý đặc biệt cho kiểu Number: Tùy theo nhu cầu mà chọn Field Size phù hợp để tiết kiệm bộ nhớ.
| Field Size | Miền giá trị | Số lẻ tối đa |
|---|---|---|
| Byte | 0 đến 255 | 0 |
| Integer | -32.768 đến 32.767 | 0 |
| Long Integer | -2.147.483.648 đến 2.147.483.647 | 0 |
| Single | -3.4×10³⁸ đến 3.4×10³⁸ | 7 |
| Double | -1.79×10³⁰⁸ đến 1.79×10³⁰⁸ | 15 |
Khi chọn một trường trong Design View, bảng Field Properties phía dưới sẽ cho phép bạn tinh chỉnh hành vi và cách hiển thị của trường đó.
| Thuộc tính | Ý nghĩa và Cách sử dụng |
|---|---|
| Field Size | Với kiểu Text: Xác định số ký tự tối đa có thể nhập. Với kiểu Number: Xác định kiểu con (Byte, Integer,…). |
| Format | Xác định cách hiển thị dữ liệu (ví dụ: định dạng ngày tháng dd/mm/yyyy, định dạng số có dấu phân cách hàng nghìn, tiền tệ…). |
| Input Mask | Tạo một “khuôn” để định dạng dữ liệu khi nhập, giúp việc nhập liệu nhất quán và dễ dàng hơn (ví dụ: nhập số điện thoại (___) ___-____). |
| Caption | Đặt một tên hiển thị thay thế cho tên trường khi xuất hiện trong các cột của bảng, trên Form hoặc Report. Nếu bỏ trống, tên trường sẽ được dùng làm tiêu đề. |
| Default Value | Gán một giá trị mặc định sẽ tự động xuất hiện mỗi khi tạo một bản ghi mới. Ví dụ: Date() cho ngày hiện tại, 0 cho điểm số. |
| Validation Rule | Viết một biểu thức để ràng buộc dữ liệu nhập vào (ví dụ: >0 And <=10 để điểm từ 0 đến 10; >=#01/01/1900# để ngày sinh không thể trước năm 1900). |
| Validation Text | Nhập nội dung thông báo lỗi sẽ hiện ra khi dữ liệu nhập vào không thỏa mãn Validation Rule. |
| Required | Chọn Yes nếu bắt buộc phải nhập dữ liệu cho trường này. Chọn No nếu có thể để trống. |
| Allow Zero Length | Chỉ áp dụng cho kiểu Text/Long Text. Cho phép (Yes) hoặc không cho phép (No) nhập một chuỗi rỗng ("") vào trường. |
| Indexed | Tạo chỉ mục để tăng tốc độ tìm kiếm và sắp xếp trên trường này. Có ba lựa chọn: No (không tạo), Yes (Duplicates OK) (cho phép giá trị trùng), Yes (No Duplicates) (không cho phép giá trị trùng, thường dùng cho khóa chính). |
5. Hướng dẫn sử dụng Input Mask (Mặt nạ nhập liệu)
Input Mask sử dụng các ký tự đặc biệt để định nghĩa khuôn nhập liệu. Bạn có thể tự nhập hoặc sử dụng Input Mask Wizard (biểu tượng có dấu ... khi nhấp vào ô Input Mask).
Bảng các ký tự thường dùng:
| Ký tự | Công dụng |
|---|---|
| 0 | Bắt buộc phải nhập một chữ số (0-9). |
| 9 | Có thể nhập một chữ số (0-9) hoặc để trống. |
| # | Có thể nhập một chữ số, dấu cộng (+), dấu trừ (-) hoặc để trống. |
| L | Bắt buộc phải nhập một chữ cái (A-Z, a-z). |
| ? | Có thể nhập một chữ cái (A-Z, a-z) hoặc để trống. |
| A | Bắt buộc phải nhập một chữ cái hoặc chữ số. |
| a | Có thể nhập một chữ cái hoặc chữ số hoặc để trống. |
| & | Bắt buộc phải nhập một ký tự bất kỳ hoặc dấu cách. |
| C | Có thể nhập một ký tự bất kỳ hoặc dấu cách hoặc để trống. |
| > | Chuyển tất cả các ký tự theo sau thành chữ in hoa. |
| < | Chuyển tất cả các ký tự theo sau thành chữ thường. |
| ! | Cho biết dữ liệu sẽ được nhập từ phải sang trái (thường dùng cho các mask tùy biến). |
| \ | Ký tự theo sau sẽ được hiểu là ký tự văn bản thông thường (ví dụ: \A sẽ hiện chữ A). |
Ví dụ:
- Mã nhân viên dạng “NV001”: Nhập
>L<L000hoặc"NV"000(ký tựNvàVsẽ hiện sẵn). - Số điện thoại:
!\(999") "000\-0000(sẽ hiển thị( ) ___ -____)
6. Khai báo các thuộc tính trong bảng Format
Format là thuộc tính dùng để định dạng cách hiển thị của dữ liệu trong bảng, form, report,… mà không làm thay đổi giá trị thực tế của dữ liệu được lưu trữ trong CSDL. Việc định dạng này giúp dữ liệu trở nên trực quan, dễ đọc và chuyên nghiệp hơn.
Tùy theo từng kiểu dữ liệu (Data Type) mà thuộc tính Format sẽ có các tùy chọn và ký tự định dạng khác nhau.
A. Định dạng cho kiểu dữ liệu Number và Currency
1. Các kiểu định dạng có sẵn (Predefined Formats)
Access cung cấp sẵn một số định dạng phổ biến mà bạn có thể chọn từ danh sách thả xuống:
| Kiểu định dạng | Tác dụng | Ví dụ (với dữ liệu nhập 1234.5) |
|---|---|---|
| General Number | Hiển thị số đúng như dữ liệu nhập vào, không có dấu phân cách hàng nghìn. | 1234.5 |
| Currency | Thêm ký hiệu tiền tệ (theo Regional Settings, VD: ₫, $), dấu phân cách hàng nghìn và hai chữ số thập phân. | ₫1,234.50 |
| Fixed | Hiển thị ít nhất một chữ số, phần thập phân phụ thuộc vào thiết lập Decimal Places. | 1234.5 |
| Standard | Giống Fixed, nhưng có thêm dấu phân cách hàng nghìn. | 1,234.5 |
| Percent | Nhân giá trị với 100 và thêm dấu phần trăm (%). | 12.30% |
| Scientific | Hiển thị số dưới dạng ký hiệu khoa học. | 1.23E+03 |
2. Sử dụng ký tự để tự tạo định dạng (Custom Formats)
Bạn có thể tự tạo định dạng riêng bằng cách sử dụng các ký tự đặc biệt. Một định dạng có thể gồm tối đa 4 phần, cách nhau bởi dấu chấm phẩy (;):
Phần 1: Định dạng cho số dương.
Phần 2: Định dạng cho số âm.
Phần 3: Định dạng cho số 0.
Phần 4: Định dạng cho giá trị
Null.
Bảng các ký tự định dạng:
| Ký tự | Ý nghĩa |
|---|---|
| . (dấu chấm) | Dùng làm dấu phân cách thập phân (phụ thuộc Regional Settings). |
| , (dấu phẩy) | Dùng làm dấu phân cách hàng nghìn. |
| 0 | Placeholder số: Nếu có chữ số tại vị trí này thì hiển thị, nếu không hiển thị số 0. |
| # | Placeholder số: Nếu có chữ số tại vị trí này thì hiển thị, nếu không không hiển thị gì. |
| $ | Hiển thị ký tự đô la (hoặc ký tự tiền tệ khác tùy hệ thống). |
| % | Nhân giá trị với 100 và thêm dấu % vào cuối. |
| E- / E+ | Hiển thị số dưới dạng ký hiệu khoa học. |
| ColorColor | Qui định màu sắc cho chữ, có thể là: [Black], [Blue], [Green], [Cyan], [Red], [Magenta], [Yellow], [White]. |
Ví dụ minh họa:
Định dạng:
#,##0.00Dữ liệu
1234.5sẽ hiển thị:1,234.50
Định dạng:
$#,##0.00;[Red]$-#,##0.00;"Zero";"Null"Phần 1 (số dương):
$#,##0.00→ Dương:$1,234.50Phần 2 (số âm):
[Red]$-#,##0.00→ Âm:$-1,234.50(màu đỏ)Phần 3 (số 0):
"Zero"→ Hiển thị chữZeroPhần 4 (Null):
"Null"→ Hiển thị chữNull
B. Định dạng cho kiểu dữ liệu Date/Time
1. Các kiểu định dạng có sẵn (Predefined Formats)
| Kiểu định dạng | Cách hiển thị | Ví dụ (với ngày 12/09/2002, giờ 07:30:45 PM) |
|---|---|---|
| General Date | Ngày và Giờ (nếu có). | 12/09/2002 07:30:45 PM |
| Long Date | Thứ, Ngày tháng, Năm (dạng chữ). | Friday, 12 September, 2002 |
| Medium Date | Ngày-Tháng-Năm (dạng số). | 12-09-02 |
| Short Date | Ngày/Tháng/Năm (dạng số). | 12/09/02 |
| Long Time | Giờ: Phút: Giây kèm AM/PM. | 07:56:53 AM |
| Medium Time | Giờ: Phút kèm AM/PM. | 07:59 AM |
| Short Time | Giờ: Phút (dạng 24h). | 08:03 |
2. Sử dụng ký tự để tự tạo định dạng (Custom Formats)
Bạn có thể kết hợp các ký tự dưới đây để tạo định dạng ngày tháng tùy ý.
| Ký tự | Ý nghĩa |
|---|---|
| : (colon) | Dấu phân cách giờ, phút, giây. |
| / | Dấu phân cách ngày, tháng, năm. |
| d | Ngày trong tháng (1 – 31), không có số 0 ở đầu. |
| dd | Ngày trong tháng (01 – 31), có số 0 ở đầu. |
| ddd | Tên viết tắt của ngày trong tuần (Sun – Sat). |
| dddd | Tên đầy đủ của ngày trong tuần (Sunday – Saturday). |
| w | Thứ tự ngày trong tuần (1 – 7). |
| ww | Thứ tự tuần trong năm (1 – 54). |
| m | Tháng (1 – 12), không có số 0 ở đầu. |
| mm | Tháng (01 – 12), có số 0 ở đầu. |
| mmm | Tên viết tắt của tháng (Jan – Dec). |
| mmmm | Tên đầy đủ của tháng (January – December). |
| q | Quý trong năm (1 – 4). |
| y | Ngày thứ bao nhiêu trong năm (1 – 366). |
| yy | Năm (2 chữ số cuối). |
| yyyy | Năm (4 chữ số). |
| h | Giờ (0 – 23), không có số 0 ở đầu. |
| n | Phút (0 – 59), không có số 0 ở đầu. |
| nn | Phút (00 – 59), có số 0 ở đầu. |
| s | Giây (0 – 59), không có số 0 ở đầu. |
| ss | Giây (00 – 59), có số 0 ở đầu. |
| AM/PM | Hiển thị AM hoặc PM (12 giờ). |
Ví dụ minh họa:
Định dạng:
dddd, mmm d, yyyyDữ liệu
02/06/1996sẽ hiển thị:Monday, Jun 2, 1996
Định dạng:
"Ngày" dd "tháng" mm "năm" yyyyDữ liệu
02/06/1996sẽ hiển thị:Ngày 02 tháng 06 năm 1996
C. Định dạng cho kiểu dữ liệu Yes/No
Kiểu Yes/No có 3 định dạng có sẵn:
| Định dạng | Hiển thị khi giá trị là Yes | Hiển thị khi giá trị là No |
|---|---|---|
| True/False | True | False |
| Yes/No | Yes | No |
| On/Off | On | Off |
Bạn cũng có thể tự tạo định dạng với 3 phần cách nhau dấu ;:
Phần 1: (Thường để trống)
Phần 2: Chuỗi hiển thị cho giá trị Yes/True/On
Phần 3: Chuỗi hiển thị cho giá trị No/False/Off
Ví dụ: ;"Đúng";"Sai" → Giá trị Yes sẽ hiển thị là “Đúng”, No sẽ hiển thị là “Sai”.
D. Định dạng cho kiểu dữ liệu Text và Memo
Bạn có thể sử dụng các ký hiệu để tạo khuôn hiển thị cho văn bản.
| Ký tự | Ý nghĩa |
|---|---|
| @ | Placeholder ký tự: Yêu cầu phải có một ký tự hoặc khoảng trống tại vị trí này. |
| & | Placeholder ký tự: Không bắt buộc, có thể có ký tự hoặc không. |
| < | Chuyển tất cả các ký tự sang chữ thường. |
| > | Chuyển tất cả các ký tự sang chữ in hoa. |
Ví dụ minh họa:
Định dạng:
>Dữ liệu nhập
"Nguyen Van A"sẽ hiển thị:"NGUYEN VAN A"
Định dạng:
@@@@@Dữ liệu nhập
"ABC"sẽ hiển thị:"ABC "(thêm 2 khoảng trống cho đủ 5 ký tự)
Định dạng:
(&) @@@-@@@@Dữ liệu nhập
"1234567890"sẽ hiển thị:(1) 234-567890
Kết luận
Thuộc tính Format là một công cụ mạnh mẽ để trình bày dữ liệu. Việc nắm vững các ký tự và quy tắc định dạng sẽ giúp bạn tạo ra các bảng, biểu mẫu và báo cáo chuyên nghiệp, dễ nhìn và phù hợp với nhu cầu thực tế. Hãy luôn nhớ rằng Format chỉ thay đổi cách hiển thị, dữ liệu gốc trong bảng vẫn được giữ nguyên.
7. Thiết kế các mối quan hệ (Relationships)
Sau khi tạo các bảng, chúng ta cần thiết lập mối liên kết giữa chúng để đảm bảo tính nhất quán và toàn vẹn dữ liệu.
7.1. Mục đích:
Kết nối thông tin từ nhiều bảng với nhau.
Tránh dư thừa dữ liệu.
Đảm bảo tính toàn vẹn dữ liệu (ví dụ: không thể nhập một nhân viên vào phòng ban không tồn tại).
7.2. Các loại quan hệ:
Quan hệ 1 – 1 (Một – Một): Mỗi bản ghi trong bảng A chỉ tương ứng với duy nhất một bản ghi trong bảng B và ngược lại. (Ít dùng).
Quan hệ 1 – N (Một – Nhiều): Phổ biến nhất. Mỗi bản ghi trong bảng A có thể tương ứng với nhiều bản ghi trong bảng B. Ví dụ: Một phòng ban (
PHONGBAN) có nhiều nhân viên (NHANVIEN). BảngPHONGBANlà bảng “một”, bảngNHANVIENlà bảng “nhiều”.Quan hệ N – N (Nhiều – Nhiều): Một bản ghi trong bảng A có thể tương ứng với nhiều bản ghi trong bảng B và ngược lại. Để thực hiện quan hệ này trong Access, cần có một bảng trung gian. Ví dụ: Một hóa đơn có nhiều sản phẩm, và một sản phẩm có thể nằm trong nhiều hóa đơn. Bảng trung gian
CHITIET_HOADONsẽ chứa các khóa chính của cả hai bảng kia.
7.3. Các bước tạo quan hệ:
B1: Trên thanh Ribbon, chọn tab Database Tools -> nhóm Relationships -> nhấn Relationships.
B2: Hộp thoại Show Table xuất hiện. Chọn các bảng cần tạo quan hệ (giữ phím Ctrl để chọn nhiều bảng) và nhấn Add. Sau đó nhấn Close.
B3: Trong cửa sổ Relationships, thực hiện kéo thả:
Tìm trường khóa chính (bảng “một”) – Ví dụ:
MaPhongtrong bảngPHONGBAN.Kéo nó và thả lên trường khóa ngoại tương ứng (bảng “nhiều”) – Ví dụ:
MaPhongtrong bảngNHANVIEN.
B4: Hộp thoại Edit Relationships hiện ra. Tại đây, bạn có thể thiết lập các tùy chọn quan trọng:
Enforce Referential Integrity (Thực thi toàn vẹn dữ liệu): Nên chọn. Nó đảm bảo không thể có bản ghi ở bảng “nhiều” mà không tồn tại bản ghi cha tương ứng ở bảng “một”. Ví dụ: không thể nhập
MaPhong = "P005"cho nhân viên nếu trong bảngPHONGBANkhông có phòng “P005”.Cascade Update Related Fields (Cập nhật dữ liệu liên quan): Nếu chọn, khi bạn thay đổi giá trị khóa chính ở bảng “một” (ví dụ: sửa
MaPhongtừ"P01"thành"PB01"), Access sẽ tự động cập nhật giá trị đó ở tất cả các bản ghi liên quan ở bảng “nhiều”.Cascade Delete Related Records (Xóa dữ liệu liên quan): Nếu chọn, khi bạn xóa một bản ghi ở bảng “một” (ví dụ: xóa phòng ban
"P01"), Access sẽ tự động xóa tất cả các bản ghi liên quan ở bảng “nhiều” (ví dụ: xóa tất cả nhân viên thuộc phòng"P01"). Cần thận trọng với tùy chọn này.
B5: Nhấn Create để tạo liên kết. Một đường nối sẽ xuất hiện giữa hai bảng, với ký hiệu 1 và ∞ (vô cực) thể hiện quan hệ một-nhiều.
7.4. Sửa/Xóa quan hệ:
Sửa: Nhấp đúp chuột vào đường nối quan hệ.
Xóa: Nhấp chuột phải vào đường nối quan hệ, chọn Delete.
Bài tập Tạo bảng
Bài tập 1
Câu 1: Tạo CSDL và các bảng
Yêu cầu: Tạo CSDL QLNV.accdb (Quản lý nhân viên) lưu trên ổ đĩa D: với tên thư mục là Họ tên học viên. Trong CSDL này, tạo các bảng sau:
a. Bảng NHANVIEN
| Field name | Field type | Field size | Description |
|---|---|---|---|
| Maso | Text | 5 | Mã số nhân viên |
| Hodem | Text | 20 | Họ đệm nhân viên |
| Ten | Text | 10 | Tên nhân viên |
| Nsinh | Date/time | Ngày sinh nhân viên | |
| Nu | Yes/No | Giới tính nhân viên | |
| Que | Text | 30 | Quê nhân viên |
| Heso | Number | Double | Hệ số lương |
| LCB | Number | Double | Lương cơ bản |
| Phucap | Number | Double | Lương phụ cấp |
| Tongcong | Number | Double | Tổng lương |
| Madv | Text | 5 | Mã đơn vị |
| Macv | Text | 5 | Mã chức vụ |
| Mavh | Text | 5 | Mã văn hóa |
b. Bảng DMDV (Danh mục đơn vị)
| Field name | Field type | Field size | Description |
|---|---|---|---|
| Madv | Text | 5 | Mã đơn vị |
| Tendonvi | Text | 30 | Tên đơn vị |
Dữ liệu mẫu cho bảng DMDV:
| MADV | TENDV |
|---|---|
| 01 | Ban giám đốc |
| 02 | Phòng hành chánh |
| 03 | Phòng tài vụ |
| 04 | Phòng kinh doanh |
| 05 | Phân xưởng 1 |
| 06 | Phân xưởng 2 |
c. Bảng DMCV (Danh mục chức vụ)
| Field name | Field type | Field size | Description |
|---|---|---|---|
| Macv | Text | 5 | Mã chức vụ |
| Chucvu | Text | 30 | Chức vụ |
Dữ liệu mẫu cho bảng DMCV:
| MACV | CHUCVU |
|---|---|
| 01 | Giám Đốc |
| 02 | Phó Giám Đốc |
| 03 | Trưởng Phòng |
| 04 | Phó Phòng |
| 05 | Kế Toán Trưởng |
| 06 | Kế Toán |
| 07 | Thủ Quỹ |
| 08 | Quản Đốc |
| 09 | Nhân Viên |
| 10 | Lái Xe |
| 11 | Bảo Vệ |
d. Bảng DMVH (Danh mục văn hóa)
| Field name | Field type | Field size | Description |
|---|---|---|---|
| Mavh | Text | 5 | Mã văn hóa |
| Tdo | Text | 30 | Trình độ |
Dữ liệu mẫu cho bảng DMVH:
| MAVH | TDO |
|---|---|
| 01 | Tiến sĩ |
| 02 | Thạc sĩ |
| 03 | Kỹ sư |
| 04 | Cử nhân |
| 05 | Trung cấp |
| 06 | Chưa qua đào tạo |
Câu 2: Sao chép Table
Yêu cầu: Sao chép Table NHANVIEN thành Table mới là DANHSACHNV.
Hướng dẫn thực hiện:
B1: Kích chuột phải vào Table
NHANVIEN→ Chọn lệnh CopyB2: Kích chuột phải vào cửa sổ Table → Chọn lệnh Paste
B3: Xuất hiện cửa sổ, nhập tên mới cho Table là: DANHSACHNV
B4: Chọn mục: Structure and Data (sao chép cấu trúc và dữ liệu)
B5: Chọn OK
Câu 3: Thao tác sắp xếp dữ liệu
Yêu cầu: Mở Table DANHSACHNV ở chế độ Datasheet View và thực hiện các sắp xếp sau:
| STT | Yêu cầu | Cách thực hiện |
|---|---|---|
| 1 | Sắp xếp cột Ten tăng dần (A→Z) | Chọn cột Ten → Home → Sort & Filter → Sort Ascending |
| 2 | Sắp xếp cột Nsinh giảm dần (mới nhất lên đầu) | Chọn cột Nsinh → Home → Sort & Filter → Sort Descending |
| 3 | Sắp xếp cột Hodem giảm dần (Z→A) | Chọn cột Hodem → Home → Sort & Filter → Sort Descending |
Lưu ý: Sau mỗi lần sắp xếp, quan sát sự thay đổi thứ tự các dòng dữ liệu.
Câu 4: Tìm kiếm và thay thế dữ liệu
Yêu cầu: Thực hành các thao tác tìm kiếm trên Table NHANVIEN:
| STT | Yêu cầu | Giá trị tìm | Phạm vi tìm |
|---|---|---|---|
| 1 | Tìm nhân viên có mã số “A05” | A05 | Cột Maso |
| 2 | Tìm các nhân viên quê ở “BẠC LIÊU” | BẠC LIÊU | Cột Que |
| 3 | Tìm các nhân viên có tên bắt đầu bằng chữ “T” | T* | Cột Ten |
| 4 | Tìm các nhân viên sinh năm 1968 | /*/1968 | Cột Nsinh |
Hướng dẫn thực hiện:
B1: Mở Table ở chế độ Datasheet View
B2: Chọn cột muốn tìm kiếm
B3: Nhấn Ctrl + F hoặc Home → Find → Find
B4: Trong hộp thoại Find and Replace:
Find What: Nhập giá trị cần tìm
Match: Chọn kiểu so sánh phù hợp (Any Part of Field, Whole Field, Start of Field)
Look In: Chọn cột hiện tại hoặc toàn bảng
B5: Nhấn Find Next để tìm tuần tự
Câu 5: Thiết lập khóa chính và liên kết
a. Thiết lập khóa chính (Primary Key)
Yêu cầu: Thiết lập khóa chính cho các bảng:
| Bảng | Trường khóa chính | Ghi chú |
|---|---|---|
| NHANVIEN | Maso | Mỗi nhân viên có mã duy nhất |
| DMDV | Madv | Mỗi đơn vị có mã duy nhất |
| DMCV | Macv | Mỗi chức vụ có mã duy nhất |
| DMVH | Mavh | Mỗi trình độ có mã duy nhất |
Hướng dẫn thực hiện:
B1: Mở bảng ở chế độ Design View
B2: Chọn trường làm khóa chính
B3: Trên thanh Ribbon (tab Design), nhấn Primary Key
B4: Lưu bảng
b. Thiết lập liên kết giữa các bảng
Yêu cầu: Tạo các mối quan hệ sau:
| Quan hệ | Bảng 1 (một) | Bảng 2 (nhiều) | Trường liên kết |
|---|---|---|---|
| 1-N | DMDV (Madv) | NHANVIEN (Madv) | Madv |
| 1-N | DMCV (Macv) | NHANVIEN (Macv) | Macv |
| 1-N | DMVH (Mavh) | NHANVIEN (Mavh) | Mavh |
Hướng dẫn thực hiện:
Mở cửa sổ Relationships:
Chọn tab Database Tools → Nhóm Relationships → Relationships
Thêm các bảng:
Trong hộp thoại Show Table, chọn tất cả các bảng: NHANVIEN, DMDV, DMCV, DMVH
Nhấn Add → Close
Tạo từng quan hệ:
Quan hệ DMDV – NHANVIEN:
Kéo trường Madv từ bảng DMDV thả lên trường Madv của bảng NHANVIEN
Trong hộp thoại Edit Relationships, đánh dấu chọn Enforce Referential Integrity
Chọn Create
Quan hệ DMCV – NHANVIEN:
Kéo trường Macv từ bảng DMCV thả lên trường Macv của bảng NHANVIEN
Đánh dấu chọn Enforce Referential Integrity
Chọn Create
Quan hệ DMVH – NHANVIEN:
Kéo trường Mavh từ bảng DMVH thả lên trường Mavh của bảng NHANVIEN
Đánh dấu chọn Enforce Referential Integrity
Chọn Create
Quan sát kết quả:
Các đường nối xuất hiện giữa các bảng
Ký hiệu 1 và ∞ thể hiện quan hệ một-nhiều
Lưu và đóng:
Nhấn Ctrl + S để lưu bố trí Relationships
Đóng cửa sổ Relationships
Bài tập 2
Câu 1: Tạo CSDL mới
Yêu cầu: Tạo CSDL QLNX.accdb (Quản lý Nhập Xuất) lưu trên ổ đĩa D:
Hướng dẫn :Câu 1: Tạo CSDL mới
Các bước thực hiện:
| Bước | Thao tác | Hình ảnh minh họa | Giải thích |
|---|---|---|---|
| 1 | Mở Microsoft Access 2016 | [Access 2016] | |
| 2 | Chọn Blank desktop database | [Blank database] | Tạo CSDL trống |
| 3 | Tại mục File Name, nhập: QLNX.accdb | [File Name: QLNX.accdb] | Đặt tên cho CSDL |
| 4 | Nhấn nút Browse (biểu tượng thư mục) | [📁] | Chọn nơi lưu trữ |
| 5 | Chọn ổ đĩa D: và tạo thư mục theo tên mình | D:\TEN_HOC_VIEN\ | Lưu theo yêu cầu |
| 6 | Nhấn Create | [Create] | Tạo CSDL |
Kết quả: CSDL
QLNX.accdbđược tạo và mở ra với một bảng trống mặc định Table1.
Câu 2: Tạo các bảng với cấu trúc chi tiết
a. Bảng DMKHO (Danh mục kho)
| Tên trường | Kiểu dữ liệu | Thuộc tính |
|---|---|---|
| [MAKHO] | Text | Dài 2, format: chữ hoa, Input mask: 2 chữ, bắt buộc nhập, Primary Key |
| TENKHO | Text | Dài 20, bắt buộc nhập |
| DCKHO | Text | Dài 40 |
Yêu cầu nhập liệu: Nhập ít nhất 6 kho hàng.
Hướng dẫn : Câu 2a: Tạo bảng DMKHO (Danh mục kho)
Bước 1: Tạo bảng mới và chuyển sang Design View
| Bước | Thao tác | Giải thích |
|---|---|---|
| 1.1 | Đóng bảng Table1 mặc định (không lưu) | |
| 1.2 | Chọn tab Create → nhấn Table Design | Mở cửa sổ thiết kế bảng |
Bước 2: Khai báo các trường
| Field Name | Data Type | Description (tùy chọn) |
|---|---|---|
| MAKHO | Text | Mã kho |
| TENKHO | Text | Tên kho |
| DCKHO | Text | Địa chỉ kho |
Thao tác chi tiết:
Nhập lần lượt tên trường vào cột Field Name
Chọn kiểu dữ liệu phù hợp trong cột Data Type
Bước 3: Thiết lập thuộc tính cho từng trường
Trường MAKHO:
Chọn trường MAKHO ở phần trên
Phần Field Properties phía dưới, khai báo:
| Thuộc tính | Giá trị | Giải thích |
|---|---|---|
| Field Size | 2 | Độ dài tối đa 2 ký tự |
| Format | > | Chuyển sang chữ hoa khi hiển thị |
| Input Mask | >LL | 2 chữ cái, tự động in hoa |
| Required | Yes | Bắt buộc nhập |
| Allow Zero Length | No | Không cho phép chuỗi rỗng |
Trường TENKHO:
| Thuộc tính | Giá trị | Giải thích |
|---|---|---|
| Field Size | 20 | Độ dài tối đa 20 ký tự |
| Required | Yes | Bắt buộc nhập |
Trường DCKHO:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 40 |
Bước 4: Thiết lập khóa chính
Chọn trường MAKHO
Trên tab Design, nhấn Primary Key
Xuất hiện biểu tượng chìa khóa bên cạnh trường MAKHO
Bước 5: Lưu bảng
Nhấn Ctrl + S
Nhập tên bảng:
DMKHONhấn OK
Bước 6: Nhập dữ liệu mẫu
Chuyển sang Datasheet View (View → Datasheet View)
Nhập dữ liệu mẫu, ít nhất 6 kho:
| MAKHO | TENKHO | DCKHO |
|---|---|---|
| LB | Long Bình | 123 Đường A |
| TD | Thủ Đức | 456 Đường B |
| CH | Chánh Hưng | 789 Đường C |
| PX | Phú Xuân | 321 Đường D |
| … | … | … |
b. Bảng DMVT (Danh mục vật tư)
| Tên trường | Kiểu dữ liệu | Thuộc tính |
|---|---|---|
| [MAVT] | Text | Dài 4, format: chữ hoa, Input mask: 2 chữ + 2 số, bắt buộc nhập, Primary Key |
| TENVT | Text | Dài 30, bắt buộc nhập |
| QCACH | Text | Dài 15 |
| DVTINH | Text | Dài 10 |
Yêu cầu nhập liệu: Nhập ít nhất 6 loại vật tư.
Hướng dẫn :Câu 2b: Tạo bảng DMVT (Danh mục vật tư)
Bước 1: Tạo bảng mới trong Design View
Tab Create → Table Design
Bước 2: Khai báo các trường
| Field Name | Data Type |
|---|---|
| MAVT | Text |
| TENVT | Text |
| QCACH | Text |
| DVTINH | Text |
Bước 3: Thiết lập thuộc tính
Trường MAVT:
| Thuộc tính | Giá trị | Giải thích |
|---|---|---|
| Field Size | 4 | Độ dài 4 ký tự |
| Format | > | Chữ hoa |
| Input Mask | >LL00 | 2 chữ + 2 số, tự động in hoa |
| Required | Yes | Bắt buộc nhập |
Trường TENVT:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 30 |
| Required | Yes |
Trường QCACH:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 15 |
Trường DVTINH:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 10 |
Bước 4: Thiết lập khóa chính
Chọn trường MAVT → Primary Key
Bước 5: Lưu bảng
Ctrl + S → Tên:
DMVT→ OK
Bước 6: Nhập dữ liệu mẫu (ít nhất 6 vật tư)
| MAVT | TENVT | QCACH | DVTINH |
|---|---|---|---|
| VE03 | Ván ép 3 ly | Loại 1 | Tấm |
| VE05 | Ván ép 5 ly | Loại 2 | Tấm |
| TS03 | Tôn sóng 3 ly | Mạ màu | Tấm |
| TS05 | Tôn sóng 5 ly | Mạ màu | Tấm |
| … | … | … | … |
c. Bảng NHANVIEN (Nhân viên). Đây là dữ liệu cho Bảng NHANVIEN
| Tên trường | Kiểu dữ liệu | Thuộc tính chi tiết |
|---|---|---|
| [MANV] | Text | Dài 4, format chữ hoa, Input mask: 2 chữ + 2 số, bắt buộc nhập, Primary Key |
| HOTENNV | Text | Dài 30, bắt buộc nhập |
| NGSINH | Date/Time | Format dd/mm/yyyy |
| NU | Yes/No | Yes: Nữ, No: Nam |
| DCHI | Text | Dài 50 |
| BCHE | Yes/No | Biên chế hay không |
| NGAYVL | Date/Time | Format dd/mm/yyyy, Input mask nhập không cần dấu / |
| LGCB | Number | Field size: Integer, Format: Standard, Decimal places: 0 |
| GHICHU | Memo | Ghi chú |
| HINH | OLE Object | Lưu ảnh nhân viên |
Hướng dẫn Câu 2c: Tạo bảng NHANVIEN
Bước 1: Tạo bảng mới trong Design View
Bước 2: Khai báo và thiết lập thuộc tính từng trường
| Field Name | Data Type | Thuộc tính chi tiết |
|---|---|---|
| MANV | Text | Field Size: 4, Format: >, Input Mask: >LL00, Required: Yes |
| HOTENNV | Text | Field Size: 30, Required: Yes |
| NGSINH | Date/Time | Format: dd/mm/yyyy |
| NU | Yes/No | Format: Yes/No |
| DCHI | Text | Field Size: 50 |
| BCHE | Yes/No | |
| NGAYVL | Date/Time | Format: dd/mm/yyyy, Input Mask: 00/00/0000 |
| LGCB | Number | Field Size: Long Integer, Format: Standard, Decimal Places: 0 |
| GHICHU | Long Text | (Memo) |
| HINH | OLE Object |
Bước 3: Thiết lập khóa chính
Chọn trường MANV → Primary Key
Bước 4: Lưu bảng
Ctrl + S → Tên:
NHANVIEN→ OK
Bước 5: Nhập dữ liệu theo mẫu (xem bảng trong đề bài)
d. Bảng NHAPXUAT (Nhập xuất). Đây là dữ liệu cho Bảng NHAPXUAT
| Tên trường | Kiểu dữ liệu | Thuộc tính chi tiết |
|---|---|---|
| STT | AutoNumber | Đánh số tự động |
| NGAY | Date/Time | Format dd/mm/yyyy, Input mask, bắt buộc nhập, Default = Date() |
| LOAI | Text | Dài 1, format chữ hoa, bắt buộc nhập (N: Nhập, X: Xuất) |
| PHIEU | Text | Dài 4, format chữ hoa, bắt buộc nhập |
| KHACH | Text | Dài 30, bắt buộc nhập |
| LYDO | Text | Dài 50 |
| MAKHO | Text | Dài 2, format chữ hoa, bắt buộc nhập, Lookup từ DMKHO |
| MAVT | Text | Dài 4, format chữ hoa, bắt buộc nhập, Lookup từ DMVT |
| SOLG | Number | Integer, Format Standard, 0 số lẻ, bắt buộc nhập, >0 (có báo lỗi) |
| DONGIA | Number | Double, Format Standard, 0 số lẻ, bắt buộc nhập, >0 (có báo lỗi) |
| MANV | Text | Dài 4, format chữ hoa, bắt buộc nhập, Lookup từ bảng NHANVIEN |
Hướng dẫn Câu 2d: Tạo bảng NHAPXUAT
Bước 1: Tạo bảng mới trong Design View
Bước 2: Khai báo các trường (theo thứ tự)
| Field Name | Data Type |
|---|---|
| STT | AutoNumber |
| NGAY | Date/Time |
| LOAI | Text |
| PHIEU | Text |
| KHACH | Text |
| LYDO | Text |
| MAKHO | Text |
| MAVT | Text |
| SOLG | Number |
| DONGIA | Number |
| MANV | Text |
Bước 3: Thiết lập thuộc tính chi tiết
Trường STT:
Data Type: AutoNumber
New Values: Increment
Trường NGAY:
| Thuộc tính | Giá trị |
|---|---|
| Format | dd/mm/yyyy |
| Input Mask | 00/00/0000 |
| Required | Yes |
| Default Value | Date() |
Trường LOAI:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 1 |
| Format | > |
| Required | Yes |
Trường PHIEU:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 4 |
| Format | > |
| Required | Yes |
Trường KHACH:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 30 |
| Required | Yes |
Trường LYDO:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 50 |
Trường MAKHO:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 2 |
| Format | > |
| Required | Yes |
Đặc biệt – Lookup Wizard cho MAKHO:
Tại dòng Data Type của trường MAKHO, chọn Lookup Wizard
Chọn “I want the lookup column to look up the values in a table or query” → Next
Chọn bảng DMKHO → Next
Đưa các trường MAKHO, TENKHO vào Selected Fields → Next
Điều chỉnh độ rộng cột nếu cần → Next
Chọn MAKHO làm trường lưu trữ → Next
Nhấn Finish
Trường MAVT:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 4 |
| Format | > |
| Required | Yes |
Tạo Lookup Wizard cho MAVT (tương tự MAKHO, chọn bảng DMVT)
Trường SOLG:
| Thuộc tính | Giá trị |
|---|---|
| Data Type | Number |
| Field Size | Integer |
| Format | Standard |
| Decimal Places | 0 |
| Required | Yes |
| Validation Rule | >0 |
| Validation Text | “Số lượng phải lớn hơn 0” |
Trường DONGIA:
| Thuộc tính | Giá trị |
|---|---|
| Data Type | Number |
| Field Size | Double |
| Format | Standard |
| Decimal Places | 0 |
| Required | Yes |
| Validation Rule | >0 |
| Validation Text | “Đơn giá phải lớn hơn 0” |
Trường MANV:
| Thuộc tính | Giá trị |
|---|---|
| Field Size | 4 |
| Format | > |
| Required | Yes |
Tạo Lookup Wizard cho MANV (tương tự, chọn bảng NHANVIEN, hiển thị MANV và HOTENNV)
Bước 4: Thiết lập khóa chính
Chọn trường STT → Primary Key
Bước 5: Lưu bảng
Ctrl + S → Tên:
NHAPXUAT→ OK
Bước 6: Nhập dữ liệu mẫu
Chuyển sang Datasheet View
Nhập dữ liệu theo bảng đã cho (chú ý nhập đúng mã kho, mã vật tư, mã NV đã có)
Câu 3: Thao tác trên Design View
Yêu cầu: Mở bảng NHAPXUAT ở chế độ Design View và thực hiện:
Chèn field:
Chèn thêm 1 field tên
GHICHU2(Text, dài 50) vào sau fieldLYDOQuan sát sự thay đổi
Xóa field:
Xóa field
GHICHU2vừa tạo
Di chuyển field:
Di chuyển field
MANVlên sau fieldNGAYSau đó di chuyển trở lại vị trí ban đầu
Chuyển đổi chế độ xem:
Chuyển từ Design View sang Datasheet View và ngược lại nhiều lần để làm quen
Câu 4: Thao tác trên bảng NHANVIEN
Yêu cầu: Thực hành thêm, chèn, sửa, xóa field trên bảng NHANVIEN:
Thêm một field tạm thời
Chèn một field vào giữa
Sửa tên một field
Xóa field vừa thêm
Lưu ý quan trọng: Sau khi thực hành, phải trả lại tên, thứ tự và kiểu dữ liệu của các field giống như ban đầu.
Câu 5: Thiết lập liên kết
Yêu cầu: Thiết lập các mối quan hệ giữa các bảng trong CSDL QLNX:
| Quan hệ | Bảng 1 (một) | Bảng 2 (nhiều) | Trường liên kết |
|---|---|---|---|
| 1-N | DMKHO (MAKHO) | NHAPXUAT (MAKHO) | MAKHO |
| 1-N | DMVT (MAVT) | NHAPXUAT (MAVT) | MAVT |
| 1-N | NHANVIEN (MANV) | NHAPXUAT (MANV) | MANV |
Yêu cầu bổ sung: Đánh dấu chọn Enforce Referential Integrity cho tất cả các quan hệ.
Câu 6: Nhập liệu
Yêu cầu: Chuyển sang chế độ Datasheet View và nhập đầy đủ dữ liệu cho các bảng theo dữ liệu mẫu đã cho.
Câu 7: Bổ sung dữ liệu
Yêu cầu: Bổ sung thêm 3-5 nhân viên mới với các độ tuổi khác nhau (trẻ, trung niên, lớn tuổi) vào bảng NHANVIEN.
Câu 8: Thao tác trên dữ liệu
Thực hiện các yêu cầu sau trên CSDL QLNX.mdb:
| STT | Yêu cầu | Hướng dẫn |
|---|---|---|
| 1 | Tìm phiếu mang số X013 | Mở bảng NHAPXUAT, dùng Find (Ctrl+F) tìm “X013” ở cột PHIEU |
| 2 | Tìm người khách mang tên Huyền | Tìm trong cột KHACH với từ khóa “Huyền” |
| 3 | Sắp xếp bảng NHAPXUAT theo Mã kho và Mã vật tư | Dùng Sort Ascending trên cột MAKHO, sau đó MAVT |
| 4 | Thực hành Freeze cột | Chọn cột → Home → Freeze Fields |
| 5 | Thực hành Hide cột | Chọn cột → chuột phải → Hide Fields |
| 6 | Xem trước khi in | File → Print → Print Preview |
| 7 | Sao chép Table | Copy → Paste → đặt tên mới |
| 8 | Đổi tên Table | Chuột phải → Rename |
| 9 | Xóa Table | Chuột phải → Delete |
Lưu ý quan trọng: Sau khi thực hành các thao tác copy, đổi tên, xóa, phải trả lại tên và số lượng Table như ban đầu.