Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server 2005 có phạt tôi vì sử dụng nvarchar (50) làm khóa chính, thay vì số nguyên không?

Bạn đã gặp phải một trong những cuộc "thánh chiến" lớn về thiết kế cơ sở dữ liệu. Cuộc tranh luận mà bạn đang đề cập đến là lập luận "thay thế so với khóa tự nhiên" đã hoành hành trong thời gian dài như đã có RDBMS (gần như tôi có thể nói).

Cuộc tranh luận về cơ bản chỉ tập trung vào việc liệu một khóa đại diện (thay thế, ví dụ như cột IDENTITY) có nên được sử dụng thay vì sử dụng dữ liệu thực tế mô tả duy nhất một bản ghi (khóa tự nhiên) hay không.

Tôi sẽ nói rằng không có câu trả lời "đúng". Các thước đo hiệu suất là một yếu tố tạo nên nền tảng và cần được đánh giá bằng thử nghiệm, nhưng hiệu suất có thể không phải là mối quan tâm chính.

Điều tôi coi là đối số chính cho khóa thay thế là tính bất biến của khóa chính. Nếu bạn chọn sử dụng khóa tự nhiên, bạn sẽ từ bỏ tùy chọn thay đổi khóa đó sau khi nó được thiết lập. Bạn cũng từ bỏ khả năng rằng nó có thể trở nên không phải là duy nhất vào một thời điểm nào đó trong tương lai. Vì những lý do đó, tôi thường (không phải lúc nào cũng) sử dụng các khóa thay thế cho hầu hết các bảng của mình.

Tuy nhiên, như tôi đã đề cập, có một cuộc tranh luận rất lâu dài với các cuộc thảo luận về các chiến lược lập chỉ mục và sự tuân thủ dạng bình thường sẽ được đọc nếu bạn có khuynh hướng như vậy.

Tôi muốn Google "thay thế so với khóa tự nhiên". Dưới đây là một số liên kết để giúp bạn bắt đầu:

Kỹ thuật hệ thống và RDBMS

Techrepublic

Blog của Tony Rogerson

Hy vọng điều này sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách gửi một email HTML từ SQL Server (T-SQL)

  2. Ứng dụng khách có địa chỉ IP không được phép truy cập vào cơ sở dữ liệu Azure SQL của máy chủ

  3. Thông tin xác thực cho dịch vụ SQL Server Agent không hợp lệ

  4. Bạn có thể đặt Lược đồ mặc định cho Truy vấn SQL 2008 không

  5. Cách chèn giá trị vào cột nhận dạng theo cách thủ công trong bảng SQL Server - Hướng dẫn SQL Server / T-SQL Phần 41