Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Тоу Д. -> "Настройка SQL. Для профессионалов" -> 68

Настройка SQL. Для профессионалов - Тоу Д.

Тоу Д. Настройка SQL. Для профессионалов — СПб.: Питер, 2004. — 333 c.
ISBN 5-94723-959-0
Скачать (прямая ссылка): nastroykasqldlyaprof2004.djvu
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 161 >> Следующая

Узлы

Узлы представляют таблицы или псевдонимы таблиц в разделе FROM — в нашем случае это псевдонимы EhD. Вы можете сокращать названия таблиц или псевдонимов, как вам удобно, если только это не вызовет двусмысленности или недопонимания.
134

5. Диаграммное изображение простых запросов SQL

Связи

Связи представляют соединения между таблицами, а направленная связь обозначает, что соединение гарантированно получит уникальные значения в той таблице, на которую указывает связь. В данном случае DepartmentalD — первичный (уникальный) ключ в таблице Departments, поэтому у связи есть стрелка на конце, указывающем на узел D. Так как Department_ID не уникален в таблице Employees, на другом конце связи стрелки нет. Следуя моим обозначениям, всегда рисуйте связи, состоящие из одной стрелки, так, чтобы стрелка указывала вниз. Если вы всегда будете рисовать стрелки, направленные вниз, то вам будет намного проще читать планы, где главные таблицы всегда будут расположены под детальными таблицами. В главах 6 и 7 я опишу «правила большого пальца» для поиска оптимальных планов исполнения при помощи диаграмм запроса. Так как эти правила обрабатывают соединения с главными таблицами иначе, нежели соединения с детальными таблицами, в них, чтобы удобно различать эти два типа, специально упоминаются соединения вниз и соединения вверх.

Хотя вы можете догадаться, что Department_ID — это первичный ключ для Departments, SQL не объявляет явно, какая сторона соединения является первичным ключом, а какая — внешним. Необходимо проверить индексы или объявленные ключи, чтобы удостовериться, что Department^D гарантированно уникален в таблице Departments.

Подчеркнутые числа

Подчеркнутые числа рядом с узлами обозначают долю строк каждой таблицы, удовлетворяющих условиям фильтрации для этой таблицы. Здесь под условиями понимаются не условия соединения, а условия, относящиеся только к конкретной таблице на диаграмме SQL. На рис. 5.1 10 % строк таблицы Employees удовлетворяют условию Exempt_Fl ag=' Y', и 50 % строк таблицы Depa rtments удовлетворяют условию US Based Flag='Y'. Я называю эти доли коэффициентами фильтрации.

Часто для одной или нескольких таблиц вообще не указаны условия фильтрации. В этом случае для коэффициента фильтрации (R) я использую значение 1,0, так как 100 % строк удовлетворяют (несуществующим) условиям фильтрации для этой таблицы. Также в подобных случаях я обычно вообще не указываю коэффициент фильтрации на диаграмме. Отсутствие этого числа обозначает R = 1,0 для данной таблицы. Коэффициент фильтрации не может быть больше 1,0. Зачастую можно приблизительно угадать значение коэффициентов фильтрации, зная, что представляют таблицы и столбцы. Если вам доступны распределения реальных данных, вы можете найти точные значения коэффициентов фильтрации, просто получив и проанализировав эти данные. Рассматривайте каждую фильтрованную таблицу с операторами фильтрации, относящимися только к этой таблице, как однотабличный запрос, и ищите селективность условий фильтров так, как я рассказывал в главе 2 в разделе «Вычисление селективности».

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

135

Неподчеркнутые числа

Неподчеркнутые числа рядом с обоими концами связи представляют среднее количество строк, найденных в таблице на этом конце соединения для соответствующей строки на другом конце соединения. Я называю их коэффициентами соединения. Коэффициент соединения в начале соединения — это детальный коэффициент соединения, а на конце соединения (со стрелкой) — главный коэффициент соединения.

Главные коэффициенты соединения всегда меньше или равны 1,0, так как уникальный ключ гарантирует обнаружение нескольких главных строк для одной детальной. Часто встречается случай, когда в детальной таблице внешний ключ обязателен и ссылочная целостность данных идеальна (что гарантирует существование подходящей главной строки), тогда главный коэффициент соединения равен в точности 1,0.

Детальные коэффициенты соединения моїуг быть равны любому неотрицательному числу. Они могут быть меньше 1,0, так как некоторые отношения главной и детальной таблиц разрешают существование нуля, одной или многих детальных строк, причем чаще всего встречается случай «один к нулю». В этом примере обратите внимание, что для средней строки Empl oyees есть соответствующая строка (с которой она связана) в Departments в 98 % случаев, тогда как средняя строка Departments соответствует (связывается с) 20 строкам Employees. Хотя вы можете приблизительно угадать коэффициенты соединения, зная, что собой представляют таблицы, старайтесь, когда это возможно, получать эти значения из полных, реальных распределений данных. Так же, как и с коэффициентами фильтрации, вам может потребоваться вычисление коэффициентов соединения во время фазы разработки приложения.
Предыдущая << 1 .. 62 63 64 65 66 67 < 68 > 69 70 71 72 73 74 .. 161 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100