我正在设计一个iPhone应用程序,它需要将数据存储到Sqlite数据库中。
该表的一个记录看起来像 -
@interface Record:NSObject {
NSInteger primaryKey;
NSString *name;
NSInteger priority;
NSMutableArray *items;
};
请注意,记录中的一列是一个数组,并且数组的大小不固定。大小可以是零或任何正整数。
我的问题是:当我设计Sqlite表时,我可以将数组指定为记录的一列吗?如果不是,我应该如何设计这张表?
更新:谢谢你的回答。似乎我的问题的答案是否定的。如果是这样,我可以使用其他归档方法,比如Property List或NSKeyedArchiver来实现它吗?
答案 0 :(得分:1)
你无法做到并且被规范化。你自己的尺寸“不固定”的要求告诉你这是不可能的。无论您如何编码或选择哪种数据结构,都是如此。这是关系数据库的本质。您需要阅读normalization以完全理解它。
听起来像是一对多的外键关系。你需要一个表用于记录,另一个表用于该数组中的任何对象。第二个表将有一个指向第一个主键的外键。
我建议使用比“记录”更具描述性的名称。对我来说似乎太通用了。
答案 1 :(得分:0)
您可以将数组序列化到磁盘,并在该列的数据库中存储文件名/路径。
显然你无法查询数组中的任何内容,但是......