Chúng tôi hiện đang xác định một danh sách các hằng số (chủ yếu là những tương ứng với kiểu liệt kê, chúng tôi đã được định nghĩa trong lớp kinh doanh) ở phía trên cùng của một thủ tục lưu trữ như vậy:Các cách xử lý 'Đếm' khác nhau trong SQL Server là gì?
DECLARE @COLOR_RED INT = 1
DECLARE @COLOR_GREEN INT = 2
DECLARE @COLOR_BLUE INT = 3
Nhưng những thường được lặp đi lặp lại trong nhiều thủ tục lưu trữ để có rất nhiều sự trùng lặp.
Một kỹ thuật khác tôi sử dụng nếu thủ tục chỉ cần một hoặc hai hằng số là chuyển chúng vào làm tham số cho quy trình được lưu trữ. (sử dụng cùng một quy ước của trường hợp trên cho các giá trị không đổi). Bằng cách này, tôi chắc chắn rằng các giá trị trong lớp kinh doanh và lớp dữ liệu là nhất quán. Phương pháp này không tốt cho nhiều giá trị.
Các tùy chọn khác của tôi là gì?
Tôi đang sử dụng SQL Server 2008 và C# nếu có sự khác biệt.
Cập nhật Vì tôi đang sử dụng. Net có cách nào mà người dùng định nghĩa (CLR) loại có thể trợ giúp không?
Một khoá ngoại trên bảng liệt kê là tốt, nhưng giá trị được sử dụng trong quy trình được lưu trữ như thế nào? – tpower
@tpower: Không hoàn toàn chắc chắn tôi hiểu câu hỏi của bạn nhưng tôi thường sẽ vượt qua các giá trị chuỗi enum vào sproc và ngay lập tức dịch chúng thành khóa ngoài bằng cách sử dụng hàm tôi đã đề cập. Do đó, ứng dụng chỉ giao dịch với các giá trị enum, mã DB chỉ giao dịch với các giá trị khóa ngoài. – Adamski
Ý của tôi là, nếu thủ tục được lưu trữ chứa một số logic nghiệp vụ như 'IF @MyVariable = @ MY_ENUMERATION_VALUE_2 THEN', nơi chúng ta cần nêu rõ giá trị các khóa ngoại không giúp được ở đây. – tpower