Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 我应该如何在面向对象设计中实现数据库中规范化的项?_Oop_Design Patterns - Fatal编程技术网

Oop 我应该如何在面向对象设计中实现数据库中规范化的项?

Oop 我应该如何在面向对象设计中实现数据库中规范化的项?,oop,design-patterns,Oop,Design Patterns,我应该如何在面向对象类中实现数据库中规范化的项?在数据库中,我有一个项目表和组。每个项目属于一个组: +----------------------------------------+ | Inventory | +----+------+-------+----------+---------+ | Id | Name | Price | Quantity | GroupId | +----+------+-------+------

我应该如何在面向对象类中实现数据库中规范化的项?在数据库中,我有一个项目表和
。每个项目属于一个组:

+----------------------------------------+
| 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
我将在GUI中使用OOP类,用户可以在其中编辑清单中的项目和组。用一堆项目进行计算也应该很容易。计算时需要VAT等组信息


我将编写一个
项目
类,但我需要一个
类吗?如果是这样的话,我应该把它们放在一个全局位置吗?或者当我需要它进行项目计算时,我应该如何访问它们?这个案例有什么设计模式吗?

是的,您需要一个组类。它看起来与库存有1:多的关系,其中Group是父项。组将引用一个集合或一组清单。

首先,最常见的做法是使用ORM(对象关系映射)工具。大多数现代OO语言都可以使用它们,它们负责生成与数据库交互所需的类,管理检索和更新,以及管理连接生存期


除此之外,是的,您需要一个
类,该类具有
的集合,并且(理想情况下)从
到其父
的引用。这是ORM可以提供帮助的领域之一,因为它可以确保这两个引用(子引用的集合和父引用)保持同步。

但是如果我将所有
保存在
类中,那么我必须将所有
都保存在内存中?这听起来很棘手,因为我不需要同时购买所有3000件物品。或许这是最好的解决方案。。要想一想,谢谢。如果不将某个特定组的所有项都保存在内存中(或者,至少是表示该项的内容,如果不是该项本身的话),就无法对组进行建模。不要过早地优化;3000个实例并非不合理。如果内存确实存在问题,您可以将ID保留在列表中,并根据需要延迟加载它们。ORM工具比您更好地解决了这一问题。
有1:M的关系,许多项可以在同一组中。