2013-02-25 4 views
1

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

Я занимаюсь разработкой приложений для iOS с использованием SQLITE3 и которого один является лучшей практикой, когда дело доходит до разработки приложения?

ответ

0

Имея FKs немного походит на наличие управляемой памяти - сама система никогда не позволит вам сделать «оборванных указатель», независимо от того, насколько серьезно вы заблуждаетесь в реализации вашего приложения ,

Внешние ключи необходимы для обеспечения целостности данных. К ним относятся:

  • декларативные: Это делает их «очевидные» и более самодокументируемые, чем императивный код погребенным в глубинах реализации приложения.
  • Robust: Просто один багги приложения может привести к повреждению данных, поэтому важно иметь центральный механизм для обеспечения целостности данных, не может быть обойден приложениями.
  • Масштабируемость: В среде с одновременно, внедрение FKs правильно требует соответствующего управления параллелизмом (например, блокировки), который обычно может быть сделано гораздо более эффективно в СУБД, чем это было бы возможно на уровне приложений.

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

1

Лучшей практикой является наличие внешних ключей. Лично идея не иметь внешних ключей в реляционной базе данных мне чуждо. (извините за каламбур). Внешние ключи помогают обеспечить ссылочную целостность.

+0

Я всегда учился в университете, но это не то, что я вижу на предприятиях ... – periback2

+1

Да, я знаю. как сказал Гилберт Ле Блан, некоторые из них поступают из унаследованных систем, и некоторые из них поступают от разработчиков, оставляющих их, потому что они ленивы или во время разработки они были слишком строгими или громоздкими, а затем никогда не приближались к их внедрению – jfin3204

0

В далеком прошлом приложения были построены на базе иерархической или сетевой базы данных, в которой не было внешних ключей в качестве части базы данных. Иностранные ключи должны были быть закодированы в приложении.

Эти приложения в конечном итоге были перенесены в реляционные базы данных после многого ногами и крика. Я помогаю поддерживать приложение, перенесенное из IDMS в DB2 в 2011 году.

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

0

Поскольку вы разрабатываете приложение для iOS, в вашем случае дизайн Object Model Design и Database (Table) будет идти рука об руку (тогда данные сантехнического кода станут намного проще. В противном случае вы должны настроить данные для сантехнического кода в любое время, когда вы вносите изменения в свое приложение). С учетом сказанного, когда у вас есть отношение родитель-потомок к вашему объекту (одно-одно или одно-много картирование), они должны быть сохранены внутри вашего в таблице внешних ключей. Объект 'parent' переходит в таблицу Primary. объект «Ребенок» переходит в таблицу внешних ключей.

Если вы достаточно просты, вы также можете рассмотреть возможность хранения информации в формате XML. Тогда вам не нужно беспокоиться о дизайне схемы БД. Одна полезная ссылка для рассмотрения

http://www.informit.com/articles/article.aspx?p=1019623

0

Я удивляюсь, почему структура рельсов, похоже, не создает эти отношения в базе данных. Он использует Active Record для выполнения этих отношений.

Смежные вопросы