общее моделирование базы данных и специфическое для Django моделирование - PullRequest
0 голосов
/ 06 августа 2010

Мне интересно, как лучше всего смоделировать что-то вроде следующего.

Допустим, моя компания продает металлические стержни (параметры / поля: длина, тип профиля, количество и т. Д.) Различных профилей, где профили могут быть труба (pipe_diameter, wall_thickness) или hollow_rectangle (основание, высота, wall_thickness) или какой-то другой профиль с другими параметрами. Допустим, максимальное количество профилей будет 12, каждый из которых имеет от 2 до 5 параметров.

Должно ли все быть в одной таблице, например table_bars: id, длина, количество, profile_type, pipe_diameter, wall_thickness, base, height и т. д.) где тип профиля будет (труба, прямоугольник и т. д.)

или каждая фигура должна иметь свою собственную таблицу со своими параметрами и в table_bars оставить только id, длину, количество profile_type и profile_id)

и есть ли какие-либо специфичные для django проблемы, если несколько таблиц - лучший ответ?

Спасибо

1 Ответ

0 голосов
/ 15 января 2011

Это классическая проблема, которая сводится к вашему собственному мнению.У меня был такой случай много лет назад, и я пошел за обобщением параметров в одной таблице.Затем я создал вторую таблицу, которая содержала описания параметров, основанных на профиле, и флаги, для которых они были обязательны, необязательны или игнорировались.

Вы можете указать следующие параметры:

Длина: Универсальнаядля всех, нет?

WidthOuter1: может быть высота квадрата или прямоугольника, радиус трубы и т. д.

WidthOuter2: игнорируется для трубы и квадрата, требуется для прямоугольника

WidthInner1: игнорируется для твердых объектов, требуется для пустотелых.Рассматривается так же, как WidthOuter1, т. Е. Радиус для труб, размер квадрата, первое измерение для прямоугольников

WidthInner2: те же идеи, что и для WidthOther2 и Widthinner1

... И, возможно, другие ваши свойства приведутк тому же обращению.

...