Вы знаете хороший источник, чтобы научиться разрабатывать решения SQL?
Помимо базового синтаксиса языка, я ищу кое-что, что поможет мне понять:
- Какие таблицы строить и как их связать
- Как разрабатывать дизайн для разных масштабов (от небольшого клиентского приложения до огромного распределенного веб-сайта)
- Как писать эффективные / действенные / элегантные SQL-запросы
sql
database
database-design
scalability
ripper234
источник
источник
Ответы:
Я начал с этой книги Яна Л. Харрингтона : « Четкое объяснение дизайна реляционной базы данных (Серия Моргана Кауфмана в системах управления данными)» (в мягкой обложке) , и нашел ее очень ясной и полезной.
и по мере того, как вы набираете скорость, эта тоже была хороша Системы баз данных: практический подход к проектированию, внедрению и управлению (Международная серия компьютерных наук) (Мягкая обложка)
Я думаю, что SQL и проектирование баз данных - это разные (но взаимодополняющие) навыки.
источник
Я начал с этой статьи
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Это довольно кратко по сравнению с чтением всей книги, и в нем очень хорошо объясняются основы проектирования баз данных (нормализация, типы отношений).
источник
Опыт имеет большое значение, но с точки зрения дизайна таблиц вы можете многое узнать из того, как работают ORM, такие как Hibernate и Grails, чтобы понять, почему они делают что-то. К тому же:
Храните разные типы данных отдельно - не храните адреса в таблице заказов, например, ссылку на адрес в отдельной таблице адресов.
Мне лично нравится иметь целочисленный или длинный суррогатный ключ в каждой таблице (которая содержит данные, а не те, которые связывают разные таблицы вместе, например, отношения m: n), которые являются первичным ключом.
Мне также нравится иметь созданный и измененный столбец временных меток.
Убедитесь, что каждый столбец, который вы делаете "where column = val" в любом запросе, имеет индекс. Возможно, не самый совершенный в мире индекс для типа данных, но, по крайней мере, индекс.
Настройте свои внешние ключи. Также настройте правила ON DELETE и ON MODIFY, где это уместно, для каскадирования или установки нуля, в зависимости от структуры вашего объекта (так что вам нужно удалить только один раз в `` голове '' вашего дерева объектов, и все подобъекты этого объекта получат удаляется автоматически).
Если вы хотите разделить свой код на модули, вы можете захотеть сделать модульную схему своей БД - например, это область «клиенты», это область «заказы», а это область «продукты», и использовать таблицы соединения / связывания. между ними, даже если они отношения 1: n, и, возможно, дублируют важную информацию (например, дублируют название продукта, код, цену в вашей таблице order_details). Прочтите о нормализации.
Кто-то другой порекомендует прямо противоположное для некоторых или всего вышеперечисленного: p - никогда не бывает единственно верного способа делать некоторые вещи, а!
источник
explain analyze
является ли индекс преимуществом.Мне очень понравилась эта статья .. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
источник
Head First SQL - отличное введение.
источник
Это вопросы, которые, на мой взгляд, требуют разных знаний из разных областей.
Тем не менее, возможно, вы захотите прочитать несколько книг, лично я использовал эту книгу в своем университетском курсе базы данных (и нашел приличную, но я не читал других книг в этой области, поэтому мой совет - проверить несколько хороших книг по проектированию баз данных).
источник
Прошло много времени с тех пор, как я его прочитал (поэтому я не уверен, какая часть из них все еще актуальна), но я помню, что книга Джо Селко SQL для Smarties предоставляет много информации о написании элегантных, эффективных и действенных запросов. ,
источник