Khi thiết kế bảng, tôi đã phát triển thói quen có một cột duy nhất và tôi tạo khóa chính. Điều này đạt được theo ba cách tùy thuộc vào yêu cầu:
- Cột số nguyên mà tự động tăng.
- Mã định danh duy nhất (GUID)
- Cột một ký tự ngắn (x) hoặc số nguyên (hoặc loại số tương đối nhỏ khác) có thể đóng vai trò là cột định danh hàng
Số 3 sẽ được sử dụng để tra cứu khá nhỏ, chủ yếu là các bảng đọc có thể có mã chuỗi độ dài tĩnh duy nhất hoặc giá trị số như một năm hoặc số khác.
Đối với hầu hết các phần, tất cả các bảng khác sẽ có số nguyên chính tự động tăng hoặc số nguyên định danh duy nhất.
Câu hỏi :-)
Gần đây tôi đã bắt đầu làm việc với các cơ sở dữ liệu không có mã định danh hàng nhất quán và các khóa chính hiện đang được nhóm trên các cột khác nhau. Vài ví dụ:
- thời gian / ký tự
- datetime / số nguyên
- datetime / varchar
- char / nvarchar / nvarchar
Có một trường hợp hợp lệ cho điều này? Tôi đã luôn luôn xác định một danh tính hoặc cột định danh duy nhất cho những trường hợp này.
Ngoài ra, có rất nhiều bảng không có khóa chính. Các lý do hợp lệ, nếu có, cho điều này là gì?
Tôi đang cố gắng để hiểu tại sao các bảng được thiết kế như chúng, và nó dường như là một mớ hỗn độn lớn đối với tôi, nhưng có lẽ có những lý do tốt cho nó.
Một câu hỏi thứ ba để giúp tôi giải mã các câu trả lời: Trong trường hợp nhiều cột được sử dụng để bao gồm khóa chính, có một lợi thế cụ thể nào cho phương pháp này so với khóa thay thế / khóa nhân tạo không? Tôi đang suy nghĩ chủ yếu liên quan đến hiệu suất, bảo trì, quản trị, vv?