Мой собственный совет по этому поводу следующий:
Представляет Guids с типом uniqueidentifier в SQL. Представление TimeSpans с типом bigint в SQL и сохранение тиков.
Если тип уникального идентификатора используется для столбца без первичного ключа, рассмотрите возможность установки значения по умолчанию для столбца равным пустому GUID, используя CONVERT (uniqueidentifier, «00000000-0000-0000-0000-000000000000») вместо разрешения NULL значения.
Просмотрите документацию SQL на uniqueidentifier, прежде чем использовать его в качестве первичного ключа. Есть несколько конкретных предостережений при его использовании, о которых должны знать разработчики приложений и баз данных. Электронная документация по SQL Server Использование данных уникального идентификатора - хорошее место для начала.
Если для первичного ключа используется уникальный идентификатор, рассмотрите возможность установки для столбца по умолчанию значения NEWSEQUENTIALID () или NEWID (). Первый, как правило, является предпочтительным выбором.
Внешние ключи помогают оптимизатору SQL решать некоторые вещи, поэтому хорошо иметь их, если это возможно, но иногда просто не существует простого способа связать вещи таким образом.
Вам следует избегать многоколоночных первичных ключей, поскольку они могут создавать целый ряд проблем, одна из которых - хрупкость разработанной схемы, а другая заключается в том, что они более дороги для индексации и поиска.
Чтобы ответить на ваш вопрос 1. Один из возможных способов сохранить информацию о настройках, которая имеет несколько вариантов, - это сохранить настройки в столбце xml. См. xml (Transact-SQL) . На самом деле, вы даже можете хранить объекты в базе данных, используя XmlSerializer (см. XmlSerializer Class ), что делает контент довольно удобным для чтения человеком. Существуют также способы извлечения информации из сериализованных объектов xml непосредственно в SQL, если это необходимо (см. Методы типов xml ).
Чтобы ответить на ваш вопрос 2: Возможно, вы могли бы создать сохраненные настройки XML таким образом, чтобы они не нуждались в ссылке. За исключением этого, убедитесь, что ваш столбец, содержащий Guid, проиндексирован, если он не является первичным ключом, и убедитесь, что вы тщательно изучили информацию об уникальных идентификаторах, на которые я ссылался ранее, чтобы вы понимали влияние, производительность и другие способы выбора использования Guid /. UniqueIdentifier.