Опубликован: 14.11.2006 | Уровень: для всех | Доступ: платный
Лекция 6:

Работа с базами данных

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Аннотация: Дается представление о базах данных. Хранимые процедуры сервера SQL. Что такое ADO. Окно внешних источников данных. Создание страниц данных.
Ключевые слова: ASP, net, связывание, отображение, СУБД, ADO .NET, XML, путь, ПО, доступ, журналирование, транзакция, таблица, поле, запись, единица, базы данных, информация, ключ, база данных, точное время, GUI, идентификатор, представление, Windows, программа, интерфейс, VBA, Visual Basic, application, SQL, Visual Studio 2005, query language, инкапсуляция, механизмы, ODBC, control, Panel, administrative tools, Data, Oracle, SAP, DB2, excel, ADO, провайдер, ядро, DataSet, server, sqlconnection, класс, Connection, строка соединения, объект, Command, команда, execute, источник данных, состояние соединения, broken, запрос, запрос на выборку, время ожидания, исключение, префикс, создание процедур, значение, выборка, курсор, перегруженный метод, параметр, операции, откат, Rollback, COMMIT, двусторонний обмен, SDK, файл, Solution Explorer, class, Server Explorer, меню, пользовательский интерфейс, пункт, create, new, database, Local, сервер, polling, компьютер, Add, table, set, PRIMARY KEY, default value, binding, аргумент, Stored Procedure, stored procedures, UPDATE, smart tag, configure, Data Source, variant, ORDER BY

"Сведения, которыми не располагали древние, были очень обширны."

Марк Твен

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

Для хранения данных чаще всего используются СУБД (системы управления базами данных). Как уже говорилось, в ASP .NET 2.0 работа с данными происходит через ADO .NET 2.0— часть .NET, разработанная специально для доступа к базам данных или XML-файлам.

СУБД прошли долгий путь развития. В начале все данные хранили в простых (плоских) файлах. По мере увеличения объемов данных встал вопрос о том, как получить быстрый доступ к нужной информации. Для этого данные стали индексироваться. Другой вопрос — как избежать дублирования, когда одни и те же данные хранятся в разных местах. Чтобы его решить, была разработана теория нормализации баз данных. Сегодня мощная промышленная СУБД немыслима без систем защиты информации, журналирования, транзакций и хранимых процедур.

Данные в СУБД хранятся в таблицах. Таблица состоит из полей и записей. Записьединица хранения данных, строка таблицы. Например, в одной записи хранятся сведения об одном человеке. Поля — это столбцы таблицы для хранения конкретного вида информации. Базы данных называются реляционными, потому что таблицы в них связаны определенным образом.

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

Для наглядности рассмотрим эти понятия на примере. В свое время я работала с базой данных кадров одного предприятия. Как создать такую базу? Прежде всего нам нужна таблица для хранения данных о сотрудниках.

ID Имя Фамилия Отчество Дата рождения Дата приема Должность
1 Петр Васечкин Иванович 1965 2001 Завхоз
2 Василий Петров Сидорович 1977 2003 Программист

и т.д. Таблица может иметь тысячи записей.

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

Должности
ID Название должности Минимальный оклад
1 Директор 1
2 Завхоз 10
3 Программист 20
4 Уборщица 100

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

Перемещения
ID Сотрудник Должность Назначение Дата
1235 123 10 11 20.06.06

Таблица "Должности" связана как с таблицей сотрудников, так и с таблицей перемещений по своему уникальному ключу. База данных может генерировать первичные ключи сама, автоматически добавляя значения к предыдущему значению ключа. Это называется автоинкрементированием. Для полной уверенности в уникальности данных в таблицах могут держать точное время создания записи (Timestamp) и GUI (глобальный уникальный идентификатор).

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

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

SELECT Employees.LastName, Employees.FirstName, Titles.Title, 
Titles_1.Title, Promotions.PromotionDate FROM Titles AS Titles_1 
INNER JOIN ((Promotions INNER JOIN Titles ON 
Promotions.TitleBefore = Titles.id) INNER JOIN Employees ON 
Promotions.EmployeeID = Employees.EmployeeID) ON Titles_1.id = 
Promotions.TitleAfter;

Множество таблиц данных, связанных отношениями, составляют базу данных. На сервере СУБД может храниться множество баз данных.

Подробнее о теории баз данных можно прочитать в других курсах. Перейдем к конкретным примерам связывания с базами данных на web-страницах.

У каждого пользователя Windows наверняка имеется программа Access. Это однопользовательская СУБД, в которой модель безопасности не так сильна. В одном файле Access хранятся как данные, так и интерфейс в виде форм и отчетов. Можно создавать модули на VBA (Visual Basic for Application). Профессиональные разработчики пользуются более мощными программами. По "серьезности" СУБД от Microsoft идут в порядке возрастания: Access — FoxPro — MS SQL. MS SQL не позволяет создавать формы, а занимается хранением и защитой данных на профессиональном уровне. Visual Studio 2005 (и VWD) при инсталляции устанавливает MS SQL Express. Он будет запускаться автоматически в виде сервиса Windows.

Для работы с базами данных используется язык структурированных запросов — SQL (Structured Query Language). Команды этого языка называются запросами. Запросы служат для получения данных, для создания и изменения структуры таблиц, добавления, удаления и обновления записей и многого другого. Последовательность команд может храниться прямо на сервере СУБД в виде хранимой процедуры. Нужно стараться всегда пользоваться хранимыми процедурами, а не писать команды самим. Главное их преимущество — скорость работы и инкапсуляция бизнес-логики. Хранятся они на сервере в уже откомпилированном виде, в то время как простой переданный набор команд SQL проходит через стадию компиляции.

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

Для конфигурирования источников данных на вашем компьютере зайдите в Control Panel, Administrative Tools, Data Sources (ODBC).

Мы видим, что ODBC при наличии нужного драйвера позволяет связываться с различными базами данных — Access, FoxPro, Oracle, Microsoft SQL, MySQL, SAP, DB2. Если в файле Excel создать именованную таблицу, ODBC способен ее распознать и работать как с таблицей базы данных.

Веб-проект в Visual Studio 2005 содержит предопределенную папку App_Data. В ней могут храниться файлы с данными, которые используются в приложении. Это могут быть файлы .mdf (MS SQL ), .mdb (Microsoft Access), .xml и другие.

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319

Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008
Akiyev Begench
Akiyev Begench
Беларусь, Полоцк, полоцкий государственный университет