sql >> Database >  >> RDS >> Sqlserver

Wat is de beste manier om een ​​gebruiker toe te staan ​​om on-the-fly kolommen aan zijn database toe te voegen?

Is het een absolute vereiste dat ze kolommen aan de tabel toevoegen , of alleen dat ze extra velden kunnen specificeren om op te slaan? Ik raad je ten zeerste aan iets als Entity-Attribute-Value te overwegen in plaats van de eindgebruiker (beheerders tellen als eindgebruikers) toe te staan ​​om schemawijzigingen aan te brengen.

Voor zoiets als dit zou u een tabel hebben om uw aangepaste velden te definiëren, en vervolgens een veel-op-veel-koppelingstabel waarmee de gebruiker een waarde kan specificeren voor een aangepast veld voor de contactpersoon. Bijvoorbeeld:

    Contact
    ---------
 -> ContactId
|   FirstName
|   LastName
|   etc.
|
|                        ContactField
|                        --------------
|                        ContactFieldId <---
|                        FieldName          |
|                                           |
|   ContactFieldValue                       |
|   -------------------                     |
 -- ContactId                               |
    ContactFieldId -------------------------
    Value

De details van de implementatie zijn uiteraard aan u (bijvoorbeeld of u ContactId + ContactFieldId wilt gebruiken als een samengestelde primaire sleutel in ContactFieldValue ), maar dit zou het algemene idee moeten overbrengen.



  1. PHP:Tabelgegevens weergeven met fetchall()

  2. SQL-query om een ​​rij te vinden met een specifiek aantal associaties

  3. Store Procedure geeft geen waarde terug in MVC5

  4. Wat is het verschil tussen het 'yy'- en 'rr'-datummasker van orakel?