Apakah persyaratan mutlak bahwa mereka menambahkan kolom ke tabel , atau hanya agar mereka dapat menentukan bidang tambahan untuk disimpan? Saya sangat menyarankan Anda mempertimbangkan sesuatu seperti Entity-Attribute-Value daripada mengizinkan pengguna akhir (admin dihitung sebagai pengguna akhir) untuk membuat perubahan skema.
Untuk sesuatu seperti ini, Anda akan memiliki tabel untuk menentukan bidang khusus Anda, lalu tabel asosiasi banyak ke banyak untuk memungkinkan pengguna menentukan nilai bidang khusus untuk kontak. Misalnya:
Contact
---------
-> ContactId
| FirstName
| LastName
| etc.
|
| ContactField
| --------------
| ContactFieldId <---
| FieldName |
| |
| ContactFieldValue |
| ------------------- |
-- ContactId |
ContactFieldId -------------------------
Value
Spesifik implementasi jelas terserah Anda (misalnya, apakah akan menggunakan ContactId + ContactFieldId
sebagai kunci utama gabungan di ContactFieldValue
), tetapi ini harus menyampaikan gagasan umum.