Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaki jest najlepszy sposób, aby umożliwić użytkownikowi dodawanie kolumn do bazy danych w locie?

Czy konieczne jest dodawanie kolumn do tabeli? , czy po prostu mogą określić dodatkowe pola do przechowywania? Zdecydowanie sugeruję rozważenie czegoś takiego jak Entity-Attribute-Value zamiast zezwalania użytkownikowi końcowemu (administratorzy liczą się jako użytkownicy końcowi) na wprowadzanie zmian w schemacie.

W przypadku czegoś takiego masz tabelę do definiowania pól niestandardowych, a następnie tabelę skojarzeń wiele-do-wielu, aby umożliwić użytkownikowi określenie wartości pola niestandardowego dla kontaktu. Na przykład:

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

Specyfika implementacji zależy oczywiście od Ciebie (na przykład, czy użyć ContactId + ContactFieldId jako złożony klucz podstawowy w ContactFieldValue ), ale to powinno przybliżyć ogólny pomysł.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd połączenia MS Access VBA z SQL Server

  2. Łączna suma programu SQL Server według grup

  3. Jak SCHEMA_ID() działa w SQL Server

  4. Jak wypisać wszystkie daty między dwiema datami?

  5. Uzyskaj liczbę dla wielu pól za pomocą grupowania według w SQL