Лучшие практики проектирования баз данных [закрываются]

Эти два не совсем идентичны. Разница в том, что в первом примере не будет обнаружено исключение, которое было бы выбрано в вашем обработчике success. Поэтому, если ваш метод должен только возвращать разрешенные обещания, как это часто бывает, вам нужен трейлинг-обработчик catch (или еще один then с пустым success параметром). Конечно, может быть, ваш обработчик then не сделает ничего, что потенциально может потерпеть неудачу, и в этом случае использование одного 2-параметра then может быть прекрасным.

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

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

58
задан Jonathan Leffler 22 December 2008 в 21:46
поделиться

14 ответов

Несколько точек:

  • Изучают столько, сколько Вы можете [приблизительно 116] проблемная область . Вы не можете создать хорошую модель данных, не зная то, что Вы разрабатываете для
  • , Имеют хорошее знание [приблизительно 117] типы данных обеспеченный Вашим поставщиком БД
  • , Как правильно использовать нормализация и таблицы дизайна
  • Производительность: то, когда и как подать заявку индексы , как записать эффективный запросы и т.д.
  • , Когда и как использовать различные объекты DB как представления, процедуры, функции, инициировало
45
ответ дан Rockcoder 7 November 2019 в 15:21
поделиться

Существуют многочисленные шаблоны проектирования баз данных. Они не часто приятно формализуются, таким образом, Вам, вероятно, придется просто посмотреть на большое проектирование баз данных.

Посмотрите, например, книги Fowler на шаблонах разработки. Также Книга .

Зарубки Там блоги, как программист баз данных .

существует книга IEEE, На Основанном на шаблоне Проектировании баз данных и Реализации .

Google Search ( ссылка ) поднятый 24M хиты.

24
ответ дан S.Lott 7 November 2019 в 15:21
поделиться

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

Иногда это может быть твердо. С внутренними Приложениями отделов организации преобладающее представление бизнеса часто является временами, что ДАННЫЕ являются основным активом, где, поскольку программное обеспечение несколько потребляемо.

Мой совет был бы: не покупайте его.

В действительности актив является способностью компании ВЗАИМОДЕЙСТВОВАТЬ с данными. Просмотреть его, управлять им и принять решения на основе его.

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

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

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

Это делает структуру базы данных чрезвычайно гибкой.

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

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

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

изменения Внесения в пользовательский опыт Вашего приложения, однако, является обычно более дорогим. Работа UI является трудоемкой, и обычно требует времени для разбираний.

Так, я рекомендовал бы что Вы:

  1. Просто производят дрянной дизайн
  2. DB, Реагируют на фактические сценарии производительности, с которыми Вы встречаетесь
  3. Фокус Ваши усилия на пользовательском опыте, не на базе данных
20
ответ дан Scott Wisniewski 7 November 2019 в 15:21
поделиться

Противостоять совету Dillie-O. Я предложил бы, чтобы Вы не делали , помещает все Ваши поиски в одну таблицу. В целом это - попытка вызвать дизайн OO в Реляционную базу данных. Это может быть сделано, и это соответствует мировоззрению разработчика OO, но это приводит к нанесению вреда проектированиям баз данных.

Возврат к Google и поиску "Таблиц НАВОЗА", которые приводят Вас к обсуждениям В широком масштабе Объединенных Ключевых для кода Таблиц. С другой стороны, можно искать "одну истинную таблицу поиска" для обсуждений. Или даже прочитайте статью Joe Celko Одна Истинная Таблица поиска .

7
ответ дан Nik Hughes 7 November 2019 в 15:21
поделиться

Не храните вычисленные значения

Пример, у Вас есть таблица "Квадраты" со столбцом "ширина". Никакая потребность сделать столбец "областью", потому что это может быть вычислено через ширину ^ 2

4
ответ дан 7 November 2019 в 15:21
поделиться

Я не нашел то, что я искал в этом вопросе, но этот имеет набор рекомендаций для скороговорок дизайна в дизайне

DB
5
ответ дан Community 7 November 2019 в 15:21
поделиться

Лучшая книга, которую я когда-либо читал в отношении проектирования баз данных, является "Проектированием баз данных для Простых Смертных" Michael J Hernandez. Имя походит на книгу новичков, но люди на любом уровне могли получить знание от него. Это также независимо от платформы, поскольку это имеет дело с рассмотрением самих данных и как правильно организовать его - не используемая технология.

Он также записал книгу по записи запросов, названных "SQL-запросы для Простых Смертных", которых я услышал (не читали, этот сам все же) довольно хорошо.

Проектирование баз данных для Простых Смертных

3
ответ дан William Holroyd 7 November 2019 в 15:21
поделиться

Как с чем-либо, ответ здесь, "Он Зависит".

Базы данных могут использоваться, чтобы сделать разные вещи, и некоторые из тех вещей потребуют противостоящих направлений в проектировании и разработке.

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

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

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

3
ответ дан BQ. 7 November 2019 в 15:21
поделиться

Реляционная база данных является чрезвычайно мощной абстракцией; это - набор фактов и исчисления предикатов. Не только, что, SQL осуществляет разделение запроса команды при наличии одного пункта для исследования строк и другого для изменения строк.

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

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

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

Наконец, слово на хранимых процедурах, а не прямых запросах. На достойной базе данных можно установить права доступа на хранимых процедурах независимо от базовых таблиц. Это, отдельно, является причиной достаточно для рассматривания использование хранимых процедур экстенсивно. С хранимыми процедурами Вы создаете модель повышения безопасности, чем возможно с прямым доступом SQL.

3
ответ дан Simon Johnson 7 November 2019 в 15:21
поделиться

если Вы не документируете перечисления в столбце описания схемы так, чтобы я мог выяснить то, что эти '5' находится в этом:

Select name from peeps where accountStatusId = 5

тогда делают это

Использование таблица для перечисления поля. например:

Select name 
from peeps p 
join accountStatus s 
on p.accountStatusID = s.asid 
where s.accountStatus = 'ActiveDude'
2
ответ дан missaghi 7 November 2019 в 15:21
поделиться

Книга Michael J. Hernandez Проектирование баз данных для Простых Смертных правильно написана, и легкое чтение. Это должно ответить на все Ваши вопросы.

Hernandez также создал в соавторстве SQL-запросы для Простых Смертных с John L. Viescas.

книги составляют приблизительно 60$ за часть. Я пытаюсь найти CD для Запросов для Простых Смертных, потому что я потерял мой. Если у кого-либо есть копия, сообщить мне.

2
ответ дан 7 November 2019 в 15:21
поделиться

я сказал бы, что, пока база данных нормализована и если Вы заставляете VLDB затем разделить ее правильно тогда, необходимо быть в порядке. другие лучшие практики включают CRUD использования для хранимых процедур и гарантируя, чтобы все таблицы расположились каскадом правильно. большинство все остальное субъективно. Используя "Y/N" старое школьное программирование базы данных от того, когда бит еще не был представлен. Это может также использоваться в целях масштабируемости как "Y/N/Maybe", но если бы это было методами лыка случая, то сказал бы, чтобы нормализовать это и сделать таблицу поиска.

0
ответ дан Russ Bradberry 7 November 2019 в 15:21
поделиться

Одно понятие, которое мы используем здесь, который оказался довольно хорошим, является таблицей "Lookup Code". Если у Вас есть база данных, которая имеет много ссылок на объекты, которое эффективно кодирует, или типы, и т.п., сохраняют всех их в единственной таблице LookupCode, которая основывает вещи прочь CodeGroup и самого Кода.

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

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

-1
ответ дан Dillie-O 7 November 2019 в 15:21
поделиться

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

2
ответ дан Pete OHanlon 7 November 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: