Как реализовать элементы, нормализованные в базе данных, в объектно-ориентированном проектировании? - PullRequest
3 голосов
/ 28 мая 2010

Как реализовать элементы, нормализованные в базе данных, в объектно-ориентированных классах?

В базе данных у меня есть большая таблица предметов и меньшая группа. Каждый предмет принадлежит одной группе.

Вот так выглядит мой дизайн базы данных:

+----------------------------------------+
| Inventory                              |
+----+------+-------+----------+---------+
| Id | Name | Price | Quantity | GroupId |
+----+------+-------+----------+---------+
| 43 | Box  | 34.00 |     456  |     4   |
| 56 | Ball | 56.50 |       3  |     6   |
| 66 | Tin  | 23.00 |      14  |     4   |
+----+------+-------+----------+---------+
Totally 3000 lines

+----------------------+
| Groups               |
+---------+------+-----+
| GroupId | Name | VAT |
+---------+------+-----+
|     4   | Mini | 0.2 |
|     6   | Big  | 0.3 |
+---------+------+-----+
Totally 10 lines

Я буду использовать классы ООП в графическом интерфейсе, где пользователь может редактировать Предметы и Группы в инвентаре. Также должно быть легко делать расчеты с кучей предметов. Для расчетов необходима групповая информация, такая как НДС.

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

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

Прежде всего, самая распространенная практика - это использование инструмента ORM (объектно-реляционное отображение). Они доступны большинству любого современного языка ОО и занимаются созданием классов, необходимых для взаимодействия с базой данных, управления поиском и обновлением и управления временем жизни соединения.

Помимо этого, да, вам нужен класс Group, который имеет коллекцию Item с и (в идеале) ссылку от Item на его родительский Group. Это одна из областей, в которой ORM может помочь, поскольку он может обеспечить синхронизацию этих двух ссылок (коллекции дочерних элементов и родительской ссылки).

1 голос
/ 28 мая 2010

Да, вам нужен групповой класс. Похоже, что он имеет отношение 1: много с Inventory, где Group является родителем. Группа будет иметь ссылку на коллекцию или набор инвентаризации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...