Re[2]: Нормализация
От: VladiCh  
Дата: 19.01.25 08:17
Оценка:
Здравствуйте, Qulac, Вы писали:

Q>Здравствуйте, VladiCh, Вы писали:


VC>>Как с теоретической точки зрения правильно нормализовать очень простую схему из 2х отношений:


VC>>1. user

VC>>--------
VC>>userId
VC>>groupId
VC>>region

VC>>2. group

VC>>--------
VC>>groupId
VC>>region

VC>>Пользователь всегда принадлежит к какому-то региону но не всегда к группе.

VC>>Когда он принадлежит к группе, его регион совпадает с регионом группы (берется из него)
VC>>То есть по идее groupId + region должны быть PK в group,
VC>>Но в таком случае когда пользователь не принадлежит к группе, то у него теряется region.
VC>>или столбцов region должно быть 2, что также не является нормализованным вариантом.
VC>>Если же PK будет только groupId, то возможна ситуация когда у группы назначен один регион а у пользователя другой — тоже (не)нормально.

Q>Так на пальцах: таблица Регион и таблица Группа имеют связь 1 к 1 к базовой таблице(назвать можно по разному), эта таблица имеет связь 1 ко многим с таблицей Пользователь, таблица Регион имеет связь 1 ко многим с таблицей Группа. Получается, что пользователь может быть ассоциирован либо с регионом, либо с группой у которой уже есть регион.


много лишних сущностей (базовая таблица, таблица регионов), отношения между ними.
столбец region однозначно идентифицирует регион, ему не нужна таблица (она будет из одного столбца)
на самом деле я как-то упустил один несколько тонкий момент...
что если в композитной ссылке хотя бы один столбец is null, то она вся считается пустой и не проверяется по FK.
так что вопрос снят .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.