powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разработка схемы: пользователи - их настройки
4 сообщений из 4, страница 1 из 1
Разработка схемы: пользователи - их настройки
    #38779698
design21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!

Разрабатываю схему базы с нуля. Посоветуйте пожалуйста, как сделать схему более красивой. Задача такая:
Есть пользователи, есть наборы настроек.У каждого пользователя может быть несколько наборов настроек, в каждый конкретный момент может быть выбран только один набор настроек для пользователя.

Схема должна быть оптимизирована под следующий задачи:
1) Для каждой таблицы будет вестись история изменений, в связи с этим хочу вынести "выбранный сейчас набор настроек" в отдельную таблицу, чтобы при переключении между наборами настроек не логировать лишние данные.
2) Констрейнт - для пользователя может быть выбран только один набор настроек.
3) Констрейнт - для пользователя может быть выбран только набор настроек из его списка.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
IF OBJECT_ID ('[dbo].[PaUserSettingSetSelected]') IS NOT NULL 
DROP TABLE [dbo].[PaUserSettingSetSelected] 

IF OBJECT_ID ('[dbo].[PaUserSettingSet]') IS NOT NULL 
DROP TABLE [dbo].[PaUserSettingSet]

IF OBJECT_ID ('[dbo].[PaUser]') IS NOT NULL 
DROP TABLE [dbo].[PaUser]

IF OBJECT_ID ('[dbo].[SettingSet]') IS NOT NULL 
DROP TABLE [dbo].[SettingSet]


CREATE TABLE [dbo].[PaUser] (
	[PaUserId] uniqueidentifier CONSTRAINT [PK_PaUser] PRIMARY KEY)

CREATE TABLE [dbo].[SettingSet] (
	[SettingSetId] uniqueidentifier CONSTRAINT [PK_SettingSet] PRIMARY KEY )

CREATE TABLE [dbo].[PaUserSettingSet] (
	PaUserSettingSetId uniqueidentifier CONSTRAINT [PK_PaUserSettingSet] PRIMARY KEY
  , PaUserId uniqueidentifier CONSTRAINT [FK_PaUserSettingSet_PaUser] FOREIGN KEY REFERENCES [dbo].[PaUser] (PaUserId) 
  , SettingSetId uniqueidentifier CONSTRAINT [FK_PaUserSettingSet_SettingSet] FOREIGN KEY REFERENCES [dbo].[SettingSet] (SettingSetId)
  , IsUserDefault bit
)

CREATE TABLE [dbo].[PaUserSettingSetSelected] 
(
    [PaUserSettingSetSelectedId] uniqueidentifier CONSTRAINT [PK_PaUserSettingSetSelected] PRIMARY KEY
  ,	[PaUserSettingSet] uniqueidentifier CONSTRAINT [FK_aUserSettingSetSelected_PaUserSettingSet] FOREIGN KEY REFERENCES [dbo].[PaUserSettingSet] (PaUserSettingSetId)
)



Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Разработка схемы: пользователи - их настройки
    #38779783
design21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот придумал такой вариант. Есть ли слабые стороны?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
IF OBJECT_ID ('[dbo].[PaUserSettingSetSelected]') IS NOT NULL 
DROP TABLE [dbo].[PaUserSettingSetSelected] 

IF OBJECT_ID ('[dbo].[PaUserSettingSet]') IS NOT NULL 
DROP TABLE [dbo].[PaUserSettingSet]

IF OBJECT_ID ('[dbo].[PaUser]') IS NOT NULL 
DROP TABLE [dbo].[PaUser]

IF OBJECT_ID ('[dbo].[SettingSet]') IS NOT NULL 
DROP TABLE [dbo].[SettingSet]


CREATE TABLE [dbo].[PaUser] (
	[PaUserId] uniqueidentifier CONSTRAINT [PK_PaUser] PRIMARY KEY)

CREATE TABLE [dbo].[SettingSet] (
	[SettingSetId] uniqueidentifier CONSTRAINT [PK_SettingSet] PRIMARY KEY )

CREATE TABLE [dbo].[PaUserSettingSet] (
	PaUserSettingSetId uniqueidentifier CONSTRAINT [PK_PaUserSettingSet] PRIMARY KEY
  , PaUserId uniqueidentifier CONSTRAINT [FK_PaUserSettingSet_PaUser] FOREIGN KEY REFERENCES [dbo].[PaUser] (PaUserId) 
  , SettingSetId uniqueidentifier CONSTRAINT [FK_PaUserSettingSet_SettingSet] FOREIGN KEY REFERENCES [dbo].[SettingSet] (SettingSetId)
  , IsUserDefault bit
  , CONSTRAINT [AK_PaUserSettingSet] UNIQUE (PaUserId,SettingSetId)
)

CREATE TABLE [dbo].[PaUserSettingSetSelected] 
(
    [PaUserSettingSetSelectedId] uniqueidentifier CONSTRAINT [PK_PaUserSettingSetSelected] PRIMARY KEY
  , PaUserId uniqueidentifier CONSTRAINT [FK_PaUserSettingSetSelected_PaUser] FOREIGN KEY REFERENCES [dbo].[PaUser] (PaUserId) 
  , SettingSetId uniqueidentifier CONSTRAINT [FK_PaUserSettingSetSelected_SettingSet] FOREIGN KEY REFERENCES [dbo].[SettingSet] (SettingSetId)
  , CONSTRAINT [FK_PaUserSettingSetSelected_PaUserSettingSet] FOREIGN KEY (PaUserId,SettingSetId) REFERENCES [dbo].[PaUserSettingSet](PaUserId,SettingSetId)
)
...
Рейтинг: 0 / 0
Разработка схемы: пользователи - их настройки
    #38779796
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо, нужен еще unique constraint на PaUserId в таблице PaUserSettingSetSelected - для реализации Вашего условия 2
...
Рейтинг: 0 / 0
Разработка схемы: пользователи - их настройки
    #38779837
xenix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем в первичных ключах uniqueidentifier ?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разработка схемы: пользователи - их настройки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]