繁体   English   中英

Grails域设计:继承还是具有可空属性的一类?

[英]Grails Domain Design: inheritance or one class with nullable properties?

我有一个域OrderItem

class OrderItem {
    Product product
    Packaging packaging
    //other details
}

class Product {
 //other details
}

class Packaging {
//other details
}

当前,OrderItem仅指Beers 产品是啤酒的类型。 包装是罐/瓶/桶/等。

然后,客户决定也出售啤酒的产品:烈酒,食材,纪念品等。

我认为这些都是OrderItem对象,但是系统当前将OrderItem视为Beers。 我应该如何介绍扩展模型? (注意:某些新商品没有产品,包装或两者都没有。)

  1. 继承 仍将OrderItem仅视为Beers。 然后,所有新项目将具有扩展OrderItem的自己的类。 利弊? 表是按层次结构还是按类?
  2. 在OrderItem中添加属性(某些属性可以为空)以区分新项? 像“类别”,“ someItemCode”,“ someItemPricing”等。

我喜欢第二个, 添加其他属性,例如categoryitemType

因此,在添加新字段时,迁移脚本必须为所有现有记录将itemType字段值设置为Beers (因为您拥有的所有产品都是Beers )。

我不知道您的哪个字段将为null ,但是如果您的OrderItem表仍然具有许多nullable列,则需要对其进行规范化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM