-2

假设我有 3 个课程:

用户

建造

这些中的每一个都有其相关的属性。例如

用户有姓名、年龄、电子邮件
建筑物有年龄、房间、火警
汽车有品牌、座位、最高速度

假设我有一个数据库,用于存储用户与建筑物以及用户与汽车之间的关系。

在我的Building类中,我的save_building方法需要user_id

我在这里有两个选择。

1)我可以在Building类中重新创建user_id属性(冗余且脆弱,也需要在Car类中复制)或2)我可以直接引用 user 对象并获取user_id

这些似乎都不“正确”。

当我设置我的属性时,我也会验证它们,然后将这些验证的任何错误存储在对象本身中。如果我使用选项2,我必须在允许我的 save_building 方法继续之前检查另一个对象是否有错误,而不仅仅是检查我正在使用的对象。

选项1是正确的前进方式还是选项2

编辑:为清楚起见,数据库关系表如下:

user_buildings: user_id, building_id
user_cars: user_id, car_id

Edit2:使问题非开放式。

4

1 回答 1

0

用户和建筑物之间的关系必须存储在数据库中,因此显然需要以某种方式在您的类中体现出来。为了建立对象的关系而存储对象引用并没有什么多余的,所以不要认为它是多余的。唯一可能被删除的冗余是让用户和建筑物相互指向,而不是只有一个点指向另一个。这有点像一个人应该使用单链表还是双链表的问题。

鉴于您的两个选项,我更喜欢选项 1,因为在用户未知的情况下,您可以将其设置为比或在用户未在数据库中查询/加入的情况下null更具语义0或任何整数等价物或-1尚不存在任何关系。

您没有列出的另一个选项是不save_building知道用户和建筑物之间的关系变化。也许这个功能应该只在用户类中处理。也许您想要一个新的类 building-owner 类,其目的是处理此功能。

于 2014-07-09T01:56:30.290 回答