James Perry, Richard Newmark
Chương 2
Cơ sở dữ liệu và hệ thống kế toán
Các thuộc tính khóa chính và khóa ngoại
Bảng ở Hình 2.4 có 9 cột hay 9 thuộc tính: CustID (mã số khách hàng), CustFirstName (tên khách hàng), CustLastName (họ), CustAddress (địa chỉ), CustCity (thành phố), CustState (bang), CustZip (mã zip), CustPhone (điện thoại), và CustFax (số fax). Tuy nhiên, chẳng có lý do lý thuyết nào để liệt kê cột theo thứ tự đó. Ta đã chọn cột khóa chính, CustID, là cột đầu tiên trong bảng. Mặc dù Access không yêu cầu cột khóa chính phải đầu tiên, hầu hết thiết kế viên cơ sở dữ liệu tuân theo qui ước này.
Trong mỗi cột bạn có thể thấy các giá trị thuộc tính cho từng dòng. Chẳng hạn, dòng mã số CustID 30121 có giá trị CustFirstName là “Marcel” và có giá trị CustLastName là “Amstalden”. Giá trị CustID sẽ duy nhất cho mỗi dòng. Điều này thỏa qui tắc là mỗi dòng phải duy nhất. Một dòng sẽ duy nhất nếu dòng đó có một cột bất kỳ là duy nhất.
Mọi quan hệ phải có một khóa chính (primary key) nhằm nhận diện duy nhất từng dòng trong bảng. Khóa chính có thể gồm một hay nhiều cột. Khi khóa chính có nhiều hơn một cột, giá trị trong từng cột không cần duy nhất, nhưng giá trị tổ hợp cột phải duy nhất.
Một dòng trong hệ quản trị cơ sở dữ liệu phải phân biệt với các dòng khác trong bảng, bằng không dòng đó không thể được tra cứu dễ dàng. Đây là một trong những quy tắc cơ bản của hệ quản trị cơ sở dữ liệu. Nhằm đảm bảo tính duy nhất, khóa chính dùng chỉ định cho bảng. Khóa chính, như đã đề cập trước đây, là cột (hay nhiều cột) nhận diện duy nhất dòng đã cho. Vì thế, hệ thống có thể phân biệt dòng này với dòng khác trong bảng. Chẳng hạn, trong bảng tblCustomer, cột CustID – mã số khách hàng – xác định tính duy nhất của dòng. Như vậy, CustID là khóa chính cho bảng tblCustomer.
Trường bảng quan trọng khác là khóa ngoại. Khóa ngoại (foreign key) là thuộc tính trong một bảng mà trùng với trường khóa chính thuộc bảng khác. Hình 2.5 trình bày hai bảng trong cơ sở dữ liệu The Coffee Merchant dùng để tra cứu dữ liệu hóa đơn. Nhiều thiết kế viên cơ sở dữ liệu dùng cùng tên trường để đặt tên cho các cột khóa chính và khóa ngoại tương ứng nhằm ký hiệu đây là hai cột gắn liền hai bảng. Chẳng hạn, khóa ngoại CustomerID trong bảng tblInvoice có quan hệ với trường CustID trong bảng tblCustomer. Mặc dù nhiều thiết kế viên cơ sở dữ liệu tuân theo cách đặt tên này, Microsoft Access và các gói phần mềm quản trị cơ sở dữ liệu không yêu cầu điều đó.
Hình 2.5. Quan hệ khóa ngoại khóa chính.
Cột CustomerID trong bảng hóa đơn (tblInvoice) là một khóa ngoại, vì nó tham khảo đến khóa chính trong một dòng thuộc bảng tblCustomer. Kết hợp giữa khóa ngoại và khóa chính đóng vai trò quan trọng vì cơ sở dữ liệu dùng chúng để thiết lập mối quan hệ giữa các bảng.
Không có nhận xét nào:
Đăng nhận xét