2009-06-17 3 views
1

Я пытаюсь смоделировать продуктовый магазин. В магазине есть несколько «проходов». Каждый «проход» имеет группу «категорий» «предметов», которые он хранит. Каждая «категория» может принадлежать только одному «проходу». Каждый «элемент» может иметь только одну «категорию».Дизайн модели данных и дизайн доменной модели

модель данных, кажется, прямо вперед мне:

«придел» стол
  • с ID и описанием
  • «категория» столом
  • А с ID, NAME и AISLE_ID, что ссылка, в «междурядье пункт „таблица с ID, название, описание и cATEGORY_ID, что ссылки„"таблица
  • Термин“ категория“

объектная модель является, где мне нужна помощь:

  1. Объект Aisle может иметь список объектов Category и Item внутри него.
  2. Объект Aisle может иметь список объектов категории. Объект Category может иметь в себе список объектов Item.
  3. Проход может иметь список предметов предметов. Объект Category может иметь список объектов Item.

В каждом случае элемент будет логически иметь объект Category внутри него. У меня есть DAO для каждого объекта домена, поэтому в зависимости от того, как это делается, sql немного меняется. Есть предположения?

+1

У них есть конфеты и таблоиды почти на каждом острове.Будет ли это более точной моделью продуктового магазина? –

ответ

1

Я голосую за выбор # 2. Имеет больше смысла, чем # 1 или # 3.

Считаете ли вы, что отношения должны быть двунаправленными? Должен ли элемент иметь возможность выяснить, кто является его родительской категорией и бабушкой и бабушкой?

+0

@duffymo Это очень хороший вопрос. Сейчас моя модель поддерживает двунаправленную связь между категорией и элементом. Это становится немного напуганным, так как он будет формировать циклические отношения: SI может потребоваться включить только «мелкие» отношения, в которых элемент имеет категорию, но категория заполняется только его идентификатором и NAME и * не * всеми элементами, которые попадают в эту категорию. Что вы думаете об этом? – djunforgetable

+0

@dj: Тогда это определенно # 2, потому что таким образом вы можете иметь категорию с пустым списком. «inverse = false» прерывает цикл с точки зрения гиберната. – duffymo

+0

@duffymo, когда я загружаю данные из стойкости, должна ли присутствовать вся структура? Например, при загрузке объекта Aisle все категории, содержащиеся в нем, имеют все элементы, содержащиеся в категории? – djunforgetable

1

Я бы поехал с выбором № 2.

Основная забота Района заключается в том, какие категории содержатся в нем. Для определения того, какие элементы являются членами, должно соответствовать классу Category. Это позволяет соответствовать уровням абстракции в каждом объекте, где Aisle - объект более высокого уровня. Категория - это немного более подробный уровень, и элемент является наиболее зернистым.

1

Номер 2 имеет смысл, если это ваши 3 варианта.

Я думаю, если бы я, чтобы создать эту модель, я хотел бы использовать следующую модель (небольшая модификация, просто пытается остаться как можно ближе к вашим идеям, насколько это возможно):

Объект придел может иметь список категория объектов, объект категории может иметь список объектов объекта внутри него, и элемент связан с категорией И проходом.

Мое изменение, похоже, больше на стороне данных.

Причина, по которой я бы это сделал, заключается в том, что кто-то говорит: «Эй, я ищу этот предмет, в каком проходе он находится?» - 1 поиск даст вам ответ. тогда как с вашей моделью данных вам потребуется 2 поиска.

По крайней мере, так я думаю об этом.

+0

@Sev Я согласен с вами. Мой комментарий будет в соответствии с моими комментариями к duffymo вверху, поскольку может иметь смысл сохранять «неглубокие» отношения, в результате чего скомпонованный объект не содержит каких-либо дополнительных скомпонованных объектов. – djunforgetable

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