Руководство для начинающих по разработке базы данных SQL

Знаете ли вы хороший источник, чтобы узнать, как создавать SQL-решения?

Помимо базового синтаксиса языка, я ищу что-то, чтобы помочь мне понять:

  • Какие таблицы следует создавать и как их связывать
  • Как разработать для разных масштабов (небольшой клиентский APP на огромный распространенный веб-сайт).
  • Как написать эффективные/эффективные/элегантные SQL-запросы

Ответ 1

Я начал с этой книги: Реляционная база данных четко понята (серия Morgan Kaufmann в системах управления данными) (в мягкой обложке) от Jan L. Харрингтон и нашел его очень понятным и полезным

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

Я думаю, что дизайн SQL и базы данных разные (но дополнительные) навыки.

Ответ 2

Опыт очень важен, но с точки зрения дизайна таблицы вы можете много узнать о том, как работают ORM, такие как Hibernate и Grails, чтобы понять, почему они делают что-то. Кроме того:

  • Разделяйте разные типы данных - не храните адреса в таблице заказов, например, ссылайтесь на адрес в отдельной таблице адресов.

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

  • Мне также нравится иметь созданный и измененный столбец отметки времени.

  • Убедитесь, что каждый столбец, в котором вы выполняете "where column = val" в любом запросе, имеет индекс. Возможно, это не самый совершенный индекс в мире для типа данных, но, по крайней мере, индекс.

  • Настройте внешние ключи. Также устанавливайте правила ON DELETE и ON MODIFY, если это необходимо, для каскадирования или установки нулевого значения, в зависимости от структуры вашего объекта (поэтому вам нужно только один раз удалить "head" вашего дерева объектов и все объекты этого объекта получить удален автоматически).

  • Если вы хотите модулизовать свой код, вам может потребоваться модульная схема вашего БД - например, это область "клиенты", это область "заказы", ​​и это область "продуктов", и используйте таблицы соединений/ссылок между ними, даже если они являются отношениями 1: n и, возможно, дублируют важную информацию (то есть дублируют имя продукта, код, цену в таблице order_details). Прочитайте о нормализации.

  • Кто-то порекомендует точно противоположное для некоторых или всего из вышеперечисленного: p - никогда не один истинный способ сделать что-то eh!

Ответ 6

Прошло некоторое время с тех пор, как я его прочитал (так что я не уверен, насколько это все еще актуально), но мое воспоминание о том, что Joe Celko SQL для книги Smarties предоставляет много информации о написании элегантных, и эффективные запросы.

Ответ 7

Это вопросы, которые, по моему описанию, требуют разных знаний из разных доменов.

  • Вы просто не можете заранее знать "какие" таблицы для сборки, вам нужно знать проблему, которую вы должны решить, и разработать схему соответственно;
  • Это сочетание решения по дизайну базы данных и пользовательских возможностей поставщика базы данных (т.е. вы должны проверить документацию своих (r) dbms и в конечном итоге узнать некоторые "советы и рекомендации" для масштабирования), а также конфигурацию ваших dbms имеет решающее значение для масштабирования (репликация, разбиение данных и т.д.);
  • почти каждый rdbms поставляется с определенным "диалектом" языка SQL, поэтому, если вам нужны эффективные запросы, вам нужно изучить этот конкретный диалект --btw. скорее всего, пишут элегантный запрос, который также эффективен - это большое дело: элегантность и эффективность часто противоречат целям -

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