繁体   English   中英

iPhone-核心数据模型

[英]iphone - core data model

我是核心数据的新手。 我想知道如何为该应用程序设计数据模型。

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

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

书籍可以分为两种:免费或非免费。 书籍可以单独出售或成捆出售。 一捆书可以代表一堆书。 一本书可以成一捆或多捆。

我需要的:

  1. 将捆绑包或/和书籍标记为已付费的功能。
  2. 检索所有非免费或所有免费书籍,捆绑销售中的所有书籍以及所有已购买书籍的功能。

我如何想象这是怎么做的:我将创建3个实体:Bundle,Product和Type,并将所有产品捆绑在一起,我的意思是将一个产品捆绑或包含多个产品。

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

但是我不确定这不是唯一的方法,因为没有办法用所有四种语言定义捆绑软件名称,如果我将这些属性添加到捆绑软件中,将导致大量冗余...

请帮助meeeeeee! 谢谢。

您可能会因引入产品和类型而使这一过程变得过于复杂-您真正需要的只是Book和Bundle实体,它们之间具有多对多关系。 然后,要处理您提出的用例:

  1. 标记捆绑或已付款的书:对于一本书,只需标记已付款的书即可; 对于捆绑包,请标记其所有已付款的书。
  2. 对于数据检索:
    • 要检索所有非免费书或所有免费书,只需获取将free属性设置为适当值(或price值为零或非零,取决于您存储此属性的方式)的Book实体的实例
    • 要从给定的丛书中检索所有图书,只需调用[bundle books] -多对多关系可直接为您提供
    • 要检索所有已购买的图书,只需查找标记为已paid图书

这样,您可以在Book本身上保留四个名称属性,而不必担心它们(除非您必须命名Bundles,但无论如何它们都应该是不同的名称)。 此外,它在概念上很简单-您不必担心确切构成产品或这种语义的内容。

暂无
暂无

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

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