Cách phổ biến nhất mà tôi đã thấy việc này được thực hiện là với hai bảng, membership
và membership_ml
, với một bảng lưu trữ các giá trị cơ sở và bảng ml lưu trữ các chuỗi được bản địa hóa. Điều này tương tự với tùy chọn thứ hai của bạn. Hầu hết các hệ thống mà tôi thấy như thế này đều được làm theo cách đó bởi vì chúng không được thiết kế với mục đích quốc tế hóa ngay từ đầu, vì vậy các bảng _ml bổ sung đã được "giải quyết" sau đó.
Những gì tôi nghĩ là một lựa chọn tốt hơn tương tự như lựa chọn đầu tiên của bạn, nhưng hơi khác một chút. Bạn sẽ có một bảng trung tâm để lưu trữ tất cả các bản dịch, nhưng thay vì đặt tên bảng và tên trường vào đó, bạn sẽ sử dụng mã thông báo và bảng "Nội dung" trung tâm để lưu trữ tất cả các bản dịch. Bằng cách đó, bạn có thể thực thi một số loại RI giữa các mã thông báo trong bảng cơ sở và các bản dịch trong bảng Nội dung nếu bạn muốn.
Tôi thực sự đã đặt một câu hỏi về vấn đề này một thời gian trước, vì vậy bạn có thể xem qua đó để biết thêm một số thông tin (thay vì đăng lại các ví dụ lược đồ ở đây).