2010-05-12 12 views
0

Peut-être que c'est plus simple et plus direct alors ce que je pense, mais je ne peux pas trouver ce concept sur google n'importe où. Le concept est le suivant:Comment appelez-vous le concept de définition de données dynamique?

Vous avez une table dans une base de données et la table a un nombre de colonnes spécifié. Cependant, il m'a été demandé par des clients précédents qu'il y ait également un ensemble de colonnes définies par l'utilisateur dynamiques qui peuvent être ajoutées à la volée.

Comment s'appelle ce concept et est-ce considéré comme un motif de conception?

Répondre

1

Vous parlez probablement des paires nom-valeur.

Comme ceci:

UserProfile 
----------- 
UserID PropertyName PropertyValue 

Mais cela ne signifie pas que vous ajoutez des colonnes à une table dynamique. Ce n'est pas fait de cette façon. Officiellement, il est connu comme Entity-attribute-value model.

0

Je soupçonne que les clients ont besoin d'avoir la capacité de créer des entités, stockées dans la base de données, avec des champs personnalisés.

Il existe plusieurs approches:

Vous pouvez créer une table avec des champs d'entité commune (id, dateCreated, DateModified, isVisible, typeId ...) et stocker des champs spécifiques supplémentaires en champ XML (une table pour tous types d'entités).

Si le type de données Xml semble surexcité pour stocker des données, vous pouvez utiliser nvarchar où les attributs stockés en notation JSON. Le format binaire peut également être utilisé si la taille est importante :)

Vous pouvez également créer une table associée pour stocker des attributs d'entité spécifiques. Cette approche est implémentée dans le fournisseur par défaut du profil asp.net: table pour les utilisateurs et table pour le profil utilisateur avec les paires [userId, profile-attribute-name, profile-attribute-value

Ce qui dépend dépend d'autres exigences.