2013-08-26 5 views
0

Я разрабатываю приложение для WP8, которое может хранить документы из дюжины предопределенных типов (например, паспорт, страховка ...). Итак, у меня есть таблица с такими столбцами: int id, string name, int orderЛучшая структура базы данных

Проблема в том, что другие поля не одинаковы для разных типов документов.

Для паспорта будет: number int, photo Bitmap

Для страхования: number int, holder string

Первый способ решить эту проблему: хранить все данные в столбце XML. Во-вторых: сохраните каждый тип в выделенной таблице (я боюсь, что запрос Linq будет действительно огромным и медленным, чтобы получить данные из 10 разных таблиц). Третий: хранить все мета в других таблицах (например, таблица field_types, field_to_docs, field_values).

Я думаю, что самый быстрый способ будет, конечно, XML. Что вы думаете об этом? Как насчет сохранения растровых изображений в XML, или мне нужно создать другую таблицу специально для хранения растровых изображений, а затем синхронизировать их с ссылками из XML?

+0

* думаю самый быстрый способ будет, конечно, XML. * Nope. – Will

+1

Я имею в виду, что быстрее всего реализовать – Wayne

ответ

0

Я бы смоделировал основную таблицу документа, а затем небольшую таблицу для каждого типа документа с ее особенностями.

В ДОКУМЕНТЕ у вас будут все общие поля плюс тип документа В маленьких таблицах идентификатор к основной таблице и поля, уникальные для этого типа документа.

При извлечении документов вам придется делать JOIN по внешнему ключу, но должны быть быстрыми и простыми.

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