क्या यह एक परम आवश्यकता है कि वे तालिका में कॉलम जोड़ें , या सिर्फ यह कि वे स्टोर करने के लिए अतिरिक्त फ़ील्ड निर्दिष्ट करने में सक्षम हैं? मैं दृढ़ता से सुझाव दूंगा कि आप अंतिम-उपयोगकर्ता (व्यवस्थापकों को अंतिम-उपयोगकर्ता के रूप में गिना जाता है) को स्कीमा परिवर्तन करने की अनुमति देने के बजाय Entity-Attribute-Value जैसी किसी चीज़ पर विचार करें।
इस तरह के कुछ के लिए, आपके पास अपने कस्टम फ़ील्ड को परिभाषित करने के लिए एक टेबल होगी, फिर उपयोगकर्ता को संपर्क के लिए कस्टम फ़ील्ड के लिए मान निर्दिष्ट करने की अनुमति देने के लिए कई-से-अनेक एसोसिएशन टेबल होगी। उदाहरण के लिए:
Contact
---------
-> ContactId
| FirstName
| LastName
| etc.
|
| ContactField
| --------------
| ContactFieldId <---
| FieldName |
| |
| ContactFieldValue |
| ------------------- |
-- ContactId |
ContactFieldId -------------------------
Value
कार्यान्वयन की बारीकियां स्पष्ट रूप से आप पर निर्भर हैं (उदाहरण के लिए, ContactId + ContactFieldId
का उपयोग करना है या नहीं ContactFieldValue
में कंपाउंड प्राथमिक कुंजी के रूप में ), लेकिन यह सामान्य विचार भर में आना चाहिए।