Các cách tiếp cận thông thường cho việc này là:
- EAV
- hstore
- XML
- JSON
Xem:
- Thiết kế cơ sở dữ liệu - tôi nên sử dụng 30 cột hay 1 cột với tất cả dữ liệu ở dạng JSON / XML ?
- https://dba.stackexchange.com/q/27057/7788
Toàn bộ điều "cung cấp các cột cho người dùng khác" chỉ yêu cầu bạn giữ một bảng "khóa tùy chỉnh" mà bạn thêm vào bất cứ khi nào người dùng xác định một khóa chưa sử dụng trước đó.
Việc thêm các cột với DDL động thoạt nghe có vẻ hợp lý, nhưng có những giới hạn về số lượng cột bạn có thể lưu trữ và độ "rộng" của một hàng. Hiệu suất quét bảng trở nên kém hơn khi bạn thêm nhiều cột hơn, mặc dù các cột "thưa thớt" hầu hết là rỗng có giá tương đối rẻ. Cần có một khóa độc quyền để thêm một cột, điều này có thể mất thời gian để truy cập vào một hệ thống bận rộn, mặc dù việc thêm cột đó rất nhanh nếu nó không được định nghĩa là NOT NULL DEFAULT ...
. Lúc đầu, nó sẽ hoạt động khá tốt, nhưng tôi nghi ngờ rằng bạn sẽ hối hận khi làm điều đó sau đó.