2015-04-30 5 views
0

У меня есть таблица foo. В foo 4 колонны: id, barTypeA, barTypeB, barTypeC. Единственный ключ-кандидат - id. barTypeA, B, C - все нестандартные атрибуты. Атрибуты являются технически не просто списком; тот факт, что a bar имеет тип A, B или C, не является тривиальным. Однако barTypeA, B и C являются общими.Модель как один на один или один на один Отношения

Я мог бы сделать эту таблицу на три таблицы (например, foo, fooToBar и barType) с отношением один-ко-многим из foo к fooToBar, но я интересно, если/как оригинальный дизайн нарушает стандарт проектирования баз данных или нормальной формы.

+1

Я думаю, что это интересно - если это не абстрактно, скажите информацию о классе с 150 столбцами для каждого потенциального идентификатора студента, вы бы быстро поняли, почему это плохой дизайн. По какой-то причине, потому что это всего лишь 3 предмета, вы чувствуете, что ваш дизайн в порядке – Hogan

+0

Мои 2 цента: если ваша система не будет содержать больше баров, сохраните исходный дизайн. Существует такая вещь, как чрезмерная нормализация. –

+1

Я думаю, что @ZoharPeled в точности прав, если что-то реализовано и работает, возможно, нет причин для его изменения - с другой стороны, правила и методы нормализации существуют по какой-то причине .... – Hogan

ответ

0

Обычно вам требуется таблица соединений (fooToBar), если у вас есть отношения «многие ко многим». В случае «один к одному» и «один ко многим» идентификатор одного (foo) ссылается на записи во многих (bar).

Другими словами, если каждая запись в bar только когда подключен к одному foo входу, то bar нужно просто ссылаться на foo.id. Но если a bar можно связать с несколькими foo s, а foo можно связать с несколькими bar s, , тогда используйте таблицу соединения fooToBar.

+0

Хотя я прав, я не уверен, о чем спрашивает ОП. –

Смежные вопросы