iphone - 核心数据模型

时间:2011-01-16 18:07:06

标签: iphone database-design core-data

我是核心数据的新手。我正在试图理解如何为这个应用程序设计数据模型。我正在试图理解这个应用程序的数据模型。

我必须为图书创建一个数据库。

Books have the following characteristics:
.englishName
.italianName
.frenchName
.spanishName
.number

书籍可以是两种:免费或非免费。 书籍可以单独出售或捆绑销售。 捆绑可以代表一堆书。 一本书可以包含在一个或多个包中。

我需要什么:

  1. 标记为付费的能力 捆绑或/和预订。
  2. 能够检索所有非免费或全部免费 书籍,所有书籍,所有书籍 被买的书。
  3. 我怎么想象这可以做到:我会创建3个实体:捆绑产品,产品和类型,并制作所有产品捆绑,我的意思是捆绑一个产品或多个产品。

    Bundle
    .Number
    .Paid
    -relation to product (fromBundle) to-many
    
    
    Product
    .nameEN
    .nameIT
    .nameFR
    .nameSP
    .Number
    -fromBundle (relation to Bundle) to-many
    -fromType (relation to Type)
    
    
    Type
    .kind
    -relation to Product... to-many
    

    但我不确定这不是方法,只是因为没有办法在所有4种语言中定义包名称,如果我将这些属性添加到包中,我将以大量冗余结束... < / p>

    请帮助meeeeeee!感谢。

1 个答案:

答案 0 :(得分:1)

通过介绍产品和类型,您可能会过度复杂化 - 您真正需要的只是Book和Bundle实体,它们之间存在多对多关系。然后,处理您提交的用例:

  1. 标记已付款的书籍或书籍:对于书籍,只需标记已付款的书籍;对于捆绑,标记所有已支付的书籍。
  2. 用于数据检索:
    • 要检索所有非免费或所有免费图书,只需获取图书实体的实例,并将free属性设置为适当的值(或price值为零或非零,具体取决于方式你正在存储这个属性)
    • 要从给定的捆绑包中检索所有图书,只需致电[bundle books] - 多对多关系直接为您提供此
    • 要检索已购买的所有图书,只需查找标有paid
    • 的图书
  3. 这样,您可以在Book本身上保留四个名称属性而不用担心它们(除非您必须命名Bundles,但这些名称应该是不同的名称)。此外,它在概念上很简单 - 您不必担心产品的精确构成或这种方式的语义。