-
Notifications
You must be signed in to change notification settings - Fork 13
Database Schema
Patrick edited this page Jun 19, 2017
·
15 revisions
GO
CREATE SCHEMA [Configuration]
GO
The section table allows settings to be grouped and categorised.
GO
CREATE TABLE [Configuration].[Section](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ApplicationName] [nvarchar](50) NOT NULL,
[Aspect] [nvarchar](50) NULL,
[Discriminator] [nvarchar](450) NULL,
[SectionName] [nvarchar](50) NOT NULL,
[Modified] [datetime2](7) NULL,
[ModifiedUser] [nvarchar](50) NULL,
[Timestamp] [timestamp] NOT NULL,
CONSTRAINT [PK_Section] PRIMARY KEY CLUSTERED
(
[Id] ASC
),
)
GO
The settings table contains key\value for settings. Settings are grouped by SectionId.
GO
CREATE TABLE [Configuration].[Setting](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DefaultValue] [nvarchar](max) NULL,
[Key] [nvarchar](50) NOT NULL,
[Modified] [datetime2](7) NULL,
[ModifiedUser] [nvarchar](50) NULL,
[SectionId] [int] NOT NULL,
[Timestamp] [timestamp] NOT NULL,
[ValueType] [nvarchar](max) NULL,
[Json] [nvarchar](max) NULL,
CONSTRAINT [PK_Setting] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
)
GO
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Setting_SectionId_Key] ON [Configuration].[Setting]
(
[SectionId] ASC,
[Key] ASC
)
WHERE ([SectionId] IS NOT NULL AND [Key] IS NOT NULL)
GO
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Section_ApplicationName_Aspect_SectionName_Discriminator] ON [Configuration].[Section]
(
[ApplicationName] ASC,
[Aspect] ASC,
[SectionName] ASC,
[Discriminator] ASC
)
WHERE ([ApplicationName] IS NOT NULL AND [Aspect] IS NOT NULL AND [SectionName] IS NOT NULL AND [Discriminator] IS NULL)
GO
ALTER TABLE [Configuration].[Section] ADD CONSTRAINT [DF_Section_Modified] DEFAULT (getdate()) FOR [Modified]
GO
ALTER TABLE [Configuration].[Setting] ADD CONSTRAINT [DF_Setting_Modified] DEFAULT (getdate()) FOR [Modified]
GO
ALTER TABLE [Configuration].[Setting] WITH CHECK ADD CONSTRAINT [FK_Setting_Section_SectionId] FOREIGN KEY([SectionId])
REFERENCES [Configuration].[Section] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [Configuration].[Setting] CHECK CONSTRAINT [FK_Setting_Section_SectionId]
GO
