Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проектирование Интернет-ориентированных баз данных




  • Зачем нужны базы данных?
  • Основные понятия
  • Язык SQL
  • Создание новых баз данных и таблиц
  • Добавление строк
  • Обновление строк
  • Удаление строк
  • Построение запросов
  • Проектирование базы данных
  • Определение требований к проектируемой системе
  • Анализ предметной области и выявление объектов, представляющих систему
  • Описание взаимосвязей между сущностями. Проектирование логической структуры БД
  • Проектирование физической структуры БД. Нормализация
  • Создание клиентской части СУБД на основе Web-технологий
  • Роль скриптов в Web-интерфейсах к СУБД
  • Роль технологии ActiveX в Web-интерфейсах к СУБД

Зачем нужны базы данных?

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

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

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

Основные понятия

Более четверти века на рынке промышленных СУБД доминируют системы, использующие реляционную модель хранения данных.

В реляционной модели данные хранятся в двумерных таблицах называемых отношениями (relation). Каждая таблица представляет некоторую сущность (entity). На рис. 3.1 приведена таблица supplier, представляющая сущность "Поставщик". Каждая строка такой таблицы содержит информацию об одном экземпляре сущности. В нашем примере это информация о конкретном поставщике. Совокупность значений полей одной строки таблицы называют кортежем. Столбцы таблицы представляют различные характеристики сущности. Такими характеристиками являются название организации поставщика (поле NAME), контактное лицо (CONTRACTOR), номер факса (FAX) и адрес электронной почты (EMAIL). Совокупность значений полей одного столбца таблицы называют доменом.

Рис.3.1. Таблица Supplier, представляющая сущность "Поставщик"

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

В примере, приведенном на рис. 3.2, первичным ключом таблицы STUFFJTYPE является поле ID. Таблица ESSENTIAL_STUFF имеет внешний ключ STUFF_ID. Связь, устанавливаемая этими ключами, позволяет определять, какой материал и в каком количестве необходим к конкретной дате.

Рис. 3.2. Связь таблиц ESSENTIAL_STUFF (необходимые материалы) и STUFFJTYPE (типы материалов)

Ключ ID таблицы STUFF_TYPE называется суррогатным, т. к. он не несет на себе никакой другой смысловой нагрузки, кроме связывания таблиц, и может искусственно генерироваться СУБД. Первичным ключом таблицы, приведенной на рис. 3.1, может быть столбец NAME. Такой ключ называют естественным, поскольку он представлен столбцом, описывающим сущность. Использование естественных первичных ключей позволяет избежать избыточности хранимой информации. Однако естественные ключи могут стать причиной других проблем. Так, в нашем примере при изменении названия некоторой фирмы придется проверить все поля связанных таблиц, в которых название фирмы является внешним ключом, и изменить название фирмы и там. Кроме того, редко удается найти естественный ключ, значения которого гарантированно уникальны. Встречаются разные фирмы с одинаковым названием, разные люди с одинаковыми фамилиями, разные города с одним именем и т. д. А главное требование для первичного ключа — уникальность идентификации экземпляра сущности. Поэтому в большинстве случаев использование суррогатных ключей предпочтительнее, чем естественных.

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

Язык SQL

В современных реляционных СУБД для описания и манипулирования данными используются диалекты языка SQL. Математической основой языка SQL является реляционная алгебра и реляционное исчисление. Стандарт языка SQL регламентируется Американским институтом стандартов (American National Standard's Institute — ANSI) и международной организацией стандартизации (International Organization for Standardization — ISO). Этот стандарт называется ISO-ANSI SQL. Последнюю версию стандарта в литературе именуют SQL/92. К сожалению, ни один из коммерческих продуктов не поддерживает в полной мере этого стандарта. Дж. Дейт в книге ['] называет языки существующих реляционных СУБД "надмножеством подмножества" SQL/92. Поскольку, не поддерживая некоторых аспектов стандарта, в других отношениях они превосходят его.

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

При описании языка мы постараемся, как можно меньше отходить от стандарта ISO-ANSI SQL, чтобы следующие далее примеры работали и на других СУБД (возможно с небольшими изменениями).

Создание новых баз данных и таблиц

Некоторые СУБД имеют визуальные средства для создания БД, описания таблиц и взаимосвязей между ними. Другие же требуют выполнить для этого специальные запросы SQL. Подмножество языка SQL, позволяющее создавать и описывать БД, называется DDL (Data Definition Language). СУБД MS SQL Server 7.0 имеет и визуальные средства описания БД и возможность сделать это посредством команд SQL.

Создать новую базу данных можно с помощью команды

CREATE DATABASE <name>,

где <name> — имя создаваемой БД.

Далее к созданной БД необходимо добавить таблицы. Это можно сделать с помощью команды CREATE TABLE. Команда имеет следующий формат:

CREATE TABLE <table name>

({ <column name> <data type> [<size>] [<colconstrnt>...]},...); [<tabconstrnt>].,..);

где:

<tabie name> — имя создаваемой таблицы;

<coiumn name> — имя столбца таблицы;

<data type> — тип значений столбца таблицы;

<size> — размер (актуален для некоторых типов данных, например для строк);

<coiconstrnt> — ограничения, накладываемые на значения столбца;

<tabconstrnt> — ограничения, накладываемые на таблицу. Необязательные параметры строки заключены в прямоугольные скобки.

В качестве значений параметра <data type> могут быть использованы следующие типы:

INTEGER (ЦЕЛОЕ ЧИСЛО),

CHAR (СИМВОЛЬНОЕ ЗНАЧЕНИЕ)

VARCHAR (СИМВОЛЬНОЕ ЗНАЧЕНИЕ, СОХРАНЯЮТСЯ ТОЛЬКО НЕ ПУСТЫЕ СИМВОЛЫ)

DECIMAL (ДЕСЯТИЧНОЕ ЧИСЛО),

FLOAT (ЧИСЛО С ПЛАВАЩЕЙ ТОЧКОЙ),

DOUBLE PRECISION (УДВОЕННАЯ ТОЧНОСТЬ С ПЛАВАИЦЕЙ ТОЧКОЙ),

DATETIME (ДАТА И ВРЕМЯ),

BOOL (ВУЛЕВОЕ ЗНАЧЕНИЕ)




Поделиться с друзьями:


Дата добавления: 2014-12-29; Просмотров: 434; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.