Руководство для начинающих по дизайну базы данных SQL [закрыто]
знаете ли вы хороший источник, чтобы узнать, как разрабатывать решения SQL?
помимо основного синтаксиса языка, я ищу что-то, чтобы помочь мне понять:
- какие таблицы строить и как их связывать
- как проектировать для разных масштабов (небольшое клиентское приложение для огромного распределенного веб-сайта)
- как писать эффективные / эффективные / элегантные SQL-запросы
7 ответов:
Я начал с этой книги:дизайн реляционной базы данных четко объяснен (серия Моргана Кауфмана в системах управления данными) (Мягкая обложка) Ян л. Харрингтон и нашел его очень ясным и полезным
и как вы получаете до скорости этот был слишком хорош системы баз данных: практический подход к проектированию, внедрению и управлению (международная серия компьютерных наук) (в мягкой обложке)
Я думаю, что SQL и проектирования баз данных разные (но дополнительных) навыков.
Я начал с этой статьи
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Это довольно лаконично по сравнению с чтением целой книги, и это объясняет основы дизайна базы данных (нормализация, типы отношений) очень хорошо.
опыт имеет большое значение, но с точки зрения дизайна таблиц вы можете многому научиться от того, как ORMs, такие как Hibernate и Grails, работают, чтобы понять, почему они делают что-то. Кроме того:
держите разные типы данных отдельно - не храните адреса в таблице заказов, например, ссылка на адрес в отдельной таблице адресов.
Мне лично нравится иметь целочисленный или длинный суррогатный ключ на каждой таблице (который содержит данные, а не те, которые ссылаются различные таблицы вместе, например, отношения m:n), который является первичным ключом.
Мне также нравится иметь созданный и измененный столбец временной метки.
убедитесь, что каждый столбец, который вы делаете "where column = val" в любом запросе имеет индекс. Может быть, не самый совершенный индекс в мире для типа данных, но по крайней мере индекс.
настройка внешних ключей. Также можно настроить удаление и изменение правил, если это необходимо, чтобы либо cascade, либо set null, в зависимости от структуры объекта (поэтому вам нужно удалить только один раз в "голове" вашего дерева объектов, и все подобъекты этого объекта удаляются автоматически).
Если вы хотите modularise ваш код, вы, возможно, захотите, чтобы ваш modularise схемы БД - например, это "клиенты" зона, это "приказы" области, и это "продукты", и использовать для соединения/связи таблиц между ними, даже если они 1:N отношения, и, возможно, продублировать важная информация (например, дублируйте название продукта, код, цену в таблице order_details). Почитайте о нормализации.
кто - то другой будет рекомендовать прямо противоположное для некоторых или всех из вышеперечисленных :p-никогда не один истинный способ сделать некоторые вещи Эх!
Мне очень понравилась эта статья.. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
Head First SQL большое введение.
Это вопросы, которые, по моему мнению, требуют разных знаний из разных областей.
- вы просто не можете заранее знать," какие " таблицы строить, вы должны знать проблему, которую вы должны решить, и соответствующим образом спроектировать схему;
- Это сочетание проектного решения базы данных и пользовательских возможностей поставщика базы данных (т. е. вы должны проверить документацию вашей (r)СУБД и в конечном итоге узнать некоторые "советы и рекомендации" для масштабирования), а также конфигурации СУБД имеет решающее значение для масштабирования (репликация, разделение данных и т. д.);
- опять же, почти каждая СУБД поставляется с определенным "диалектом" языка SQL, поэтому, если вы хотите эффективные запросы, вы должны изучить этот конкретный диалект --btw. скорее всего, написать элегантный запрос, который также эффективен, - это большое дело: элегантность и эффективность часто конфликтуют цели -
тем не менее, может быть, вы хотите прочитать некоторые книги, лично я использовал книги в моем курсе университета datbase (и нашел приличный, но я не читал других книг в этой области, поэтому мой совет-проверить некоторые хорошие книги в дизайне базы данных).
прошло некоторое время с тех пор, как я его прочитал (так что я не уверен, насколько это все еще актуально), но мое воспоминание заключается в том, что книга Джо Селко "SQL для Smarties" предоставляет много информации о написании элегантных, эффективных и эффективных запросов.
Comments