Нормализация схемы базы данных - PullRequest
1 голос
/ 25 апреля 2011

Вот отношения между 3 объектами - A, B и C.
A: B - 1: M
A: C - 1: M
B: C - M: M с ограничением на то, что они должны совместно использовать один и тот же экземпляр A.

Моя текущая схема выглядит следующим образом.
а (идентификатор, данные)
b (id, a_id, data)
c (id, c_id, data)
b2c (b_id, c_id)

Как разработать лучшую схему, чтобы избежать несогласованности данных?

Я знаю, что название этого поста носит общий характер. Если кто-то из вас может придумать лучший заголовок, не стесняйтесь редактировать этот пост.


В качестве примера я собираюсь разработать приложение для создания рекламной стены. Рекламная стена делится на множество sections. Каждый раздел имеет dimension (ширина и высота). Есть много ads, каждый из них также имеет измерение. Представьте, что объявление может показываться в нескольких разделах, а в разделе может быть несколько вращающихся объявлений. Таким образом, отношения между разделами и рекламой многие-ко-многим, но с ограничением, что они должны иметь одинаковое измерение.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

Я думаю, что это бизнес-правило, которое должно соблюдаться в коде. Раздел: Объявление как M: M уже нормализовано.

Однако я не уверен, что вам нужна таблица Dimension, если вы думаете, что это таблица «А» в вашем примере.

0 голосов
/ 25 апреля 2011

Вы уже определяете отношения B: C с этими двумя отношениями: A: B - 1: M A: C - 1: M

Не понимаю, зачем вам таблица отношений B: C.


Учитывая ваш пример, я вижу только две таблицы. У рекламы есть ширина и высота, но есть соотношение 1: 1, поэтому ширина и высота - это просто поля в таблице объявлений. Разделы также имеют отношение 1: 1 к ширине и высоте. Всего две таблицы. Я также не вижу строгой связи между рекламой и разделами.

...