У меня быстрый вопрос - есть ли лучшая практика в дизайне таблиц SQL для хранения данных «или / или»?
У меня следующая проблема - мне нужно хранить данные шаблона (определяющие структуру папок) в таблице SQL. Любая данная папка может иметь статическое имя (например, «электронные письма») или она может генерироваться динамически для каждого экземпляра, в зависимости от объектов, связанных с ней (например, название компании).
Когда создается экземпляр бизнес-объекта, данные шаблона будут использоваться для создания фактической структуры папок.
Я думаю о хранении данных, таких как:
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
)
Поэтому, если для поля IsDynamic установлено значение true, я знаю, что будет правило (определенное для внешнего ключа), но если нет, я буду использовать значение, сохраненное в имени папки.
Однако мне это кажется немного беспорядочным - есть ли шаблон «наилучшей практики» для такого сценария?