Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Новости сайта "Упражнения по SQL" (http://www.sql-ex.ru)


Информационный Канал Subscribe.Ru

Новости сайта "Упражнения по SQL (http://www.sql-ex.ru)" Выпуск 49 (20 августа 2005 г.)

http://www.sql-ex.ru

Новым посетителям сайта

Сайт посвящен изучению языка, с помощью которого осуществляется взаимодействие с реляционными (и не только) СУБД. Суть обучения состоит в выполнении заданий на написание запросов к учебным базам данных; при этом система контролирует правильность выполнения заданий. В настоящее время реализованы все операторы подъязыка манипуляции данными (DML), которые включают в себя оператор извлечения данных SELECT, а также операторы модификации данных - INSERT, DELETE и UPDATE.

Мы надеемся, что справочного материала сайта окажется достаточно для самостоятельного обучения. Кроме того, свои решения вы можете обсудить на форуме сайта. Опытных же специалистов приглашаем проверить (продемонстрировать) свое мастерство и принять участие в соревновании, обеспечиваемом рейтинговой системой учета времени выполнения заданий. Фактически, рейтинг ведется на втором этапе тестирования, который начинается сейчас после решения 59-ти задач первого этапа. При подсчете рейтинга каждого участника отбрасывается один самый худший показатель среди всех решенных им упражнений.

Имеется возможность получить сертификат по SQL DML при выполнении определенного количества заданий.


Новости сайта

§ С подачи f.nietzsche добавлены проверочные данные для задачи 75. Значительная часть решений, опубликованных на форуме, перестанет проходить. Проверьте свои решения.

§ Число подписчиков - 2351

Число участников рейтинга - 3848

Число участников второго этапа - 357

Лучшие результаты (ТОР 20)

No Person Number of
Sel_ex
Last_Sel Number of
DML_ex
Scores Days Days_2 LastSolved LastVisit
1 Духин А. (Shark) 137 137 20 312 30 2.635 10 Aug 2005 18 Aug 2005
2 Зверев Д.Л. (dimzv) 137 137 20 312 643 2.900 08 Aug 2005 12 Aug 2005
3 Кувалкин К.С. (Cyrilus) 137 112 20 312 224 5.129 06 Jul 2005 27 Jul 2005
4 Гонтовой В.А. (noname) 137 112 20 312 105 9.808 29 Jun 2005 19 Aug 2005
5 Леденев С.А. (Shurgenz) 137 112 20 312 313 9.900 27 Jun 2005 18 Aug 2005
6 Бураков С.Г. (burakov58) 137 137 20 312 164 12.100 12 Jul 2005 31 Jul 2005
7 Валуев Д.И. (Fiolent) 137 112 20 312 662 26.627 27 Jun 2005 19 Aug 2005
8 Галиаскаров Э.Г. (Galogen) 137 112 20 312 221 61.437 01 Jul 2005 01 Jul 2005
9 Носков Н.В. (niko2) 136 136 20 308 42 5.904 17 Aug 2005 19 Aug 2005
10 Мельникова И.А. (Iris_m) 135 137 20 308 380 89.865 27 May 2005 12 Aug 2005
11 Колосов А.С. (KAS) 134 137 20 306 25 3.398 11 Mar 2005 14 Jun 2005
12 Сныткин В.Л. (Ded I) 134 136 20 304 252 7.456 12 May 2005 12 Aug 2005
13 Рахманов И.Е. (bloom) 134 136 20 304 148 14.171 11 May 2005 15 Jun 2005
14 Hakobyan H.H. (hamlet) 134 136 20 304 220 37.869 07 May 2005 03 Jun 2005
15 Шипунов И. (IAS) 134 136 20 304 334 82.080 13 May 2005 26 May 2005
16 Иткин И.Л. (joseph_itkin) 132 136 20 299 375 2.849 07 Mar 2005 13 Apr 2005
17 Spirin (spirin) 131 136 19 296 158 13.461 21 Jan 2005 24 Jan 2005
18 >Gershovich (VIG) 129 129 20 296 891 13.633 19 Aug 2005 19 Aug 2005
19 Михайлов В.Г. (mslava) 132 136 17 293 648 10.504 25 Mar 2005 25 Mar 2005
20 Пятница О.А. (Robin) 125 128 20 287 754 74.630 19 Mar 2005 14 Jul 2005

Лучшие результаты за неделю

No surname n_sel sel_all sel_scores dml_scores scores rating last_visit
1 >Голубин Р.С. (Roman S. Golubin) 58 58 105 32 137 191 19 Aug 2005
2 Дружаев А.А. (DrAlex) 59 59 107 0 107 378 18 Aug 2005
3 >revutska (Woe) 55 55 98 0 98 455 19 Aug 2005
4 >Rykin M.Y. (max3.05) 51 51 87 9 96 479 19 Aug 2005
5 >Lopatkin A.V. (SanyL) 32 58 62 20 82 248 19 Aug 2005
6 >Зелюк В.С. (mr.Basilius) 47 47 81 0 81 612 19 Aug 2005
7 Мельниченко С.О. (Light) 47 47 76 1 77 651 18 Aug 2005
8 Shestakov Y.V. (Sat) 45 45 75 0 75 677 18 Aug 2005
9 >Романов Д. (Романов Дмитрий) 42 42 69 0 69 748 19 Aug 2005
10 >Прусов.С. С.Н. (slhunter) 40 40 66 0 66 787 19 Aug 2005
11 Дубовая С. (Frida) 40 40 61 3 64 814 18 Aug 2005
12 >Городний М. (GMA) 36 36 64 0 64 815 19 Aug 2005
13 ovchinnikov (nicky) 37 37 62 1 63 841 17 Aug 2005
14 >Ruchev A. (ruchey) 16 62 32 29 61 165 18 Aug 2005
15 >Леонов А.А. (evrei) 25 59 48 9 57 298 19 Aug 2005
16 Олексенко С.В. (White) 26 41 50 6 56 671 19 Aug 2005
17 Pochtov (ANTIVIR) 20 20 27 22 49 1045 18 Aug 2005
18 dsun (dsun!) 28 28 49 0 49 1072 18 Aug 2005
19 >Robo (freemem) 35 35 46 3 49 1074 19 Aug 2005
20 Ponomaryov A.N. (Gnom) 28 28 49 0 49 1082 18 Aug 2005
21 >Kuznecov D.M. (kip) 25 25 40 7 47 1123 19 Aug 2005
22 Verulava (Lasha) 25 49 45 0 45 603 19 Aug 2005
23 Филатов С.Д. (fs) 32 32 41 3 44 1171 16 Aug 2005
24 Ралло С. (rallo) 26 26 43 0 43 1187 16 Aug 2005
25 alaa A.H. (Eloll) 25 25 41 1 42 1207 19 Aug 2005
26 >Lukyanov D.M. (Dimal) 20 28 40 0 40 1110 19 Aug 2005

Изучаем SQL

Худшие методы - объекты, не принадлежащие DBO

Andy Warren (оригинал: Worst Practices - Objects Not Owned by DBO)
Перевод Моисеенко С.И.

На прошлой неделе я опубликовал статью о том, что я назвал "Худшие Методы", или ХМ для краткости. Это понятия, которые находятся в другом конце спектра от "Лучших методов" (ЛМ), хотя я замечаю, что их используют слишком часто. Моя цель в этой серии статей состоит в том, чтобы выявить некоторые из этих методов и обсудить, почему они не хороши. Если мы не всегда можем применять лучшие методы из-за ограниченности во времени и других практических дел, нам следует, по крайней мере, стараться избегать наихудших ошибок!

На этой неделе я хотел бы обсудить вопрос принадлежности объекта. По моему мнению, иметь для объекта ЛЮБОГО другого собственника кроме DBO - худший способ! Теперь давайте поговорим о том, почему это плохо.

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

Даже если Вы не знаете об этом, Вы используете принадлежность, когда пишите оператор select, который ссылается на таблицу, например, следующим образом:

select * from Categories

Когда этот оператор выполняется, SQL сначала пытается выполнить оператор в предположении, что именно Вы являетесь собственником данного объекта. Это "Вы" определяется тем, как Вы подключаетесь к базе данных. Скажем, в текущем подключении я - пользователь 'wp'. Это означает то, что SQL пробует сделать так:

select * from wp.Categories

Если такой объект не существует, то будет сделано следующее:

select * from dbo.Categories

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

Вы и я знаем, что мы не квалифицируем все объекты. Это занимает время, делает код больше и, возможно, немного менее читабельным. Но какова основная причина? Когда мы писали код, все принадлежало dbo. Так что мы получим, добавляя dbo. к каждому имени объекта?

Немного головной боли.

Возьмем ситуацию, когда Вы позволили объектам принадлежать кому-то другому отличному от dbo. Вы получили многочисленные копии различных таблиц и хранимых процедур, в том числе две таблицы Categories, одну принадлежащую dbo, а другую принадлежащую wp. Ваша команда разработчиков пишет небольшое приложение, которое использует таблицу Categories ..., одну принадлежащую dbo, хотя они полностью не квалифицируют объект. Приложение прекрасно работает при тестировании. Вы устанавливаете приложение для пользователя WP, оно запускается, но WP сообщает, что он видит только пять категорий, в то время как пользователь Bp, который сидит напротив, видит восемь? Вы можете проверять весь код целый день и не найти ошибку. BP и WP используют различные таблицы, но это скрыто от разработчика!

Изобретательно? Конечно. Но возможны различные вариации этой проблемы.

Давайте перейдем ко второй части, почему идея цепочек владения такая плохая. Если Вы сдавали экзамены по SQL, то знаете, что MS любит включать один или два вопроса о цепочках владения. Избегайте их! Создавайте ваши разрешения (permissions) настолько простыми и ясными, насколько сможете. Снова для тех, кто не знаком с цепочками владения, - это процесс, который SQL должен пройти, чтобы выяснить, можно ли разрешить пользователю доступ к объекту/данным. Пока все объекты принадлежат одному и тому же пользователю, процесс прост. Как только цепочка владения "разрывается", SQL вынужден делать больше проверок. Books Online дают довольно хорошее объяснение, сделайте поиск по "Ownership Chains".

Фактически то, что несколько разработчиков или администраторов баз данных намеренно используют собственность объекта, обычно случается по ошибке. Вы можете воспрепятствовать этому либо не предоставляя пользователям разрешений на создание объектов, если они не являются членами роли db_owner, либо позволяя им это, но затем используя sp_changeobjectowner, чтобы сделать dbo владельцем прежде, чем установите код. Я считаю, что из этих двух решений лучшим является первое.

Вы согласны со мной? Или считаете, что я не прав? В любом случае давайте это обсудим - опубликуйте свои комментарии на форуме.

12.11.2004

Полезная информация

Работа

В известную софтверную компанию, занимающуюся разработкой антивирусного ПО, требуются § 1. Разработчик ПО для Lotus Domino Server

Требования к кандидатам:
Возраст - 25 - 35 лет;
Высшее техническое образование;
Опыт программирования не менее 1 года.

Обязательно:
отличное знание Lotus Domino
C/C++
знание Windows и Unix

Приветствуется:
знание сетевых протоколов (TCP/IP, SMTP, POP3, IMAP4)
STL/ATL, MFC, Win 32 API, MAPI

Обязанности:
Разработка антивирусного программного обеспечения для Lotus Domino Server.

§ 2. Разработчик ПО для Microsoft Exchange Server

Требования к кандидатам:
Возраст - 20 - 40 лет;
Высшее техническое образование;
Опыт программирования не менее 1 года.

Обязательно:
отличное знание Microsoft Exchange Server
C/C++

Приветствуется:
знание сетевых протоколов TCP/IP, SMTP, POP3, IMAP4 STL/ATL, MFC, Win 32 API, MAPI

Обязанности:
Разработка антивирусного программного обеспечения для Microsoft Exchange Server.

Условия по обеим ваканчиям:
Размер оплаты обсуждается индивидуально (от 1000$ - 2500$ в зависимости от умений).
Есть хорошее медицинское страхование. График работы: 8 часовой рабочий день, начало работы не позднее 13.00. Офис расположен в центре города, хорошо оснащен, имеется организованное питание, свежие фрукты, тренажерный зал.
Оформление и работа в соответствии с ТК РФ.

Вакансии открыты в Санкт-Петербурге. Возможно рассмотрение резюме специалистов из других городов.

Контактное лицо: Ольга Синякова, e-mail: o.sinyakova@ajob.ru , o.sinyakova@alfapersonal.ru , тел.: (812)449-03-93.

Конкурс

§ Мы выставили наш сайт на конкурс Интернить 2005. Победитель определяется числом поданых голосов. Просьба проголосовать. (рекомендуемая оценка 3 :-)).

Контакты

По всем вопросам, связанным с функционированием сайта, проблемами при решении упражнений, идеями вы можете обращаться к Сергею И.Моисеенко msi77@yandex.ru. Вы также можете предложить свои задачи для публикации на сайте.

Подписка Subscribe.Ru
Новости сайта "Упражнения по SQL"

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.db.sqlex
Отписаться
Вспомнить пароль

В избранное