Таблица базы данных Sqlite: может ли массив стать одним столбцом записи? - PullRequest
0 голосов
/ 25 мая 2009

Я разрабатываю приложение для iPhone, которое должно хранить данные в базе данных Sqlite.

Одна запись таблицы выглядит как -

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

Обратите внимание, что один столбец в записи является массивом, а размер массива не фиксирован. Размер может быть нулевым или любым положительным целым числом.

Мой вопрос: когда я проектирую таблицу Sqlite, могу ли я указать массив как один столбец записи? Если НЕТ, как мне оформить эту таблицу?

ОБНОВЛЕНИЕ: Спасибо за ответ. Кажется, ответ на мой вопрос - НЕТ. Если да, могу ли я использовать другие методы архивирования, скажем, Property List или NSKeyedArchiver, чтобы реализовать это?

Ответы [ 2 ]

1 голос
/ 25 мая 2009

Вы не можете сделать это и быть нормализованным. Ваше собственное требование размера «не фиксировано» говорит вам, что это невозможно. Это верно независимо от того, как вы его кодируете или какую структуру данных вы выбираете. Это природа реляционных баз данных. Вы захотите прочитать о нормализации , чтобы понять это полностью.

Звучит как отношение внешнего ключа один ко многим. Вам понадобится одна таблица для Записи и другая для любого объекта, попадающего в этот массив. Вторая таблица будет иметь внешний ключ, который указывает на первичный ключ первого.

Я бы порекомендовал более описательное имя, чем «Запись». Это кажется мне слишком общим.

0 голосов
/ 26 мая 2009

Вы можете сериализовать массив на диск и сохранить имя файла / путь в базе данных для этого столбца.

Очевидно, что вы не сможете запросить что-либо в массиве, но ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...