Здравствуйте, 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.
так что вопрос снят

.