Tôi làm việc với một ứng dụng sử dụng bitmasks để lưu trữ phân công vai trò của người dùng. Đó là một cơn đau ở mông. Nếu điều này làm cho tôi thiên vị, có tội như bị buộc tội.
Nếu bạn đã sử dụng cơ sở dữ liệu quan hệ, thì đó là một mô hình chống vi phạm hầu hết lý thuyết quan hệ và tất cả các quy tắc chuẩn hóa. Khi bạn xây dựng lưu trữ dữ liệu của riêng bạn, nó có thể không phải là một ý tưởng tồi.
Có một điều như có quá nhiều bảng được tham gia, nhưng cơ sở dữ liệu quan hệ được xây dựng để xử lý việc này. Nhiều tính năng bổ sung nếu hiệu suất trở thành một vấn đề: chỉ mục, chế độ xem được lập chỉ mục, v.v. Ngay cả khi các giá trị bạn đang tìm kiếm không thay đổi thường xuyên, đó là một lợi thế cho Bitmask, việc vượt qua việc phải quản lý lập chỉ mục là khá dễ dàng trên cơ sở dữ liệu.
Mặc dù cơ sở dữ liệu thực hiện tốt công việc tổng hợp dữ liệu, chúng có thể trở nên chậm chạp khi bạn bắt đầu đưa những thứ như công thức phức tạp hoặc Hàm vô hướng vào bộ dữ liệu. Bạn có thể thực hiện bitwise trong ứng dụng của mình, nhưng nếu tất cả những gì bạn đang làm là nhận dữ liệu liên quan (tìm kiếm vai trò của người dùng), bạn sẽ không tận dụng những gì lưu trữ dữ liệu của bạn tốt nhất.
Lập luận cuối cùng của tôi chống lại nó sẽ là sự đơn giản cho các nhà phát triển khác. Bạn có người dùng, vai trò và bài tập. Đó là một tập hợp quan hệ nhiều-nhiều (vì có nhiều hơn một mối quan hệ) rất phổ biến, nên dễ quản lý. Nó chỉ là thứ CRUD.