PDA

View Full Version : Cho hỏi về việc chọn kiểu dữ liệu cho khóa chính.



TgVMy
12-05-2011, 11:51
ACE cho mình hỏi:
1. Trong SQL, mình nên chọn kiểu dữ liệu (data type) gì để làm khóa chính. Vì sao?
2. Giả sử mình chọn kiểu text làm khóa chính, chuyện gì sẽ xảy ra nếu field này có chứa các ký tự thuộc Unicode hoặc Big5, hoặc một số dạng đặc biệt khác.

Cảm ơn các bác nhiều.

serivn
15-05-2011, 08:19
Để chọn kiểu dữ liệu nào làm khóa chính thì có lẽ câu trả lời chính xác nhất là phụ thuộc vào mục đích và bài toán cụ thể của bạn :D.. tuy nhiên theo mình thì bạn có thể cân nhắc thế này:
1. Mục đích của khóa chính là để phân biệt các record trong table, nên thông thường chúng ta chọn kiểu dữ liệu sao cho đơn giản khi nhập liệu mà lại đảm bảo đặc tính trên. Thông thường, người trong SQL Server người ta hay sử dụng 2 loại: 1 là dùng kiểu số nguyên và xác lập cho nó tự tăng (Identity), và một kiểu khác nữa là sử dụng kiểu GUID (uniqueidentifier). Cả 2 kiểu này đều có đặc điểm là đảm bảo cho các giá trị luôn là khác nhau --> tránh hiện tượng trùng lặp.
2. Nếu bạn chọn kiểu text cũng ok thôi, tuy nhiên sẽ gây ra sự phức tạp khi nhập liệu, thường thì sẽ có tỉ lệ trùng khóa ra rất cao và khi đó để kiểm soát thường bạn phải viết một hàm hay store procedure để thực hiện công việc này --> phức tạp. Còn việc tồn tại ký tự unicode hay không thì theo mình cũng ko ảnh hường gì cả.

Từ trên, hy vọng bạn sẽ cân nhắc chọn giải pháp cho mình!
Thân!