Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кой е най-добрият начин да позволите на потребителя да добавя колони към своята база данни в движение?

Абсолютно изискване ли е те да добавят колони към таблицата , или просто да могат да посочват допълнителни полета за съхраняване? Горещо препоръчвам да обмислите нещо като Entity-Attribute-Value, вместо да позволявате на крайния потребител (администраторите се считат за крайни потребители) да прави промени в схемата.

За нещо подобно ще имате таблица, за да дефинирате вашите персонализирани полета, след това таблица за асоцииране много към много, за да позволите на потребителя да посочи стойност за персонализирано поле за контакта. Например:

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

Спецификата на изпълнението очевидно зависи от вас (например дали да използвате ContactId + ContactFieldId като съставен първичен ключ в ContactFieldValue ), но това трябва да разясни общата идея.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-sql, отметки, клеймо за време

  2. SQL JOIN срещу IN производителност?

  3. Изчислете текущата сума в SQL Server

  4. LEFT JOIN срещу LEFT OUTER JOIN в SQL Server

  5. IN оператор SQL