sql >> Databasteknik >  >> RDS >> Sqlserver

Vilket är det bästa sättet att tillåta en användare att lägga till kolumner i sin databas i farten?

Är det ett absolut krav att de lägger till kolumner i tabellen , eller bara att de kan ange ytterligare fält att lagra? Jag rekommenderar starkt att du överväger något som Entity-Attribute-Value istället för att låta slutanvändaren (admins räknas som slutanvändare) göra schemaändringar.

För något sådant här skulle du ha en tabell för att definiera dina anpassade fält, sedan en många-till-många-associeringstabell för att tillåta användaren att ange ett värde för ett anpassat fält för kontakten. Till exempel:

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

Detaljerna för implementeringen är uppenbarligen upp till dig (till exempel om du ska använda ContactId + ContactFieldId som en sammansatt primärnyckel i ContactFieldValue ), men det här borde förmedla den allmänna uppfattningen.



  1. Undvikande enstaka citat i PHP när du infogar i MySQL

  2. använder virtuella fält för att summera värden i cakephp

  3. Hur man använder Case Statement för villkorlig formatering i Select Query - SQL Server / TSQL självstudie del 116

  4. MySQL-fråga - använder SUM av COUNT