Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Информатика. Спецглавы. 2012
Цель работы: познакомиться с понятием реляционная база данных, научиться проектировать хранилище данных на основе связанных таблиц, разработать базу данных и запросы для извлечения данных, научиться строить запросы двумя способами: с помощью конструктора и на языке SQL. Работа выполняется в СУБД OpenOffice.org Base, NeoOffice Base или MS Access.
Поля: фамилия, имя, дата рождения, место жительства, № стационарного телефона, № мобильного телефона, название тарифа (тарифный план), используемого для оплаты разговоров, оператор связи, размер абонентской платы, поминутный тариф. При проектировании следует учесть, что у абонента может быть несколько городских и несколько мобильных телефонов.
Запросы:
Проектирование структуры данных
Имеются данные об участниках студенческой олимпиады: фамилия, имя, год рождения, номинация, название команды, вуз, регион, где находится вуз. От вуза участвует одна команда. В каждой команде может быть несколько участников.
Если все данные поместить в одну таблицу, то сведения о команде и вузе будут многократно продублированы, что увеличит объем хранимых данных. Поэтому персональные данные участников (фамилия, имя) поместим в одну таблицу - Студенты, а данные о командах в другую - Команды. Для идентификации записи в таблице Студенты введем идентификатор участника (целое число) и сделаем его ключевым. Ключевое поле содержит неповторяющиеся записи и обязательно для заполнения. Для идентификации записи в таблице Команды введем ключевое поле Идентификатор команды. Для связывания таблиц в таблицу Студенты добавим поле Идентификатор команды. Тип связи: Много (Студенты) к одному (Команды).
В результате получим следующую схему данных:
Студенты |
Команды |
|
ID_student (идентификатор команды, первичный ключ, целое) First_name (фамилия, текст) Last_name (имя, текст) BD_Year (год рождения, целое) Nomination (номинация, текст) ID_team (идентификатор команды, целое) |
Team_name (название команды, текст) University (вуз, текст) Region (регион, текст) |
Рис. 1
Создание базы данных
Файл / Создать Базу данных / Создать новую базу данных. Откажитесь регистрировать базу данных.
В результате будет создана пустая база данных. В левой части окна появится список компонентов базы данных: таблицы, запросы, формы, отчеты.
Создание таблицы
Перейдите в раздел Таблицы. Создайте таблицу в режиме дизайна (Конструктор таблиц): укажите имена полей, их типы. Тип текстового поля обозначается ключевым словом VARCHAR, целого - INTEGER, твенного - FLOAT, даты - DATE.
Задайте ключевое поле (первичный ключ) ID_student см. контекстное меню левого серого поля Конструктора таблиц. Установите для него автозаполнение.
Сохраните таблицу с именем Студенты.
Закройте Конструктор таблиц.
Связывание таблиц
Сервис / Связи...
Откроется окно Конструктора связей. Из него добавьте обе таблицы и закройте окно. Мышкой или с помощью команды Создать связь соедините поля ID_team обеих таблиц. Параметры связи оставьте по умолчанию.
Сохраните связи и закройте окно Конструктора связей.
Построение запроса при помощи Конструктора запросов
Чтобы не выводилось поле Nomination, следует в строке Видимый снять флажок.
Примеры запросов на языке SQL
Команда SELECT одна из наиболее часто используемых команд языка SQL. Она используется для создания запросов. После названия команды перечисляются через запятую поля, являющиеся результатом запроса, ключевое слово FROM определяетсписок таблиц, из которых берутся данные. Если данные должны быть получены из разных таблиц, перед именем поля следует указать имя таблицы "Студенты.First_name". Предложение WHERE определяет условие отбора.
SELECT "First_name", "Last_name" FROM "Студенты"
SELECT "First_name", "Last_name" FROM "Студенты" WHERE "Nomination" = 'Java-программирование'
SELECT COUNT( "ID_student" ) FROM "Студенты" WHERE "Nomination" = 'java-программирование'
Другие стандартные функции:
MAX() - наибольшее значение, MIN() - наименьшее значение, AVERAGE() - среднее значение, SUM() - сумма.
SELECT COUNT( "ID_student" ) FROM "Студенты" GROUP BY "Nomination"
Для этого запроса требуются данные из обеих таблиц. Записи отбираются, если одновременно выполнено два условия: совпали названия названия команд в таблицах Студенты и Команда и название команды в таблице Команды совпало с заданным (Бинарик). В запросе используется логический оператор AND И (также в запросах можно использовать OR ИЛИ и NOT НЕ).
SELECT "Команды"."Team_name", "Студенты"."First_name", "Студенты"."Last_name" FROM "Студенты", "Команды" WHERE "Студенты"."ID_team" = "Команды"."ID_team" AND "Команды"."Team_name" = 'Бинарик'
SELECT "First_name", "Last_name" FROM "Студенты" WHERE "BD_year" = ( SELECT MAX( "BD_year" ) FROM "Студенты" )
3