Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết

Tài Liệu Access – Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết
TÀI LIỆU MICROSOFT ACCESS.
CHƯƠNG 3: GIỚI THIỆU VỀ KHÓA – MỐI QUAN HỆ LIÊN KẾT.
I. THIẾT LẬP KHÓA CHÍNH:
1. Định nghĩa khóa chính: Khóa chính (Primary key) của 01 table là 01 field hay nhiều field mà giá trị của chúng kết hợp lại là giá trị duy nhất dùng để xác định 01 bản ghi duy nhất trong table đó. Khóa chính (Primary key) dùng để tạo mối kết hợp với một table khác thông qua khóa ngoại (foreign keys) của table đó.
* Một số lưu ý khi thiết lập khóa chính cho table:
�� Khi thiết kế 01 table thông thường bạn phải khai báo một hay nhiều field làm khóa chính của table nhằm mục đích nhận diện mỗi record riêng lẻ lưu trữ trong table. Một khóa chính có thể chỉ có 01 field (khóa chính đơn) hoặc có thể có nhiều field tham gia làm khóa chính.
�� Access không cho phép những giá trị giống hệt nhau hoặc giá trị NULL trong field làm khóa chính. Vì vậy không nên chọn những field có giá trị như vậy.
�� Bạn có thể sử dụng những giá trị trong khóa chính để tìm kiếm những bản ghi, vì vậy những giá trị này không nên để quá dài để chúng ta có thể dễ nhớ hay gõ vào.
�� Kích thước của khóa chính có ảnh hưởng rất lớn đến tốc độ hoạt động của CSDL. Khi tạo khóa chính, bạn nên sử dụng kích thước nhỏ nhất mà nó thích hợp với những giá trị mà bạn cần lưu trữ.
�� Đối với mỗi bảng, chúng ta phải xác định khóa chính cho bảng đó. Nếu chúng ta không xác định khóa chính cho table thì Access tự động phát sinh 1 khóa tên là ID và có kiểu dữ liệu là Number.
�� Không phải mọi trường đều có thể làm khóa chính, mà chỉ có các trường có các kiểu dữ liệu không phải là Memo và OLE Object., Hyper Link.
* Các bước tạo khóa chính:
�� Đặt con trỏ tại field làm khóa chính
�� Nhấn nút (Primary key) trên thanh công cụ.
Nếu bạn không khai báo khóa chính cho table, khi bạn lưu cấu trúc của table, Access sẽ thông báo “There is no Primary key defined” như hình bên dưới. Nếu table của bạn không cần khóa chính thì chọn NO hoặc nhấn nút CANCEL để trở về cửa sổ thiết kế để khai báo khóa chính cho table. Nếu bạn nhấn nút YES, Access sẽ tạo khóa chính cho bạn và tạo ra 01 field mới có tên là ID, có kiểu dữ liệu là Long Integer và được điền tự động (Auto Number).
Page 1 of 5
Tài Liệu Access – Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết
II. THIẾT LẬP KHÓA NGOẠI:
Định nghĩa khóa ngoại: Khóa ngoại (Foreign key) là một field hay nhiều field của table này dùng để chứa giá trị của khóa chính(primary key) thuộc table khác. Khóa ngoại (Foreign key) cùng với khóa chính (primary key) dùng để xác định mối kết hợp giữa các table với nhau.
Khóa ngoại của 01 table là thuộc tính của table đó nhưng nó lại là khóa chính của 01 table khác
Kiểu dữ liệu và kích thước của field tham gia trong khóa ngoại phải có cùng kiểu dữ liệu và có cùng kích thước với field tham gia trong khóa chính, thông thường khóa ngoại và khóa chính được đặt cùng tên.
Nếu giá trị của khóa chính của một table chính chỉ được lặp lại 01 lần duy nhất (No duplicate) trong khóa ngoại của table phụ có nghĩa là bạn muốn tạo mối kết hợp 1-1 giữa 2 table.
Nếu giá trị của khóa chính của một table chính chỉ lặp lại nhiều lần (Duplicate OK) trong khóa ngoại của table phụ có nghĩa là bạn muốn tạo kết hợp 1-n giữa 2 table.
III. TẠO CHỈ MỤC CHO FIELD - THUỘC TÍNH INDEXED:
1. Tạo chỉ mục cho 01 field:
Khi sử dụng một bảng dữ liệu nào đó bạn thường xuyên phải làm công việc lọc dữ liệu, tạo ra các câu truy vấn (query), tạo mối liên kết giữa các bảng với nhau (relations) hoặc thiết kế các báo biểu (reports) theo nhóm. Nếu bạn không tạo ra các chỉ mục thì quá trình xử lý đó sẽ trở nên chậm chạp, làm giảm tốc độ xử lý dữ liệu của bạn.
Thuộc tính INDEXED cho phép bạn sắp xếp dữ liệu của 01 field cách tạo như sau:
B1.Chọn field mà bạn muốn tạo chỉ mục.
B2.Ở dòng thuộc tính Indexed bạn chọn: Yes (Duplicates OK) để sắp xếp và cho phép có nhập các giá trị trùng nhau hoặc Yes(No Duplicates) để sắp xếp và không cho phép nhập các giá trị trùng nhau.
2. Tạo chỉ mục cho nhiều field:
Để thực hiện việc khai báo chỉ mục gồm nhiều field bạn thực hiện các bước
B1.Nhấn nút Indexes trên thanh Toolbars.
B2.Gõ vào tên chỉ mục ở dòng trắng đầu tiên của cột Index Name
B3.Trong cột Field Name nhấn phím mũi tên rồi chọn field đầu tiên
Page 2 of 5
Tài Liệu Access – Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết
B4.Chọn kiểu sắp xếp Ascending hoặc Descending trong cột Sort Order
B5.Lặp lại bước 3 và bước 4 cho field thứ 2, thứ 3 …
Đặt con trỏ vào dòng chứa tên đính mục: Gán giá trị thích hợp trong phần Index Properties (Primary: tạo khóa chính; Unique: giá trị khóa là duy nhất; Ignore Nulls: không cho phép/ cho phép khóa chứa giá trị Null)
Để xóa một chỉ mục bạn chọn dòng có tên chỉ mục cần xóa rồi nhấn phím DETETE.
IV. MỐI QUAN HỆ LIÊN KẾT GIỮA CÁC TABLE:
Mỗi table khi bạn thiết kế sẽ lưu trữ dữ liệu theo những chủ đề khác nhau. Khi bạn cần thông tin từ nhiều table, bạn phải báo cho Microsoft Access biết cách lấy thông tin ra làm sao. Vì vậy, bạn phải khai báo mối quan hệ giữa các table. Sau khi bạn khai báo mối quan hệ giữa chúng xong, bạn có thể dùng Query, Form, Report để hiển thị thông tin mà bạn cần.
Các mối quan hệ thông dụng:
1. Mối quan hệ Một –Nhiều (One – Many):
Table A có quan hệ một – nhiều với table B nếu 01 record của table A có hơn một record trong table B so khớp với trị khóa. Ngược lại, nhiều record trong table B chỉ có duy nhất một record trong table a so khớp giá trị khóa. Ví dụ: table Lớp và table Sinh Viên…
Quan hệ Một – Nhiều sẽ được tạo nếu field quan hệ của table chính là khóa chính (primary key) hoặc phải là khóa dự tuyển (là khóa không chứa giá trị trùng nhau).
Ví dụ: Trong một khoa của một trường học nào đó có nhiều sinh viên, những một sinh viên thuộc một khoa nhất định. Ta có 2 bảng dữ liệu như sau:
Bảng Danhsachkhoa(Makhoa, tenkhoa, sodthoai)
Bảng danhsachsv(Makhoa, Ten, Quequan, lop)
Tenkhoa
Sodthoai
Makhoa
Makhoa
Ten
Queuqan
Lop
CNTT
826767
01
01
Thanh
Huế
K23
TOÁN
878787
02
01
Tùng
Qbình
K24

868785
03
02
Thuỷ
Huế
K25
Page 3 of 5
Tài Liệu Access – Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết
2. Mối quan hệ Một – Một ( One – to – One):
Một record của table A có thể có không nhiều hơn một record trong table B và ngược lại, một record trong table B có thể có không nhiều hơn một record trong table A cùng so khớp giá trị khóa.
Quan hệ Một – Một sẽ được tạo thành nếu field quan hệ của table chính và table quan hệ đều là khóa chính (primary key). Ví dụ: nếu bảng điểm của học viên chứa các môn học ở dạng cột thì mỗi học viên chỉ có 01 bảng điểm và mỗi bảng điểm chỉ thuộc về một học viên duy nhất trong năm học đó.
Ví dụ: Cho 2 bảng dữ liệu
Bảng Danhsach(Masv, ten, Ngaysinh, gioitinh) và bảng Diemthi(Masv, diem)
Ten
Ngaysinh
Gioitinh
Masv
Masv
diem
An
20/10/77
Yes
A001
A001
9
Bình
21/07/80
No
A002
A002
7
Thuỷ
02/12/77
Yes
A003
A003
9
Lan
03/04/80
No
A004
A004
4
Hồng
12/11/77
No
A005
A005
5
Bảng Danhsach và diemthi có mối quan hệ 1-1 dựa trên trường Masv.
3. Mối quan hệ Nhiều – Nhiều (Many –To – Many):
Một record của table A có thể có nhiều hơn một record trong table B cùng so khớp giá trị khóa và ngược lại, một record trong table B cũng có thể có nhiều hơn một record trong table A cùng so khớp giá trị khóa. Ví dụ: quan hệ giữa Hóa Đơn và Sản Phẩm.
Page 4 of 5
Tài Liệu Access – Chương 3: Giới Thiệu Về Khóa – Mối Quan Hệ Liên Kết
Với kỉểu quan hệ này bạn phải tiến hành tách chúng thành quan hệ Một –Nhiều ngay từ khi thiết kế CSDL của bạn. Ví dụ như quan hệ giữa Hóa Đơn và Sản Phẩm được tách thành table Hóa Đơn, Chi Tiết Hóa Đơn và Sản Phẩm.
Ví dụ: Một giáo viên có thể dạy cho nhiều trường và một trường có nhiều giáo viên tham gia giảng dạy. Đây là một mối quan hệ nhiều-nhiều
Bảng Danhsachgv(Magv,ten)
Bảng Danhsachtruong(Matruong, Tentruong)
Tạo ra bảng Phancongday(Magv, matruong)
Ten
Magv
Magv
Matruong
Matruong
tentruong
Thanh
G1
G1
KH
KH
DHKH
Thuý
G2
G1
SP
SP
DHSP
Hùng
G3
G2
YK
YK
DHYK
G2
SP
G3
KH
G3
YK
Bảng Danhsachgv và bảng Phancongday có mối quan hệ 1-∞ dựa trên trường Magv.
Bảng Danhsachtruong và bảng Phancongday có mối quan hệ 1-∞ dựa trên trường Matruong.
Page 5 of 5
 
---------------------------------------------------------------------------------------thanh Navigation (2 mục) ---------------------------------------------------------------------------------------thanh Navigation (2 mục)