Các bảng tra cứu (hoặc bảng mã , như một số người gọi chúng) thường là một tập hợp các giá trị có thể có thể được cung cấp cho một cột nhất định.
Ví dụ: giả sử chúng ta có một bảng tra cứu được gọi là party
(có nghĩa là lưu trữ thông tin về các đảng chính trị) có hai cột:
party_code_idn
, chứa các giá trị số do hệ thống tạo và (thiếu ý nghĩa miền kinh doanh ) hoạt động như một đại diện thay thế cho khóa thực.party_code
, là khóa tự nhiên thực sự hoặc trên mạng của bảng vì nó duy trì các giá trị có ý nghĩa miền kinh doanh .
Và hãy để chúng tôi nói rằng bảng như vậy giữ lại dữ liệu sau:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
Các party_code
cột, mà giữ 'Cộng hòa' và 'Dân chủ', là chìa khóa thực sự của bảng, được thiết lập với một hạn chế UNIQUE, nhưng tôi tùy chọn thêm các giá trị party_code_idn
và định nghĩa nó như là PK của bảng (mặc dù, nói một cách logic , party_code
có thể hoạt động như KHÓA CHÍNH [PK]).
Câu hỏi
Các thực tiễn tốt nhất để trỏ đến các giá trị tra cứu từ các bảng giao dịch là gì? Tôi có nên thiết lập các tham chiếu FOREIGN KEY (FK) hoặc (a) trực tiếp đến giá trị tự nhiên và có ý nghĩa hoặc (b) để thay thế các giá trị không?
Option (a) , ví dụ,
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
có các tính chất sau 1 :
- Có thể đọc cho người dùng cuối (+)
- Dễ dàng xuất nhập khẩu trên các hệ thống (+)
- Khó thay đổi giá trị vì nó cần sửa đổi trong tất cả các bảng tham chiếu (-)
- Thêm giá trị mới không tốn kém (=)
Tôi nghĩ rằng nó gần giống như vượt qua bởi giá trị , để rút ra một sự tương tự từ lời gọi hàm trong thuật ngữ lập trình ứng dụng.
Tùy chọn (b) , ví dụ,
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
có các thuộc tính dưới đây:
- Không thể đọc được cho người dùng cuối (-)
- Khó xuất nhập khẩu vì chúng ta cần phải tham chiếu lại nó (-)
- Dễ dàng thay đổi giá trị, vì chúng tôi chỉ lưu trữ các tham chiếu trong các bảng giao dịch (+)
- Thêm giá trị mới không tốn kém (=)
Nó rất giống với Pass qua bởi tham chiếu , nếu so sánh với chức năng gọi theo cách nói lập trình ứng dụng.
Xuất nhập khẩu cũng có thể được thực hiện theo một cách khác, tức là, chỉ bằng cách điền vào bảng tra cứu một lần nữa và sau đó chọn lại cột thay thế. Tôi hy vọng tôi đang làm đúng, đây là điều mà tôi vừa nghe như một khả năng.
1. Lưu ý rằng +
, -
và =
chỉ ra lợi ích của các tính chất đó.
Câu hỏi
Khá quan trọng: Có sự khác biệt giữa bảng tra cứu (hoặc mã ) và tham chiếu FK nếu chúng ta chỉ sử dụng cách tiếp cận sau? Tôi nghĩ rằng họ làm việc như nhau.