Việc họ thêm cột vào bảng có phải là một yêu cầu tuyệt đối không? hoặc chỉ là họ có thể chỉ định các trường bổ sung để lưu trữ? Tôi thực sự khuyên bạn nên xem xét một cái gì đó như Thực thể-Thuộc tính-Giá trị thay vì cho phép người dùng cuối (quản trị viên được coi là người dùng cuối) thực hiện các thay đổi giản đồ.
Đối với những thứ như thế này, bạn sẽ có một bảng để xác định các trường tùy chỉnh của mình, sau đó là một bảng liên kết nhiều đến nhiều để cho phép người dùng chỉ định giá trị cho trường tùy chỉnh cho liên hệ. Ví dụ:
Contact
---------
-> ContactId
| FirstName
| LastName
| etc.
|
| ContactField
| --------------
| ContactFieldId <---
| FieldName |
| |
| ContactFieldValue |
| ------------------- |
-- ContactId |
ContactFieldId -------------------------
Value
Các chi tiết cụ thể của việc triển khai rõ ràng là tùy thuộc vào bạn (ví dụ:có sử dụng ContactId + ContactFieldId
hay không làm khóa chính ghép trong ContactFieldValue
), nhưng điều này sẽ hiểu được ý tưởng chung.