Разработка релиационной базы данных в среде mysql

Автор работы: Пользователь скрыл имя, 21 Апреля 2012 в 14:57, курсовая работа

Описание

Цель данной курсовой работы заключается в рассмотрении основных вопросов проектирования баз данных в теории и создания базы данных на практике. Задача курсовой работы заключается в создании трех таблиц и запросов в среде MySQL.

Содержание

1. Техническое задание
2. Теоретическая часть
2.1. Модели баз данных
2.1.1. Объектные модели данных
2.1.2. МД на основе записей
2.1.2.1. Реляционные МД (Пост-реляционные МД)
2.1.2.2. Сетевые МД
2.1.2.3. Иерархические МД
2.1.3. Физические МД
2.2. Описание MySQL
2.2.1. История создания MySQL
2.3. Основные возможности MySQL
2.3.1. Язык запросов SQL
2.3.2. Внутренняя характеристика
2.3.3. Тип и структура таблиц
2.3.4. Типы столбцов
2.3.5. Команды и функции
2.3.6. Основные утилиты MySQL
3. Практическая часть
3.2. Проектирование и создание базы данных
3.3. Запросы
3.4. Заключение
3.5. Список используемой литературы

Работа состоит из  1 файл

курсовая работа.doc

— 936.00 Кб (Скачать документ)

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

          Для решения этих проблем Хьюз проанализировал свое отношение к Minerva, и, оказалось, что для Minerva многие возможности, имеющиеся в Postgres, не нужны и снижают ее производительность. Основными запросами, генерируемыми Minerva, были: «insert», «delete» и «select». Поскольку у Хьюза уже был mSQL, осуществлявший трансляцию SQL, ему требовалось только создание сервера базы данных, удовлетворяющего его потребностям.

Михаил Видениус

          Изобретателем MySQL является Михаил Видениус из шведской компании TcX. В 1979 году он разработал средство управления базами данных, которое называлось UNIREG. В дальнейшем UNIREG была расширена для поддержки больших баз данных и была переписана на нескольких языках. В 1994 году компания TcX стала разрабатывать приложения для www с использованием UNIREG. Однако в связи с большими накладными расходами UNIREG не могла успешно использоваться для динамической генерации Web-страниц. Поэтому Видениус решил связаться с автором mSQL, Хьюзом, чтобы предложить ему подключить mSQL к обработчику B+ ISAM в UNIREG. Однако Хьюз успешно продвинулся на пути к mSQL 2, и компания решила создать сервер баз данных под свои нужды.

          В TcX взяли за основу UNIREG и использовали утилиты сторонних разработчиков для mSQL, написали API для своей системы, который изначально сильно совпадал с API для mSQL. Однако это позволяло любому пользователю mSQL, желающему перейти на сервер баз данных ТсХ, внести в свой код незначительные изменения. Исходный код новой базы данных был полностью оригинальных. Таким образом, в мае 1995 года у компании имелась база данных MySQL 1.0 полностью удовлетворяющая потребностям компании.

          MySQL перенесена на многие ОС UNIX, под Win32 и OS/2 с момента выпуска в Интернет и представляет собой быстро развивающуюся платформу баз данных, благодаря множеству программистов, заинтересованных в ее развитии.

          В 1995 году Дэвид Оксмарк, работающий в компании Detron HB и являющийся бизнес-партнером фирмы, начал «давление» на ТсХ с тем, чтобы она начала распространять СУБД MySQL через интернет. Кроме того, Дэвид принял участие в работе над документацией. Версия 3.11.1 СУБД MySQL была выпущена в свет в 1996 году в виде бинарного дистрибутива для работы под управлением ОС Linux и Solaris. Сегодня MySQL работает на многих платформах и доступен как в двоичных кодах, так и в исходных текстах.

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

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

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

 

2.3.Основные возможности MySQL

 

2.3.1.Язык запросов SQL

 

После подключения к серверу терминал начинает принимать и выполнять как специальные внутренние команды (для вывода их списка и справки по ним наберите в терминале "help" и нажмите на Enter), так и запросы на языке SQL, используемом в MySQL.

Операции, выполняемые над отношениями, условно делят на две группы:

• операции над множествами (объединение, пересечение, разность, деление, декартово

произведение);

• операции над отношениями (проекция, соединение, выбор).

В реляционных СУБД для выполнения операций над отношениями используются две группы языков, в качестве математической базы для которых используются теоретические языки запросов, предложенные Эдгаром Коддом:

• реляционная алгебра;

• реляционное исчисление.

В первом случае (реляционная алгебра) операнды и результаты всех действий являются отношениями. Такие языки — процедурные, поскольку отношение, которое является результатом запроса к базе данных, вычисляется при последовательном выполнении операторов, применяемым к отношениям. Сами операторы состоят из операндов (отношений) и реляционных операций (их

результатом тоже является отношение).

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

SQL (Structured Query Language, "язык структурированных запросов") — универсальный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. В нем создается линейная последовательность операторов языка, которые выполняются

СУБД.

Операторы состоят из:

• имен операций и функций;

• имен таблиц и их столбцов;

• зарезервированных ключевых слов и специальных символов;

• логических, арифметических и строковых выражений.

 

2.3.2.Внутренняя характеристика

 

      Написан на C и C++. Протестирован на множестве различных компиляторов.

      Работает на различных платформах.

      Для обеспечения переносимости используется GNU Automake, Autoconf и Libtool.

      API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl.

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

      Очень быстрые дисковые таблицы на основе В-деревьев со сжатием индексов.

      Очень быстрая базирующаяся на потоках система распределения памяти.

      Очень быстрые соединения, использующие оптимизированный метод однопроходного мультисоединения (one-sweep multi-join).

      Хеш-таблицы в памяти, используемые как временные таблицы.

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

      MySQL- код протестирован с использованием Purify (коммерческий детектор утечки памяти), а также Valgrind, одного из GPL-инструментов.

 

2.3.3.Типы и структура таблиц

 

Создание, заполнение и изменение таблиц в MySQL осуществляются с помощью

стандартных SQL операторов CREATE TABLE, ALTER TABLE, INSERT, UPDATE, DELETE.

Определен также оператор REPLASE, который действует аналогично INSERT, но таким образом,

что если значение индекса UNIQUE или PRIMARY KEY в старой записи таблицы такое же, как и

в новой, то старая запись перед занесением новой будет удалена. Оператор TRUNCATE TABLE

предназначен для полного очищения таблицы.

Просмотреть список таблиц текущей базы данных позволяет конструкция SHOW TABLES,

а получить описание столбцов конкретной таблицы можно при помощи оператора DESCRIBE,

который не является стандартным и присутствует лишь в MySQL SQL.

 

2.3.4.Типы столбцов

 

      Большое количество: целочисленные со знаком/без знаковые, длиной в 1, 2, 3, 4 и 8 байтов, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET и ENUM.

      С записями фиксированной и переменной длины.

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

 

2.3.5.Команды и функции

 

      Полная поддержка операторов и функций в SELECT- и WHERE- частях запросов.

      Полная поддержка для операторов SQL GROUP BY и ORDER BY с выражениями SQL. Поддержка групповых функций (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX() и MIN()).

      Поддержка LEFT OUTER JOIN и RIGHT OUTER JOIN с синтаксисом ANSI SQL и ODBC.

      Разрешены псевдонимы для таблиц и столбцов в соответствии со стандартом SQL92.

      Поддержка функций DELETE, INSERT, REPLACE, и UPDATE.

      Имена функций не конфликтуют с именами таблиц и столбцов. Например, ABS является корректным именем столбца. Для вызова функции существует только одно ограничение: между именем функции и следующей за ним открывающей скобкой "(" не должно быть пробелов.

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

 

 

2.3.6.Основные утилиты MySQL

 

В стандартном дистрибутиве MySQL поставляются клиентские программы (утилиты), взаимодействующие с MySQL-сервером: mysql (консольный клиент для доступа к MySQL-серверу, позволяющий выполнять SQL-запросы), mysqladmin (утилита для выполнения административных функций, таких как создание или удаление баз данных, получение информации о процессах, состоянии сервера и т. п.), mysqldump (утилита для вывода содержимого базы данных MySQL в виде текстового файла с SQL-операторами), mysqlimport (выполняет перенос

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

К утилитам, которые могут функционировать без подключения к серверу MySQL,

относятся: myisampack (сжимает таблицы типа MylSAM, уменьшая их в размере и делая доступными только для чтения), mysqlcheck (утилита, используемая для описания, проверки, оптимизации и восстановления таблиц), mysqlbinlog (данная утилита используется для чтения содержимого журнала двоичной регистрации при восстановлении данных в нештатных ситуациях) и perror (утилита, которая выводит расшифровку кодов системных ошибок и ошибок MySQL).

 

 

 

 

 

 

 

3.Практическая часть.

 

 

3.2.Проектирование и создание базы данных

 

1.Создание базы данных:

 

MySQL>CREATE DATABASE kurss;

 

2. Использование созданной БД:

 

MySQL>USE kurss;

 

 

 

 

3.Cоздание 3 таблицы в нашей базе данных

 

   3.1. Таблица сhamp cо следующими столбцами: id чемпионата,  название , город и год проведения.

 

MySQL>CREATE TABLE сhamp (

      id_champ INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

      n_champ VARCHAR (16),

      city VARCHAR (16).

      year INT);

 

  3.2.   Таблица teams со столбцами: id, название команды и страна.

 

MySQL>CREATE TABLE Teams (

      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

      n_team VARCHAR (16),

      country VARCHAR(16));

 

  3.3.Таблица matchi co cтолбцам: id, команда1, команда2, id чемпионата, счет).

 

MySQL>CREATE TABLE matchi (

      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

      team1 VARCHAR (16),

      team2 VARCHAR (16),

      id_champ INT,

      score VARCHAR (16));

 

 

 

4.Заполнение таблиц

 

     4.1. Таблица champ

 

MySQL>INSERT INTO champ

      VALUES (1, “English Leage”,  ”London”,1993);

      VALUES (2, “Spanish Leage”,  ”Lisabon”,1987);

      VALUES (3, “Russian Leage”,  ”Moskow”,2001);

      VALUES (4, “Champion Leage”,  ”Tokio”,2012);

      VALUES (5, “World Cup”,  ”Keln”,2009);

      VALUES (6, “Euro Cup”,  ”Berlin”,2009);

      VALUES (7, “German Cup”,  ”Berlin”,2006);

      VALUES (8, “FNL”,  ”Omsk”,2002);

      VALUES (9, “FIFA”,  ”London”,2014);

      VALUES (10, “2st Devision”,  ”Volokolamsk”,1990);

 

 

 

 

 

 

 

 

 

 

 

4.2.Таблица teams

 

MySQL>INSERT INTO teams

      VALUES (46, “Arsenal”, “England”);

      VALUES (73, “Chelsea”, “England”);

      VALUES (34, “Tottenham”, “England”);

      VALUES (13, “Spartak”, “Russia”);

      VALUES (23, “Dinamo”, “Russia”);

      VALUES (7, “CSKA”, “Russia”);

      VALUES (56, “Barcelona”, “Spanish”);

      VALUES (47, “Real Madrid”, “Spanish”);

      VALUES (86, “Bavaria”, “German”);

      VALUES (90, “Nuremberg”, “German”);

 

 

 

 

4.3.Таблица matchi

 

MySQL>INSERT INTO matchi

      VALUES (1, “Barcelona”, ”Real Madrid”, 2, ”2:1”);

      VALUES (2, “Spartak”, ”Dinamo”, 3, ”3:1”);

      VALUES (3, “Arsenal”, ”Chelsea”, 1, ”3:2”);

      VALUES (4, “Arsenal”, ”Tottenham”, 1, ”1:4”);

      VALUES (5, “Barcelona”, ”Tottenham”, 4, ”3:3”);

      VALUES (6, “Barcelona”, ”Spartak”, 5, ”4:0”);

      VALUES (7, “Bavaria”, ”Spartak”, 6, ”4:2”);

      VALUES (8, “Bavaria”, ”Nuremberg”, 7, ”1:2”);

      VALUES (9, “CSKA”, ”Dinamo”, 8, ”1:1”);

      VALUES (10, “Arsenal”, ”Dinamo”, 9, ”4:1”);

      VALUES (11, “Spartak”, ”CSKA”, 10, ”4:4”);

 

 

 

 

 

3.3.Запросы.

 

Запрос 1.

Цель запроса: Вывести все  английские команды

 

      MySQL>select teams.n_team from teams where teams.country = "England";

Запрос 2.

Цель запроса: Поменять год проведения турнира FIFA c 2014 на 2009

      MySQL>UPDATE champ SET year = 2009 WHERE ((id_champ = 9) AND (year = 2014));

 

 

 

Запрос 3.

Цель запроса: Вывести все турниры проходящие в 2009 году

 

      MySQL>select champ.n_champ from champ where champ.year = 2009;

 

Информация о работе Разработка релиационной базы данных в среде mysql