Sqlite数据库表:一个数组可以成为一列记录吗?

时间:2009-05-25 01:55:07

标签: iphone sqlite

我正在设计一个iPhone应用程序,它需要将数据存储到Sqlite数据库中。

该表的一个记录看起来像 -

@interface Record:NSObject {
    NSInteger primaryKey;
    NSString *name;
    NSInteger priority;
    NSMutableArray *items;
};

请注意,记录中的一列是一个数组,并且数组的大小不固定。大小可以是零或任何正整数。

我的问题是:当我设计Sqlite表时,我可以将数组指定为记录的一列吗?如果不是,我应该如何设计这张表?

更新:谢谢你的回答。似乎我的问题的答案是否定的。如果是这样,我可以使用其他归档方法,比如Property List或NSKeyedArchiver来实现它吗?

2 个答案:

答案 0 :(得分:1)

你无法做到并且被规范化。你自己的尺寸“不固定”的要求告诉你这是不可能的。无论您如何编码或选择哪种数据结构,都是如此。这是关系数据库的本质。您需要阅读normalization以完全理解它。

听起来像是一对多的外键关系。你需要一个表用于记录,另一个表用于该数组中的任何对象。第二个表将有一个指向第一个主键的外键。

我建议使用比“记录”更具描述性的名称。对我来说似乎太通用了。

答案 1 :(得分:0)

您可以将数组序列化到磁盘,并在该列的数据库中存储文件名/路径。

显然你无法查询数组中的任何内容,但是......