Сравнительные характеристики sql субд. Типы данных системы. Физическая независимость данных

Характеристика Microsoft SQL Server. Компоненты SQL Server
Microsoft SQL Server - система управления реляционными базами данных (СУБД),
разработанная корпорацией Microsoft. Основной используемый язык запросов - Transact­
SQL, создан совместно Microsoft и Sybase. Transact­SQL является реализацией стандарта
ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется
для работы с базами данных размером от персональных до крупных баз данных масштаба
предприятия; конкурирует с другими СУБД в этом сегменте рынка.
SQL Server 2000 Enterprise Edition и SQL Server 2000 Standard Edition являются
единственными изданиями SQL Server 2000, которые могут устанавливаться и
использоваться в реальных (развернутых) условиях. Это значит, что если вы строите базу
данных или аналитическое приложение, которое обращается к SQL Server 2000, вы должны
использовать SQL Server 2000 Standard или Enterprise Edition. Другие издания не могут
использоваться в развернутых решениях для сервера баз данных из­за технических и
лицензирующих ограничений. Термины “развернутые” и “реальные” (“deployed” and “live”)
вводятся для того, чтобы дифференцировать такие решения от тех, которые являются
решениями в процессе разработки “under development” “in testing” или тестовыми
применениями “in testing”.
Компоненты SQL SERVER 2000
Рассмотрим основные компоненты SQL Server 2000.
Microsoft SQL Server 2000 реализован в виде набора служб операционной системы, каждая
из которых запускается самостоятельно и отвечает за определенный круг задач. Приведем
список служб SQL Server:
1. MSSQLServer;
2. SQLServerAgent;
3. Microsoft Search (MSSearch);
4. Microsoft Distributed Transaction Coordinator (MSDTC).
Реализация в виде служб позволяет SQL Server 2000 работать как части операционной
системы, иметь собственные права доступа и не зависеть от пользователя, работающего на
компьютере в данный момент. Операционная система Windows 95/98 не поддерживает
служб, поэтому для работы SQL Server 2000 под управлением этой операционной системы
автоматически выполняется эмуляция служб. Это связано с тем, что для работы в любой из
поддерживаемых операционных систем SQL Server 2000 применяет единственный
программный код. “Microsoft” не стала создавать отдельный продукт для работы в
операционной системе Windows 95/98, а просто выполнила эмуляцию служб Windows NT.
Инструменты SQL Server 2000
1. Enterprise Manager. Данный инструмент является базовым при выполнении самых
разнообразных задач:
­ управления системой безопасности;
­ создания баз данных и ее объектов;
­ создания и восстановление резервных копий;
­ конфигурирования подсистемы репликации;
­ управления параметрами работы служб SQL Server 2000;
­ управления подсистемой автоматизации;
­ запуска, останова и приостанова служб;
­ конфигурирования связанных и удаленных серверов;
­ создания, управления и выполнения пакетов DTS
Приведенный список не исчерпывает всех областей применения Enterprise Manager и легко
может быть расширен.
Большая часть административных задач SQL Server 2000 может быть выполнена
следующими методами:

­ использованием средств Transact­SQL;
­ с помощью графического интерфейса Enterprise Manager;
­ с помощью мастеров (wizards).
2. SQL Server Service Manager. Единственной задачей утилиты SQL Server Service
Manager является предоставление пользователю удобного механизма запуска, останова и
приостановки служб SQL Server 2000. Кроме этого, она позволяет лишь запретить или
разрешить автоматический запуск той или иной службы при загрузке операционной
системы.
Утилита Service Manager устанавливается при инсталляции SQL Server 2000 и по
умолчанию автоматически запускается при загрузке операционной системы. В нормальном
состоянии утилита Service Manager представлена значком в правой части панели задач
(taskbar). Двойной щелчок на пиктограмме приведет к открытию окна программы, с
помощью которого можно запускать, останавливать и приостанавливать службы SQL
Server 2000, а также разрешать или запрещать их автоматический запуск при загрузке
операционной системы.
3. SQL Server Profiler. Утилита SQL Server Profiler – это графический инструмент, с
помощью которого администратор может наблюдать за теми или иными аспектами работы
SQL Server 2000. При выполнении пользовательских запросов, хранимых процедур,
команд Transact­SQL, подключении к серверу и отключении от него, а также множества
других действий ядро SQL Server 2000 сохраняет в системных таблицах массу различной
информации о ходе выполнения операций. Эта информация может быть получена с
помощью специальных хранимых процедур. Утилита SQL Server Profiler использует эти
хранимые процедуры для получения необходимой информации. Полученные данные затем
представляются в удобном виде с помощью графического интерфейса, однако
пользователи могут получать информацию о процессах SQL Server 2000, обращаясь
напрямую к хранимым процедурам. В принципе, на основе этих хранимых процедур можно
даже написать свое собственное приложение, которое будет отображать информацию о
работе SQL Server 2000 в нужной форме.
4. Query Analyzer. Этот инструмент предназначен для выполнения запросов и анализа их
исполнения. По частоте использования и важности Query Analyzer сравним с Enterprise
Manager. Для выполнения SQL­кода, его нужно воспроизвести в окне Query Analyzer и
нажать кнопку Execute Query, на которой изображен зеленый треугольник. Результат
выполнения запроса будет отображен в нижней части окна SQL Query Analyzer.
5. Upgrade Wizard. Мастер Upgrade Wizard предназначен для выполнения обновления баз
данных SQL Server 6.5 до SQL Server 2000. В процессе обновления на SQL Server 2000
будут перенесены собственно данные, а также весь набор объектов обновляемой базы
данных, включая хранимые процедуры, триггеры, правила, умолчания, ограничения
целостности, представления. Кроме того, также окажутся перенесенными пользователи
базы данных со всеми установленными правами доступа к объектам базы данных и т. д.
6. Import and Export Data. Этот инструмент является мастером импорта/экспорта
данных, предназначенным для создания пакета DTS, который будет выполнять копирова­
ние информации между двумя источниками данных. Отличительной особенностью мастера
является простота конфигурирования процесса копирования данных.
7. Client Network Utility и Server Network Utility. Наличия протокола не достаточно для
сетевой работы SQL Server 2000. Для того чтобы клиенты смогли установить соединение с
сервером как на клиенте, так и на сервере, необходимо добавить специальные сетевые
библиотеки (Network Library). Эти библиотеки реализованы в виде динамически
подключаемых библиотек (DLL, dynamic link library) и подключаются к операционной
системе. Библиотека расширяет базовые возможности протокола и является как бы

надстройкой над ним, выполняющей различные сетевые операции по обмену данными
между клиентом и сервером.
8. Утилиты командной строки.
Помимо уже рассмотренных утилит, имеющих
графический интерфейс, в SQL Server 2000 существует набор утилит командной строки, с
помощью которых также можно выполнять различные задачи. Некоторые из этих утилит
используются сервером автоматически и являются, скорее, частью ядра SQL Server 2000,
чем собственно утилитами.
В файле материалов приведен обзор утилит командной строки. Указанные утилиты авто­
матически копируются мастером установки в каталог Binn установочного каталога SQL
Server 2000, но могут быть запущены из любого другого каталога, так как мастер
соответствующим образом конфигурирует переменную окружения PATH.
9. Мастера. Как уже говорилось, многие задачи могут быть выполнены с помощью
мастеров. Это наиболее простой способ выполнения административных задач. Не­
достатком мастеров являются достаточно ограниченные возможности. Однако некоторых
мастеров сказанное не касается. К ним можно отнести мастера конфигурирования
подсистемы репликации, что является довольно сложным процессом. Например, чтобы
создать публикацию средствами Enterprise Manager, нужно воспользоваться
соответствующим мастером. Конечно, всегда можно применить средства Transact­SQL. Но
иногда это настолько сложно и трудоемко, что лучшим решением будет использование
мастера

В 70-х гг. прошлого столетия фирма IBM разработала язык программирования, предназначенный для создания запросов (вопросов к базе данных). Он назывался SEQUEL (Structured English Query Language - английский структурированный язык создания запросов). В течение времени в SEQUEL добавлялись новые возможности. Вскоре он перестал быть языком создания только запросов. С его помощью стали создавать целые базы данных и управлять защитой ядра базы данных. Популярность нового языка настолько выросла, что пришлось сделать его достоянием широких масс пользователей и назвать SQL. Поскольку читаются обе аббревиатуры практически одинаково, то в разговоре их легко перепутать.

Современные процессоры баз данных используют разные версии SQL. SQL Server использует специальную разновидность SQL - Transact-SQL (T-SQL). Первоначально SQL Server (программа создания баз данных, которая понимает SQL) разрабатывалась компанией Microsoft совместно с фирмой Sybase Corporation для использования на платформах IBM OS/2 и создала свою собственную операционную систему - Windows NT Advanced Server. С этого момента было принято решение разрабатывать SQL Server только для сред Windows NT. В результате появилась SQL Server 4.2, которая вскоре была обновлена до версии 4.21. Вскоре между Microsoft и Sybase пробежала черная кошка; в результате Sybase взялась за создание собственного процессора баз данных для Windows NT. Им стала программа Sybase Adaptive Server Enterprise. Чтобы не отставать от конкурентов, Microsoft презентовала SQL Server 6.0, а вскоре и SQL Server 6.5. Обе программы запускались в Windows NT. А вот SQL Server 7.0 выполнялась не только Windows NT, но и Windows 95/98.

SQL Server 7.0 стала главной победой разработчиков процессора баз данных. Она превзошла возможности всех конкурирующих программ. Но в SQL Server 7.0 ядро процессора было сильно изменено. В SQL Server 7.0 полностью изменена не только архитектура ядра; в нее добавили оптимизатор запросов и улучшенную систему сохранения данных. В SQL Server 2000 добавили еще целый ряд дополнительных средств, повысили маштабируемость, надежность и доступность данных. Программа делает работу администратора легче и приятнее. SQL Server 2000 реализована как служба Windows NT Workstation, Windows NT Server и любой Windows 2000. В Windows ME она выполняется, как отдельное приложение в текущем сеансе пользователя. Все встроенные утилиты, например SQL Server Enterprise Manager, выполняются, как вспомогательные приложения типа клиент/сервер, позволяя управлять базой данных из любой точки сети.

Основными задачами системы SQL-сервер являются организация одновременного доступа к данным большого количества пользователей, а также манипуляция информацией, хранимой в базе данных. SQL-сервер поддерживает реляционную модель данных.

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

SQL Server - это серверная часть приложения, к которой присоединяются различные клиенты, включая и утилиты, поставляемые вместе с SQL Server (например, SQL Query Analyzer). К преимуще- ствам SQL Server можно отнести:

Обработка данных в среде клиент/сервер осуществляется при запуске запроса. Сервер отбирает необходимые данные и отправляет клиенту только затребованные строки таблиц. При этом не только уменьшается время передачи данных, но и ускоряется обработка запроса рабочей станцией.

Основные операции, связанные с управлением работой SQL-сервера, осуществляются с помощью ряда утилит, входящих в состав системы.

SQL Server Books Online - основной источник сведений о SQL Server для пользователя. В Books Online возможно найти ответы на любые вопросы о SQL Server. Books Online состоит из набора отдельных пособий, сохраненных в электронном виде. В случае необходимости вы можете заказать в Microsoft копию на бумаге. Само пособие организовано в виде документов HTML и просматривается в Microsoft Internet Explorer версии 5.0 и выше.

Books Online предоставить вам все то, что присуще обычным обучающим пособиям, а также дополнительные возможности поиска, отображения и печати необходимой информации.

Левая панель диалогового окна SQL Server Books Online содержит несколько вкладок:

  • Contents (Содержание). Все сведения о SQL Server представлены в виде упорядоченных по темам разделов (как в обычном справочном пособии).
  • Index (Индексный указатель). Содержит алфавитный список ключевых слов Books Online. После ввода в верхнем поле искомого слова список автоматически прокрутится до того места, где это слово в нем встречается.
  • Search (Поиск). Эта вкладка используется чаще других. После ввода слова, названия, команды или опции в поле поиска и щелчка на кнопке List Topics (Просмотреть разделы) результат поиска отображается в виде списка.
  • Favorites (Избранное). Подобно программе Internet Explorer, Books Online позволяет сохранять список избранных разделов, к которым обращались чаще всего.

Утилита SQL Server Service Manager (менеджер служб SQL Server) отвечает за управление службами SQL Server в компьютере локальной сети, на котором установлена SQL Server. При запуске этой утилиты на экране появляется диалоговое окно. Поле Server (сервер) содержит название сервера, который используется. Поле Service (службы) указывает службу, состояние которой проверяется на данном сервере. Графически состояние службы представляется следующим образом: зеленая стрелка указывает на выполнение службы в текущий момент; остальные значки символизируют приостановку или полную остановку выполнения службы. Утилита Service Manager - это основная утилита, используемая для управления SQL Server.

Раскрывающийся список Service содержит все службы, которые управляются этой утилитой. Среди них SQL Server, SQL Server Agent, Distributed Transaction Coordinator и Microsoft Search. Раскрывающийся список Server служит для указания сервера, на котором запущены службы. Именованные экземпляры также представлены в этом списке. Оба поля диалогового окна достаточно интеллектуальны, чтобы воспринимать введенные с клавиатуры значения (например, имя_сервераимя_экземпляра). После введения названия сервера и указания в поле Service необходимой службы утилита Service Manager соединяется с удаленным сервером и принимает на себя управление службами.

Все функциональные возможности этого приложения присущи утилите SQL Server Enterprise Manager. Она запускается с панели задач Windows и поэтому более удобна в использовании.

Утилита Client Network, играющая главную роль при подключении компьютеров-клиентов SQL Server, проста в использовании. При запуске Client Network на экране появляется диалоговое окно, в котором указано, какие протоколы используются по умолчанию клиентским приложением для подключения к серверу SQL Server. По умолчанию SQL Server 2000 используется сетевая библиотека ТСР/ IP, независимо от операционной системы, которая управляет компьютером. В нижней части диалогового окна приведены еще две опции: Force Protocol Encryption (проводить шифрование) и Enable Shared Memory Protocol (подключиться к SQL Server локально). Вторая опция позволяет автоматически подключаться к SQL Server, установленном на локальном компьютере. При необходимости можно ее отключить. Первая опция необходима для установки зашифрованного соединения между клиентским приложением и сервером, на котором установлена SQL Server 2000.

Утилита Server Network во многом похожа на Client Network. Но в отличие от утилиты Client Configuration, которая управляет подключением клиентского программного обеспечения к SQL Server, Server Network управляет работой сетевых библиотек. Именно эта утилита определяет протоколы, с помощью которых серверы с программой SQL Server 2000 общаются с клиентскими приложениями.

SQL Server Query Analyzer - утилита, позволяющая выполнять команды языка запросов Transact-SQL. Эта утилита функционирует в среде Windows, что делает ее удобной в использования. При запуске система в диалоговом окне запрашивает имя SQL-сервера, имя пользователя и его пароль. Воспользовавшись введенной информацией, система осуществляет подключение утилиты к данному SQL- серверу. Основное окно утилиты разделено на две части. В верхней части пользователем осуществляется ввод команд, требующих выполнения. По завершении ввода следует воспользоваться кнопкой запуска SQL-запроса, после чего в нижней части данного окна отобразятся результаты выполнения запроса. Здесь же можно проверить корректность выполнения запроса без его запуска и сохранить для дальнейшего использования.

SQL Server Enterprise Manager - утилита, предоставляющая пользователю выполнять все операции администрирования SQL - сервера, доступа ко всем его объектам, а также запуска различных утилит и приложений. Наличие утилиты на компьютере позволяет осуществлять конфигурирование и удаленных серверов, т.е. утилита может запускаться не только на самом сервере, но и на компьютере рабочей станции. Основное окно системы очень похоже на Проводник Windows. В левой части находятся основные объекты SQL-сервера. Использование символов + и - слева от названия объекта позволяет раскрывать его составляющие, что, в свою очередь, дает возможность их редактирования. При выборе необходимого объекта опции настройки его параметров отображаются в правой части окна утилиты.

Утилита Profiler используется для мониторинга всех процессов, протекающих в SQL Server. Она также применяется для настройки среды на максимальную производительность; для этого анализируется план выполнения запросов и на основе полученных результатов принимается правильное решение. Profiler позволяет следить не только за деятельностью отдельных приложений, выполнением команд, но и за каждым пользователем SQL Server. В SQL Server 2000 позволено одновременно отслеживать около 100 событий.

Утилита OSQL добавляет в SQL Server интерфейс ODBC. Эта программа позволяет использовать для подключения к SQL Server команды ODBC. Обычно с ее помощью выполняются пакетные запросы, предназначенные для производственных задач.

ISQL - это программа командной строки, пришедшая из предыдущих версий SQL Server. Для подключения к SQL Server в ней используются средства DB-Library. Поскольку работа ISQL полностью зависит от DB-Library, новые команды в ней остаются недоступными. Среди них и поддержка Unicode.

SQL Server 2000 оснащен лучшими инструментами, когда-либо создаваемыми Microsoft. С помощью всего одной консоли управления, оснащенной графическим интерфейсом, легко выполняется администрирование большой базы данных всей организации. В SQL Server интегрированы все необходимые программы: утилиты запуска запросов, мониторинга состояния системы и используемых служб.

Средства SQL Server даже позволяют настраивать сетевые соединения и устранять некоторые проблемы, возникающие в сети. Некоторые из инструментов SQL Server запускаются из главного меню Windows, другие - из командной строки или из папки mssqlinn.

Система управления базами данных (СУБД) - это общий набор различных программных компонентов баз данных и собственно баз данных, содержащий следующие составляющие:

    прикладные программы баз данных;

    клиентские компоненты;

    серверы баз данных;

    собственно базы данных.

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

Сервер баз данных выполняет задачу управления данными, хранящимися в базе данных. Клиенты взаимодействуют с сервером баз данных, отправляя ему запросы. Сервер обрабатывает каждый полученный запрос и отправляет результаты соответствующему клиенту.

Возможности СУБД

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

    разнообразные пользовательские интерфейсы;

    физическую независимость данных;

    логическую независимость данных;

    оптимизацию запросов;

    целостность данных;

    управление параллелизмом;

    резервное копирование и восстановление;

    безопасность баз данных.

Все эти возможности вкратце описываются в следующих далее разделах.

Разнообразные пользовательские интерфейсы

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

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

Физическая независимость данных

Физическая независимость данных означает, что прикладные программы базы данных не зависят от физической структуры данных, хранимых в базе данных. Эта важная особенность позволяет изменять хранимые данные без необходимости вносить какие-либо изменения в прикладные программы баз данных.

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

Логическая независимость данных

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

Системы баз данных предоставляют логическую независимость файлов, т.е., иными словами, логическую структуру базы данных можно изменять без необходимости внесения каких-либо изменений в прикладные программы базы данных. Например, добавление атрибута к уже существующей в системе баз данных структуре объекта с именем Person (например, адрес) вызывает необходимость модифицировать только логическую структуру базы данных, а не существующие прикладные программы. (Однако приложения потребуют модифицирования для использования нового столбца.)

Оптимизация запросов

Большинство систем баз данных содержат подкомпонент, называющийся оптимизатором , который рассматривает несколько возможных стратегий исполнения запроса данных и выбирает из них наиболее эффективную. Выбранная стратегия называется планом исполнения запроса . Оптимизатор принимает решение, принимая во внимание такие факторы, как размер таблиц, к которым направлен запрос, существующие индексы и логические операторы (AND, OR или NOT), используемые в предложении WHERE.

Целостность данных

Одной из стоящих перед системой баз данных задач является идентифицировать логически противоречивые данные и не допустить их помещения в базу данных. (Примером таких данных будет дата "30 февраля" или время "5:77:00".) Кроме этого, для большинства реальных задач, которые реализовываются с помощью систем баз данных, существуют ограничения для обеспечения целостности (integrity constraints) , которые должны выполняться для данных. (В качестве примера ограничения для обеспечения целостности можно назвать требование, чтобы табельный номер сотрудника был пятизначным целым числом.)

Обеспечение целостности данных может осуществляться пользователем в прикладной программе или же системой управления базами данных. До максимально возможной степени эта задача должна осуществляться посредством СУБД.

Управление параллелизмом

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

    На общем банковском счете № 3811 в банке X имеется $1500.

    Владельцы этого счета, госпожа А и господин Б, идут в разные отделения банка и одновременно снимают со счета по $750 каждый.

    Сумма, оставшаяся на счету № 3811 после этих транзакций, должна быть $0, и ни в коем случае не $750.

Все системы баз данных должны иметь необходимые механизмы для обработки подобных ситуаций, обеспечивая управление параллелизмом.

Резервное копирование и восстановление

Система баз данных должна быть оснащена подсистемой для восстановления после ошибок в программном и аппаратном обеспечении. Например, если в процессе обновления 100 строк таблицы базы данных происходит сбой, то подсистема восстановления должна выполнить откат всех выполненных обновлений, чтобы обеспечить непротиворечивость данных.

Безопасность баз данных

Наиболее важными понятиями безопасности баз данных являются аутентификация и авторизация. Аутентификация - это процесс проверки подлинности учетных данных пользователя, чтобы не допустить использования системы несанкционированными пользователями. Аутентификация наиболее часто реализуется, требуя, чтобы пользователь вводил свое имя пользователя и пароль. Система проверяет достоверность этой информации, чтобы решить, имеет ли данный пользователь право входа в систему или нет. Этот процесс можно усилить применением шифрования.

Авторизация - это процесс, применяемый к пользователям, уже получившим доступ к системе, чтобы определить их права на использование определенных ресурсов. Например, доступ к информации о структуре базы данных и системному каталогу определенной сущности могут получить только администраторы.

Системы реляционных баз данных

Компонент Database Engine сервера Microsoft SQL Server является системой реляционных баз данных. Понятие систем реляционных баз данных было впервые введено в 1970 г. Эдгаром Ф. Коддом в статье "A Relational Model of Data for Large Shared Data Banks". В отличие от предшествующих систем баз данных (сетевых и иерархических), реляционные системы баз данных основаны на реляционной модели данных, обладающей мощной математической теорией.

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

Работа с демонстрационной базой данных в последующих статьях

Используемая в наших статьях база данных SampleDb представляет некую компанию, состоящую из отделов (department) и сотрудников (employee). Каждый сотрудник принадлежит только одному отделу, а отдел может содержать одного или нескольких сотрудников. Сотрудники работают над проектами (project): в любое время каждый сотрудник занят одновременно в одном или нескольких проектах, а над каждым проектом может работать один или несколько сотрудников.

Эта информация представлена в базе данных SampleDb (находится в исходниках) посредством четырех таблиц:

Department Employee Project Works_on

Организация этих таблиц показана на рисунках ниже. Таблица Department представляет все отделы компании. Каждый отдел обладает следующими атрибутами (столбцами):

Department (Number, DepartmentName, Location)

Атрибут Number представляет однозначный номер каждого отдела, атрибут DepartmentName - его название, а атрибут Location - расположение. Таблица Employee представляет всех работающих в компании сотрудников. Каждый сотрудник обладает следующими атрибутами (столбцами):

Employee (Id, FirstName, LastName, DepartmentNumber)

Атрибут Id представляет однозначный табельный номер каждого сотрудника, атрибуты FirstName и LastName - имя и фамилию сотрудника соответственно, а атрибут DepartmentNumber - номер отдела, в котором работает сотрудник.

Все проекты компании представлены в таблице проектов Project, состоящей из следующих столбцов (атрибутов):

Project (ProjectNumber, ProjectName, Budget)

В столбце ProjectNumber указывается однозначный номер проекта, а в столбцах ProjectName и Budget - название и бюджет проекта соответственно.

В таблице Works_on указывается связь между сотрудниками и проектами:

Works_on (EmpId, ProjectNumber, Job, EnterDate)

В столбце EmpId указывается табельный номер сотрудника, а в столбце ProjectNumber - номер проекта, в котором он принимает участие. Комбинация значений этих двух столбцов всегда однозначна. В столбцах Job и EnterDate указывается должность и начало работы сотрудника в данном проекте соответственно.

На примере базы данных SampleDb можно описать некоторые основные свойства реляционных систем баз данных:

    Строки таблицы не организованы в каком-либо определенном порядке.

    Также не организованы в каком-либо определенном порядке столбцы таблицы.

    Каждый столбец таблицы должен иметь однозначное имя в любой данной таблице. Но разные таблицы могут содержать столбцы с одним и тем же именем. Например, таблица Department содержит столбец Number и столбец с таким же именем имеется в таблице Project.

    Каждый элемент данных таблицы должен содержать одно значение. Это означает, что любая ячейка на пересечении строк и столбцов таблицы никогда не содержит какого-либо набора значений.

    Каждая таблица содержит, по крайней мере, один столбец, значения которого определяют такое свойство, что никакие две строки не содержат одинаковой комбинации значений для всех столбцов таблицы. В реляционной модели данных такой столбец называться потенциальным ключом (candidate key) . Если таблица содержит несколько потенциальных ключей, разработчик указывает один из них, как первичный ключ (primary key) данной таблицы. Например, первичным ключом таблицы Department будет столбец Number, а первичными ключами таблиц Employee будет Id. Наконец, первичным ключом таблицы Works_on будет комбинация столбцов EmpId и ProjectNumber.

    Таблица никогда не содержит одинаковых строк. Но это свойство существует только в теории, т.к. компонент Database Engine и все другие реляционные системы баз данных допускают существование в таблице одинаковых строк.

SQL - язык реляционной базы данных

Язык реляционной базы данных в системе SQL Server называется Transact-SQL . Это разновидность самого значимого на сегодняшний день языка базы данных - языка SQL (Structured Query Language - язык структурированных запросов) . Происхождение языка SQL тесно связано с проектом, называемым System R, разработанным и реализованным компанией IBM еще в начале 80-х годов прошлого столетия. Посредством этого проекта было продемонстрировано, что, используя теоретические основы работы Эдгара Ф. Кодда, возможно создание системы реляционных баз данных.

В отличие от традиционных языков программирования, таких как C#, C++ и Java, язык SQL является множество-ориентированным (set-oriented) . Разработчики языка также называют его запись-ориентированным (record-oriented) . Это означает, что в языке SQL можно запрашивать данные из нескольких строк одной или нескольких таблиц, используя всего лишь одну инструкцию. Это одно из наиболее важных преимуществ языка SQL, позволяющее использовать этот язык на логически более высоком уровне, чем традиционные языки программирования.

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

Язык SQL содержит два подъязыка: язык описания данных DDL (Data Definition Language) и язык обработки данных DML (Data Manipulation Language) . Инструкции языка DDL также применяются для описания схем таблиц баз данных. Язык DDL содержит три общие инструкции SQL: CREATE, ALTER и DROP. Эти инструкции используются для создания, изменения и удаления, соответственно, объектов баз данных, таких как базы данных, таблицы, столбцы и индексы.

В отличие от языка DDL, язык DML охватывает все операции по манипулированию данными. Для манипулирования базами данных всегда применяются четыре общие операции: извлечение, вставка, удаление и модифицирование данных (SELECT, INSERT, DELETE, UPDATE).

Последнее обновление: 24.06.2017

SQL Server является одной из наиболее популярных систем управления базами данных (СУБД) в мире. Данная СУБД подходит для самых различных проектов: от небольших приложений до больших высоконагруженных проектов.

SQL Server был создан компанией Microsoft. Первая версия вышла в 1987 году. А текущей версией является версия 16, которая вышла в 2016 году и которая будет использоваться в текущем руководстве.

SQL Server долгое время был исключительно системой управления базами данных для Windows, однако начиная с версии 16 эта система доступна и на Linux.

SQL Server характеризуется такими особенностями как:

    Производительность. SQL Server работает очень быстро.

    Надежность и безопасность. SQL Server предоставляет шифрование данных.

    Простота. С данной СУБД относительно легко работать и вести администрирование.

Центральным аспектом в MS SQL Server, как и в любой СУБД, является база данных. База данных представляет хранилище данных, организованных определенным способом. Нередко физически база данных представляет файл на жестком диске, хотя такое соответствие необязательно. Для хранения и администрирования баз данных применяются системы управления базами данных (database management system) или СУБД (DBMS). И как раз MS SQL Server является одной из такой СУБД.

Для организации баз данных MS SQL Server использует реляционную модель. Эта модель баз данных была разработана еще в 1970 году Эдгаром Коддом. А на сегодняшний день она фактически является стандартом для организации баз данных.

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

Для идентификации каждой строки в рамках таблицы применяется первичный ключ (primary key). В качестве первичного ключа может выступать один или несколько столбцов. Используя первичный ключ, мы можем ссылаться на определенную строку в таблице. Соответственно две строки не могут иметь один и тот же первичный ключ.

Через ключи одна таблица может быть связана с другой, то есть между двумя таблицами могут быть организованы связи. А сама таблица может быть представлена в виде отношения ("relation").

Для взаимодействия с базой данных применяется язык SQL (Structured Query Language). Клиент (например, внешняя программа) отправляет запрос на языке SQL посредством специального API. СУБД должным образом интерпретирует и выполняет запрос, а затем посылает клиенту результат выполнения.

Изначально язык SQL был разработан в компании IBM для системы баз данных, которая называлась System/R. При этом сам язык назывался SEQUEL (Structured English Query Language). Хотя в итоге ни база данных, ни сам язык не были впоследствии официально опубликованы, по традиции сам термин SQL нередко произносят как "сиквел".

В 1979 году компания Relational Software Inc. разработала первую систему управления баз данных, которая называлась Oracle и которая использовала язык SQL. В связи с успехом данного продукта компания была переименована в Oracle.

Впоследствии стали появляться другие системы баз данных, которые использовали SQL. В итоге в 1989 году Американский Национальный Институт Стандартов (ANSI) кодифицировал язык и опубликовал его первый стандарт. После этого стандарт периодически обновлялся и дополнялся. Последнее его обновление состоялось в 2011 году. Но несмотря на наличие стандарта нередко производители СУБД используют свои собственные реализации языка SQL, которые немного отличаются друг от друга.

Выделяются две разновидности языка SQL: PL-SQL и T-SQL. PL-SQL используется в таких СУБД как Oracle и MySQL. T-SQL (Transact-SQL) применяется в SQL Server. Собственно поэтому в рамках текущего руководства будет рассматриваться именно T-SQL.

В зависимости от задачи, которую выполняет команда T-SQL, он может принадлежать к одному из следующих типов:

    DDL (Data Definition Language / Язык определения данных). К этому типу относятся различные команды, которые создают базу данных, таблицы, индексы, хранимые процедуры и т.д. В общем определяют данные.

    В частности, к этому типу мы можем отнести следующие команды:

    • CREATE : создает объекты базы данных (саму базу даных, таблицы, индексы и т.д.)

      ALTER : изменяет объекты базы данных

      DROP : удаляет объекты базы данных

      TRUNCATE : удаляет все данные из таблиц

    DML (Data Manipulation Language / Язык манипуляции данными). К этому типу относят команды на выбору данных, их обновление, добавление, удаление - в общем все те команды, с помощью которыми мы можем управлять данными.

    К этому типу относятся следующие команды:

    • SELECT : извлекает данные из БД

      UPDATE : обновляет данные

      INSERT : добавляет новые данные

      DELETE : удаляет данные

    DCL (Data Control Language / Язык управления доступа к данным). К этому типу относят команды, которые управляют правами по доступу к данным. В частности, это следующие команды:

    • GRANT : предоставляет права для доступа к данным

      REVOKE : отзывает права на доступ к данным