J'ai une question rapide - existe-t-il une meilleure pratique dans la conception de table SQL pour stocker des données «soit/ou»?Tables SQL - Motif pour/ou données
J'ai le problème suivant - J'ai besoin de stocker des données de modèle (définition de la structure de dossier) dans une table SQL. Un dossier donné peut avoir un nom statique (par exemple "Emails") ou il peut être généré dynamiquement pour chaque instance, en fonction des objets qui lui sont associés (par exemple, le nom de l'entreprise).
Lorsqu'un objet métier est instancié, les données de modèle sont utilisées pour créer la structure de dossiers réelle.
Je pense à stocker les données comme ceci:
CREATE TABLE folder ( ID INT IDENTITY PRIMARY KEY, FolderName NVARCHAR(50), IsDynamic BIT NOT NULL DEFAULT 0, DynamicFieldID INT FOREIGN KEY REFERENCES dynamicField, ParentID INT FOREIGN KEY REFERENCES folder )
Donc, si le champ isDynamic est défini sur true Je sais qu'il y aura une règle (définie sur la clé étrangère), mais sinon je utilisera la valeur stockée dans le nom du dossier.
Cependant, cela semble un peu compliqué pour moi - existe-t-il un modèle de "meilleure pratique" pour ce genre de scénario?
Salut Patrick - merci pour cela. J'envisageais cela, mais je me suis contenté de décider si c'était mieux ou moins bien que ça. Quelle est votre opinion sur la raison pour laquelle c'est mieux (ou que considérez-vous comme le pour et le contre)? – Chris
Si vous avez eu plus de deux types de dossiers, ou plus de deux colonnes ont été affectées, cette approche pourrait s'avérer plus propre que d'essayer de tout garder dans une table. Cependant, dans l'état actuel, je pense que la suggestion de Christie's COALESE est plus pratique.J'accepterais sa réponse. :-) –