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

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

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

  1. Какие таблицы строить и как их связать
  2. Как разрабатывать дизайн для разных масштабов (от небольшого клиентского приложения до огромного распределенного веб-сайта)
  3. Как писать эффективные / действенные / элегантные SQL-запросы
serverfault.com/questions/68351/…
warren 30.09.2009 18:13
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
127
1
158 081
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

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

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

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

Начало проектирования баз данных: от новичка к профессионалу - Клэр Черчер?

enthusiasticgeek 06.12.2013 17:43

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

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

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

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

четвертое издание 2010 года может быть актуальным

rleir 20.07.2012 21:52

Книга Celko - это исследование ошибок и продвижение идеи реализации в коде того, что должно быть реализовано в базе данных.

PerformanceDBA 26.04.2015 05:05

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

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

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

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

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

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

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

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

ORM, все твои баллы - анти-база данных.

PerformanceDBA 26.04.2015 05:06

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

ArashM 23.08.2016 18:23

Head First SQL - отличное введение.

Я начал с этой статьи

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

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

Мне нравится это руководство, спасибо.

MsO 19.01.2016 07:20

Ссылка в этом ответе больше не работает.

Grizzly Peak Software 12.12.2017 20:19

Похоже, ссылка снова работает.

user8576017 11.09.2018 17:43

Ссылка больше не работает

jat255 30.10.2019 01:38

Мне очень понравилась эта статья .. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo

Другие вопросы по теме