我在DB中有两个表
正如我们所看到的,两个表都通过链接。外键(fuel_brand_id)
现在,我想设计一个与上述数据模型相对应的对象模型,但我很困惑使用以下两种方法的方法:
FuelStation
类并将 String
中的燃料品牌存储在 FuelStation
上课。OR
FuelStation
和 FuelBrand
。然后将它们与多对一关系联系起来,因为一个加油站将只有一个燃料品牌但只有一个燃料品牌可以有很多加油站。Q1。哪种方法更好?
Q2。每种方法的优缺点是什么?
Upto My Knowledge:
方法2的优点
它使我们的对象模型更加细化。
度Acc。对于良好的设计原则,我们的对象模型必须至少与关系模型一样精细。方法2遵循该原则
方法1的优点
- 无需为每个 FuelStation
为 FuelBrand 创建单独的对象
答案 0 :(得分:2)
- 只制作一类FuelStation并将燃料品牌存储为FuelStation类中的String。
- 制作两个类:FuelStation和FuelBrand。然后将它们与多对一关系联系起来,因为一个燃料站只有一个燃料品牌,但一个燃料品牌可以有许多加油站。
醇>
这两种方法之间没有明确的通用选择,因为很多方面取决于背景。一些决定因素:
FuelBrand
属性发生变化,或引入新属性?如果是这样,那么再次使用第二种方法会更好 - 否则FuelBrand
中的任何更改都需要更改FuelStation
类。作为一个底线,第二种方法更灵活,所以我更愿意,即使现在没有可预见的变化明确要求这种设计 - 在SW开发中,永远不要说永远: - )
答案 1 :(得分:1)
哪一个更好取决于您想要对信息做什么。
a)如果列出所有提供某个品牌的电台很有意思,您可能还想选择从FuelBrand名称到FuelStations集合的某种地图。
b)如果燃料品牌已经或将要拥有您想要使用的任何属性(价格等),最好从中选择一个类。答案 2 :(得分:0)
无需为每个FuelStation为FuelBrand创建单独的对象
任何一种方法都有相同数量的对象 - 您要么有N个FuelBrand对象,要么有N个字符串对象,N可以是品牌数量,也可以是站点数量,具体取决于您是否重复使用这些对象。所以这个论点似是而非。
我倾向于用一个类代表每个表,因为它确实表明品牌是品牌而不是另一个品牌。它也适用于关系模式允许的具有相同名称的不同品牌,即使它不太可能。