Cá nhân tôi đã luôn luôn ưa thích để có cột int tiêu chuẩn cho điều này, với một liên kết chính nước ngoài vào một bảng mô tả. Điều này cho phép bạn giới hạn các giá trị cho cột id loại.
Tất nhiên điều này có thể dẫn đến bảng bloat, nhưng nó cho phép bạn có bảng "bản địa hóa" đi kèm với bảng mô tả, để ứng dụng của bạn có thể hiển thị nội dung được bản địa hóa trong danh sách thả xuống/báo cáo, v.v.
User.UserTypeID -> UserType.UserTypeID -> UserTypeLocalised.UserTypeID where locality = ??
Đây cũng là cơ sở dữ liệu bất khả tri hơn và do đó dễ dàng chuyển sang các nền tảng khác nhau.
Ngoài ra, điều này không đúng đối với người dùng là cá nhân hoặc tổ chức. Tôi hy vọng một người dùng sẽ là một phần của một tổ chức, thay vào đó sẽ yêu cầu một bảng Organization và người dùng có một cột OrganisationID. Kiểu người dùng thường có nhiều khả năng là sự khác biệt "Con người/hệ thống" (giả sử hệ thống của bạn sử dụng các logons môi trường xung quanh để thực hiện các hoạt động và bạn muốn có kiểm toán).
Nguồn
2008-12-03 11:33:45
RDBMS nào khác ngoài MySQL hỗ trợ kiểu dữ liệu ENUM? (Đây không phải là một quesion hùng biện.) – Tomalak
@Tomalak: Tôi biết postgresql nào. –
Câu hỏi hay, tôi muốn người khác tham gia và mang lại câu trả lời cho nó. Tomalak, có lẽ bạn thực sự nên đăng câu hỏi của bạn như là một câu trả lời con nếu bạn biết một số RDBMS phổ biến mà thực sự không hỗ trợ enum và liệt kê chúng. – Tom