Есть несколько способов преобразовать данные столбца в данные строки. Использование функции «PIVOT»
select CheckBox0, CheckBox1, CheckBox2, CheckBox3
from
(
select Id, CheckBoxList
from yourtable
) d
pivot
(
max(Id)
for CheckBoxList in (CheckBox0, CheckBox1, CheckBox2, CheckBox3)
) piv;
Файлы будут вызывать меньше проблем в долгосрочной перспективе. Вы действительно не хотите обслуживать тонны файлов с вашего сервера баз данных, особенно при масштабировании
Предполагая, что изображения, которые вы собираетесь использовать, не очень велики, и их непомерное количество, я бы пошел с базой данных.
В настоящее время я использую базу данных Sqlite на нескольких различных устройствах Windows Mobile и WinCE с более чем 10 000 небольших изображений, хранящихся в виде больших двоичных объектов, и это прекрасно работает.
Я видел программное обеспечение, подобное нашему, работающее на том же оборудовании с использованием загрузки изображений на основе файлов, и оно было значительно медленнее. Конечно, это было на WinCE и другом программном обеспечении, так что это не лучший тест.
Я считаю, что с одной базой данных работать намного проще, чем со многими файлами изображений.
РЕДАКТИРОВАТЬ:
Не понял, что вы специально для среды iPhone. В этом случае я бы использовал БД только для простоты размещения всего контента в одном месте. Вам не придется беспокоиться о масштабируемости, потому что это не значит, что ваш iphone будет использоваться в качестве сервера или чего-либо еще.
Оригинальный ответ:
У меня нет ссылок, подтверждающих это, но я вспоминаю чтение в нескольких Исследования показывают, что «отсечка» составляет 1 МБ для эффективности BLOB-объектов. Но это может переместиться до 10 МБ с достаточно быстрым дисковым массивом. Полностью зависит от системы.
Таким образом, в сущности, учитывая вашу эффективность, любые данные меньшего размера лучше обслуживать БД, а все большее - просто индексировать в БД и оставлять в файловом кеше.
Это действительно зависит от вашего приложения. Хранение изображений в базе данных облегчит вашу жизнь, так как они доступны в одной точке, а не в отдельных файлах, которые могут пропасть. С другой стороны, многие изображения, которые являются довольно большими, могут оказаться слишком большими для базы данных SQLITE. В вашей ситуации я бы просто сослался на них в базе данных.
Мне нравится хранить изображения в файловой системе, потому что UIImage может кэшировать файлы изображений и автоматически выгружать их из памяти при необходимости. Просто будьте осторожны, чтобы не изменить или удалить файл изображения, загруженный в UIImage, иначе вы получите сбой или другие странные ошибки.