尝试为iOS

时间:2015-11-10 05:26:25

标签: ios core-data

我有一个关于核心数据建模的问题,我想问一下。

我正在开发一款可以帮助用户记忆诗歌的应用。这首诗分为以下几种:

  1. 这首诗分为多个章节

  2. 每章分为多行

  3. 现在,因为这个,我想我会创建两个实体,如下所示:

    1. 章节实体,具有属性:ChapterNumber,ChapterTitle和LineEntity。
    2. LineEntity,带有属性:ChapterNumber,LineNumber,LineSegment(每行分为两部分,a和b)和LineText
    3. 因为我打算为用户播放音频,我也需要对音频文件的引用,这就是为什么我认为我需要AudioFile的实体。因此我也会:

      1. AudioFile实体,具有以下属性:ChapterNumber,LineNumber,Start(相关音频开始的时间点),End(相关音频结束的时间点),以及可能的fileName。我有一个长文件用于整个音频,但是,我想知道我是否应该将音频文件分解为单独的组件,其中每个文件代表诗中的每一行。我个人不确定这是否是正确的方法。
      2. 所以我的章实体会调用一行Line实体,而每一行对象都会引用一个音频实体。这有意义吗?

1 个答案:

答案 0 :(得分:1)

我可以想象每首诗都有一个音频文件,每个Line Entity都应该引用该音频文件的一部分。我会创建该实体“AudioFile”,但我会将其称为“AudioFileSplit”(正如您所说)字段: ReferenceToLineEntity,Start,End。 请注意,您不需要此实体中的字段ChapterNumber或LineNumber,因为这个新实体已经引用了它们(使用行引用可以获取行数据,章节数据和诗歌数据)。

现在,您需要存储音频文件的URL。可能你有一个叫做“诗”的实体。如果每首诗都有一个音频文件,你应该为诗实体添加一个新字段(AudioFileURL可能吗?)

恢复,我的Modell会像

PoemEntity:[诗歌领域],AudioFileURL,ReferenceToChapters

ChapterEntity:[Chapter for Chapter],SingleReferenceToPoem,ReferenceToLines

LineEntity:[字段为ine],SingleReferenceToChapter,SingleReferenceToAudioFileSplit

AudioFileSplit:SingleReferenceToLine,开始,结束

请注意,LineEntity和AudioFileSplit之间的关系是1:1,所以你甚至可以简化它:

LineEntity:[Line For Line],SingleReferenceToChapter,Start,End。 (并没有AudioFileSplit实体)

问候;)