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的关系,许多项可以在同一组中。