Я думаю о лучшем способе сохранить личные контакты в базе данных для бизнес-приложения. Традиционный и простой подход должен был бы составить таблицу со столбцами для каждого элемента, т.е. Имя, Номер телефона, Должность, Адрес, и т.д... Однако существуют известные промышленные стандарты для этого вида данных, как, например, vCard, или мангольд, или vCard-RDF/XML или даже Windows Contacts XML Schema. Использование стандартного формата предложило бы некоторые преимущества, как inter-operablilty с другими системами. Но как я могу решить который метод использовать?
Требования состоят в том, чтобы главным образом хранить данные. Поиск и заказывающие запросы очень маловероятны, но возможны. Объем данных является 100 000 записей в максимуме.
Мой механизм базы данных поддерживает собственные столбцы XML. Я думал для использования некоторого основанного на XML формата для хранения личных контактов. Затем будет возможно использовать индексы XML на этих данных, если поиск и упорядочивание будут необходимы. Действительно ли это - хороший подход? Который связывается с форматом и схемой, Вы рекомендовали бы для этого?
Отредактированный после первых ответов
Вот то, почему я думаю, что простой подход плох. Это происходит из-за природы этого вида данных - не то, чтобы просто.
Не похоже, что у вас есть какие-либо реальные проблемы с производительностью или пространством. Так что используйте то, что требует меньше времени на разработку и поддержку!
Вы можете разрешить экспорт данных в форматы vCard/hCard и т.д., но не используйте их в качестве бэкенда для хранения данных вашего приложения, если вы не считаете, что это приведет к сокращению времени на кодирование/обслуживание.
Форматы, которые вы упомянули, являются отличным способом обмена данными между системами, но не идеальны для хранения в базе данных. Не позволяйте стандартам обмена данными диктовать дизайн базы данных. Какой бы дизайн базы данных вы ни использовали, вы всегда можете создать службу или программу, которая открывает данные в формате XML для внешнего использования.
Что не так с обычным подходом к базе данных. Как вы сами упомянули - существует несколько разных форматов, и если вы реализуете один, вы нарушите совместимость с другими системами. С подходом к базе данных вы можете позже написать плагины для каждого формата, необходимого для связи с внешними приложениями - VCard или что-то еще.
Я бы, вероятно, установил «нормальную» структуру таблицы для «обычных» битов данных (имя, адрес, телефон и т. Д.), А затем имел бы отношение один-> много к отдельной таблице custom_fields. который содержит три столбца:
user_id (внешний ey), fieldtype (string), data (string / blob)
В качестве альтернативы вы можете просто добавить blob или текстовое поле в основную таблицу контактов, содержащую форматированный список настраиваемых сопоставлений полей / значений (вы можете использовать BSON, JSON или YAML, чтобы упростить жизнь). Затем просто распакуйте данные, когда пользователь откроет контакт.
Если вам нужна более высокая производительность и возможность легко сортировать контакты по настраиваемым полям, вы можете изучить базовые программы баз данных, ориентированные на документы, такие как MongoDB, или даже собственно поисковую систему (SOLR или Google .. idk ..) Может быть, это перебор, но может быть и интересный проект!
Существует много, много, много способов связать настраиваемые поля и значения с записями в «нормальной» базе данных. Просто выберите тот, который вы понимаете и можете быстро написать, и дерзайте. Я никогда не видел, чтобы компания / работодатель заботился о «соответствии стандартам» системы хранения данных. Пока вы пишете какой-то сценарий экспорта или (как уже упоминалось) пишете плагины для поддержки бесшовного импорта / экспорта VCARD / XML , вы можете заявить, что ваше приложение «соответствует стандартам».