Главная » Просмотр файлов » Практикум по Базам Данных (Методические материалы)

Практикум по Базам Данных (Методические материалы) (1127013), страница 3

Файл №1127013 Практикум по Базам Данных (Методические материалы) (Практикум по Базам Данных (Методические материалы)) 3 страницаПрактикум по Базам Данных (Методические материалы) (1127013) страница 32019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Очевидное решениевыглядит следующим образом:SELECT AVG(quantity) AS average_quantity FROM itemaverage_quantity---------------------------------------81Проблема заключается в том, что результат применения агрегатной функции в SQL Server имееттот же тип, что и её аргумент. Таким образом, в этом примере необходимо преобразоватьзначения целочисленного столбца quantity:SELECT AVG(1.0*quantity) AS average_quantity FROM itemaverage_quantity--------------------------------------81.881918То же самое необходимо помнить и при делении.Примеры вопросов по обязательной частиОбъяснить, как работают написанные запросы.Рассказать про операцию соединения (JOIN) и различные её разновидности.Рассказать про агрегатные функции, предложения GROUP BY и HAVING.Как выбрать только уникальные значения какого-либо столбца?Как осуществить сортировку по возрастанию/убыванию по значению какого-либо столбца?Как агрегатные функции ведут себя по отношению к неопределённым значениям?Рассказать о теоретико-множественных операциях в SQL.Чем отличаются UNION и UNION ALL?Чем отличаются COUNT(*) и COUNT(field)?Как подсчитать количество уникальных значений столбца?Как можно осуществить проверку на неопределенное значение?Рассказать про предикат LIKE.Как можно выбрать только определенное количество строк?Чем SQL-таблица отличается от отношения?Примеры дополнительных вопросовИсправить неверно работающий запрос (запросы).Упростить один или несколько запросов.Округлить результирующее значение до 3 знаков после точки.Округлить вещественное число до целого без нулей после точки.Переписать запрос, не используя функцию MAX (MIN).Изменить формат вывода данных (например, формат даты и времени).9 Написать или модифицировать запрос по сформулированному заданию.10Практическое задание №2.

Проектирование схемы базы данныхПостановка задачиВторое практическое задание связано с проектированием схемы базы данных. Каждыйиндивидуальный вариант содержит ER-диаграмму некоторой предметной области, иногда оченьприблизительную (она может быть модифицирована, но не в сторону упрощения). Задачейстудента является решить, для чего будет использоваться создаваемая база данных, и, исходя изэтого, построить её концептуальную схему. Результатом данного практического задания являетсясхема базы данных (в виде диаграммы, содержащей таблицы и связи между ними, без уточнениятипов столбцов). Для проектирования схемы и построения диаграммы рекомендуетсяиспользовать среду Microsoft SQL Server Management Studio, хотя можно использовать и другиесредства.

Максимальная оценка за данное задание всегда составляет 8 баллов, а студент можетсдавать схему несколько раз, исправляя замечания преподавателей. При сдаче задания студентдолжен обосновать соответствие созданной схемы поставленной задаче.Темы для проработкиМодель "сущность-связь" (ER-модель).Первичные и внешние ключи.Типы связей и их моделирование.Нормальные формы и нормализация.Требования к схемеСхема должна соответствовать поставленной задаче.Связи между сущностями должны быть правильно смоделированы.Таблицы должны удовлетворять, по крайней мере, третьей нормальной форме.Желательно придерживаться какой-либо системы в именовании таблиц и столбцов.ПримерыВ качестве примера рассмотрим предметную область «Музыкальные предпочтения»:ИсполнительПесняЖанрНазвание1АльбомNОценкаПредпочтениеГородN1ФИОДата11ПолМеломанГодрожденияПервым шагом в проектировании схемы базы данных является определение цели созданиябазы данных.

Зададимся целью создать простую социальную сеть для меломанов, позволяющуюим:Находить людей, которые имеют схожие музыкальные вкусы.Получать от системы рекомендации, какие еще песни, альбомы и исполнители могутим понравиться.Просматривать рейтинг исполнителей, альбомов и композиций.Схема базы данных для этого случая может выглядеть, например, следующим образом:Рассмотрим получившиеся таблицы и некоторые рассуждения, которые привели кприведенной схеме: Таблица User хранит данные о пользователе-меломане. Помимо базовых данных, таких какимя, фамилия, пол, дата рождения и город, эта таблица хранит также адрес электроннойпочты для связи и авторизации в предполагаемой социальной сети (а также хэш пароля). Таблицы City и Country служат справочниками для городов и стран, позволяя избежатьизбыточности и аномалий обновления.12 Таблица Song хранит уникальный идентификатор и название песни.

Таблица Genre являетсясправочником жанров, а таблица SongGenre связывает песни и жанры, моделируя связьтипа «многие-ко-многим», так как одна песня может быть помечена несколькими жанрами,а также каждый жанр может включать несколько песен. Таблица Album хранит информацию об альбомах. Так как одна песня может быть включенав несколько альбомов, а каждый альбом может содержать несколько песен, но требуетсятаблица SongAlbum для организации связи «многие-ко-многим».

Эта таблица также хранитномер трека данной песни в альбоме. Важным столбцом в таблице Album является ссылка на исполнителя, если это альбомодного исполнителя. Если же это альбом-сборник, то ArtistID будет содержатьнеопределенное значение. Таблица Artist хранит данные об исполнителях, включая страну исполнителя. Исполнителисвязаны с песнями опять же с помощью связи «многие-ко-многим» (таблица SongArtist),учитывая случаи, когда у песни есть несколько исполнителей. Наконец, таблица Like хранит предпочтения пользователей: какая песня, когда и насколькопонравилась- пусть Score отражает оценку пользователем песни от 1 («ничегоособенного») до 5 («очень нравится»).13Практическое задание №3. Создание и заполнение таблиц в MS SQLServerПостановка задачиТретье практическое задание заключается в подготовке SQL-скрипта для создания таблицсогласно схеме, полученной в предыдущем задании (с уточнением типов столбцов). Необходимоопределить первичные и внешние ключи, а также декларативные ограничения целостности(возможность принимать неопределенное значение, уникальные ключи, проверочныеограничения и т.

д.). Таблицы следует создавать в отдельной базе данных.Кроме того, нужно подготовить данные для заполнения созданных таблиц. Объемподготовленных данных должен составлять не менее 10 экземпляров для каждой из стержневыхсущностей и 20 экземпляров для каждой из ассоциативных. На основе этих данных необходимосоздать SQL-скрипт для вставки соответствующих строк в таблицы БД.Темы для проработкиЯзык DDL, операторы CREATE TABLE и ALTER TABLE.Типы данных MS SQL Server.Декларативные ограничения целостности.Создание таблиц в среде Microsoft SQL Server Management Studio.Оператор INSERT.ПримерыРассмотрим скрипт для создания схемы базы данных, спроектированной в задании №2:CREATE TABLE [Country]([ID] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar](100) NOT NULL,CONSTRAINT [PK_Country] PRIMARY KEY ([ID] ASC));CREATE TABLE [Song]([ID] [int] IDENTITY(1,1) NOT NULL,[Title] [varchar](200) NOT NULL,CONSTRAINT [PK_Song] PRIMARY KEY ([ID] ASC));CREATE TABLE [Genre]([ID] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar](100) NOT NULL,CONSTRAINT [PK_Genre] PRIMARY KEY ([ID] ASC));CREATE TABLE [Artist]([ID] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar](100) NOT NULL,[CountryID] [int] NOT NULL,CONSTRAINT [PK_Artist] PRIMARY KEY ([ID] ASC)14);CREATE TABLE [City]([ID] [int] IDENTITY(1,1) NOT NULL,[CountryID] [int] NOT NULL,[Name] [varchar](100) NOT NULL,CONSTRAINT [PK_City] PRIMARY KEY ([ID] ASC));CREATE TABLE [Like]([UserID] [int] NOT NULL,[SongID] [int] NOT NULL,[Score] [tinyint] NOT NULL,[Date] [datetime] NOT NULL CONSTRAINT [DF_Like_Date] DEFAULT(getdate()),CONSTRAINT [PK_Like] PRIMARY KEY([UserID] ASC,[SongID] ASC));CREATE TABLE [SongGenre]([SongID] [int] NOT NULL,[GenreID] [int] NOT NULL,CONSTRAINT [PK_SongGenre] PRIMARY KEY([SongID] ASC,[GenreID] ASC));CREATE TABLE [SongArtist]([SongID] [int] NOT NULL,[ArtistID] [int] NOT NULL,CONSTRAINT [PK_SongArtist] PRIMARY KEY([SongID] ASC,[ArtistID] ASC));CREATE TABLE [SongAlbum]([SongID] [int] NOT NULL,[AlbumID] [int] NOT NULL,[TrackNo] [tinyint] NOT NULL,CONSTRAINT [PK_AlbumArtist] PRIMARY KEY([AlbumID] ASC,[SongID] ASC,[TrackNo] ASC));CREATE TABLE [Album]([ID] [int] IDENTITY(1,1) NOT NULL,[Title] [varchar](200) NOT NULL,15[Year] [int] NOT NULL,[ArtistID] [int] NULL,CONSTRAINT [PK_Album] PRIMARY KEY ([ID] ASC));CREATE TABLE [User]([ID] [int] IDENTITY(1,1) NOT NULL,[FirstName] [varchar](100) NOT NULL,[LastName] [varchar](100) NOT NULL,[Sex] [bit] NOT NULL,[BirthDate] [datetime] NOT NULL,[CityID] [int] NOT NULL,[Email] [varchar](100) NOT NULL,[PasswordHash] [varchar](100) NOT NULL,CONSTRAINT [PK_User] PRIMARY KEY ([ID] ASC));CREATE UNIQUE INDEX [IX_User] ON [User]([Email] ASC);CREATE UNIQUE INDEX [IX_Country] ON [Country]([Name] ASC);CREATE UNIQUE INDEX [IX_Genre] ON [Genre]([Name] ASC);ALTER TABLE [Artist]ADD CONSTRAINT [FK_Artist_Country] FOREIGN KEY ([CountryID])REFERENCES [Country] ([ID]);ALTER TABLE [City]ADD CONSTRAINT [FK_City_Country] FOREIGN KEY ([CountryID])REFERENCES [Country] ([ID]);ALTER TABLE [Like]ADD CONSTRAINT [FK_Like_Song] FOREIGN KEY ([SongID])REFERENCES [Song] ([ID]);ALTER TABLE [Like]ADD CONSTRAINT [FK_Like_User] FOREIGN KEY ([UserID])REFERENCES [User] ([ID]);ALTER TABLE [Like]ADD CONSTRAINT [CK_Like_Score]CHECK ([Score] > 0 AND [Score] < 6);ALTER TABLE [SongGenre]ADD CONSTRAINT [FK_SongGenre_Genre] FOREIGN KEY ([GenreID])REFERENCES [Genre] ([ID]);ALTER TABLE [SongGenre]ADD CONSTRAINT [FK_SongGenre_Song] FOREIGN KEY ([SongID])REFERENCES [Song] ([ID]);ALTER TABLE [SongArtist]ADD CONSTRAINT [FK_SongArtist_Artist] FOREIGN KEY ([ArtistID])16REFERENCES [Artist] ([ID]);ALTER TABLE [SongArtist]ADD CONSTRAINT [FK_SongArtist_Song] FOREIGN KEY ([SongID])REFERENCES [Song] ([ID]);ALTER TABLE [SongAlbum]ADD CONSTRAINT [FK_SongAlbum_Album] FOREIGN KEY ([AlbumID])REFERENCES [Album] ([ID]);ALTER TABLE [SongAlbum]ADD CONSTRAINT [FK_SongAlbum_Song] FOREIGN KEY ([SongID])REFERENCES [Song] ([ID]);ALTER TABLE [SongAlbum]ADD CONSTRAINT [CK_SongAlbum_TrackNo]CHECK ([TrackNo] > 0);ALTER TABLE [Album]ADD CONSTRAINT [FK_Album_Artist] FOREIGN KEY ([ArtistID])REFERENCES [Artist] ([ID]);ALTER TABLE [Album]ADD CONSTRAINT [CK_Album_Year]CHECK (([Year] > 1900) AND ([Year] <= YEAR(getdate())));ALTER TABLE [User]ADD CONSTRAINT [FK_User_City] FOREIGN KEY ([CityID])REFERENCES [City] ([ID]);ALTER TABLE [User]ADD CONSTRAINT [CK_User_BirthDate]CHECK (YEAR(getdate()) - YEAR([BirthDate]) >= 7);Приведенный выше скрипт содержит: Определения таблиц, первичных и внешних ключей. Ограничения CHECK: например, указано, что пользователь может оценивать, насколько емунравится песня по шкале от 1 до 5, другие значения Score считаются недопустимыми.

Характеристики

Тип файла
PDF-файл
Размер
841,09 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6508
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее