Изменение структуры таблицы
Стр 1 из 8Следующая ⇒ Введение
Базу данных можно определить как совокупность взаимосвязанных хранящихся вместе данных при наличии такой минимальной избыточности, которая допускает их использование оптимальным образом для одного или нескольких приложений; данные запоминаются так, чтобы они были независимы от программ, использующих эти данные; для добавления новых или модификации существующих данных, а также для поиска данных в базе данных применяется общий управляемый способ. Данные структурируются таким образом, чтобы была обеспечена возможность дальнейшего наращивания приложений [9]. Итак, база данных – является моделью некоторой предметной области, состоящей из связанных между собой данных об объектах, их свойствах и характеристиках. Понятие база данных появилось в конце 60-х годов. До этого в сфере обработки данных говорили о файлах данных и о наборах данных. Как часто бывает, когда новое понятие становится модным, многие пользователи начали применять его к своим файлам, изменив только название, но не изменяя при этом их свойств, связанных с неизбыточностью, независимостью, взаимосвязанностью данных, их защитой или во многих случаях возможностью доступа в реальном времени. Нет ни одной системы программного обеспечения, которая бы реализовала все характеристики, присущие идеальной базе данных; системным аналитикам, как правило, при разработке подобных систем приходится идти на компромисс, отдавая предпочтение тем или иным свойствам базы данных. Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области. Для реализации этой цели имеются следующие инструменты:
- реляционная модель данных – удобный способ представления данных предметной области; - язык SQL – универсальный способ манипулирования такими данными. Язык SQL стал фактически стандартным языком доступа к базам данных. Все СУБД, претендующие на название "реляционные", реализуют тот или иной диалект SQL. Многие нереляционные системы также имеют в настоящее время средства доступа к реляционным данным. Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории, например, вместо "отношений" используются "таблицы", вместо "кортежей" – "строки", вместо "атрибутов" – "колонки" или "столбцы". Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах отходит он нее. Например, отношение в реляционной модели данных не допускает наличия одинаковых кортежей, а таблицы в терминологии SQL могут иметь одинаковые строки. Имеются и другие отличия. Язык SQL является реляционно полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL. Методические указания состоят из пяти лабораторных работ по разработке, наполнению и редактированию баз данных посредством языка SQL. Лабораторные работысостоят из заданий, соответствующих основным разделам учебной программы по специальности 230201 – "Информационные системы и технологии". Каждое из заданий сопровождается подробными методическими указаниями по их выполнению и пошаговому осуществлению команд. Студентам необходимо ознакомится с теорией создания баз данных и основными элементами языка SQL, приведенными в данных указаниях, и затем разработать базу данных по предложенным вариантам (прил.), а также ответить на контрольные вопросы и оформить отчеты по результатам проделанных работ.
Лабораторная работа № 1. РАБОТА С БАЗАМИ ДАННЫХ И ТАБЛИЦАМИ MS SQL SERVER
Цель работы - Закрепление теоретических знаний по базам данных и таблицам. - Приобретение практических навыков по созданию, изменению и удалению баз данных и таблиц. - Создание основных таблиц базы данных предметной области.
Теоретическая часть Работа с базой данных Любая база данных SQL Server состоит из набора таблиц с данными и дополнительных объектов, предназначенных для управления данными. К таким объектам относятся, например, представления, триггеры, хранимые процедуры и функции пользователя. Таблицы для хранения данных создаются в соответствии с логическим определением данных, например, данные об имеющихся на складе товарах хранятся в одной таблице, а список персонала – в другой. SQL Server предлагает несколько путей создания баз данных: - использование Enterprise Manager. Для создания базы данных с помощью Enterprise Manager в контекстном меню папки D atabases на нужном сервере выберите команду New Database (Новая база данных). Также создание можно выполнить с помощью мастера Create Database Wizard. В панели инструментов Enterprise Manager щелкните на кнопке Run a Wizard (Запустить мастера) и выберите нужного мастера. - использование Transact-SQL. Используется утилита QueryAnalyzer. Этот метод предполагает выполнение команды CREATE DATABASE. В простейшем случае, для того чтобы создать базу данных, достаточно указать ее имя. В общем же случае при создании базы данных помимо ее имени указывается имя владельца (им будет пользователь, создающий базу данных) и размер базы данных, определяются файлы и группы файлов, из которых будет состоять создаваемая база данных, задается шаг прироста, сопоставление и некоторые другие параметры. Перед созданием базы данных необходимо знать, что: - пользователь, создающий базу данных, автоматически становится ее владельцем; - имя (название) базы данных должно соответствовать правилам именования объектов. Для хранения базы данных используются три типа файлов. Primary – первичный файл. Каждая база данных обязательно имеет такой файл, причем только один. В этом файле хранится системная информация о базе данных и ее объектах. Здесь же размещаются системные таблицы. Кроме того, в первичном файле могут храниться и пользовательские данные. По умолчанию этот файл имеет расширение .mdf.
Secondary – вторичный файл. Здесь содержатся пользовательские данные, не поместившиеся в первичном файле. Если база данных небольшая и нет надобности создавать вторичные файлы, то всю информацию можно хранить в первичном файле. Однако если база данных имеет большие размеры, можно иметь несколько вторичных файлов, причем для удобства работы с данными эти файлы можно хранить на разных дисках. По умолчанию вторичные файлы имеют расширение. ndf. Transaction Log – файл журнала транзакций. Минимальный размер такого файла 512 Кбайт. База данных должна иметь, по крайней мере, один файл журнала транзакций. В этом файле будет храниться информация о транзакциях, выполняемых в базе данных. По умолчанию файлам журнала транзакций присваивается расширение. ldf. Создание баз данных Первой задачей, с которой сталкивается администратор при реализации разработанной на бумаге базы данных (включая и все ее объекты), является ее создание. С помощью Enterprise Manager не всегда удается получить доступ ко всем возможностям создания баз данных, предлагаемым SQL Server. Эти возможности доступны только при непосредственном использовании команд Transact-SQL. При работе с Transact-SQL создание базы данных выполняется с помощью команды CREATE DATABASE, имеющей следующий синтаксис: CREATE DATABASE database_name [ ON [ PRIMARY ] [ < filespec >] [, < filegroup >] [ LOG ON { < filespec > } ] Как видно из синтаксиса и как было сказано выше, при создании базы данных обязательным является лишь указание ее имени. Все остальные параметры могут быть опущены, но все же рассмотрим подробно назначение каждого из параметров команды CREATE DATABASE. - database_name. Имя, которое будет присвоено создаваемой базе данных. При выборе имени следует следовать общим правилам именования объектов. Если имя базы данных содержит пробелы или другие недопустимые символы, оно должно быть заключено в ограничители (двойные кавычки или квадратные скобки). Имя базы данных должно быть уникальным в пределах сервера и не может превышать 128 символов. Если имя журнала транзакций явно не указано, то сервер укорачивает имя базы данных таким образом, чтобы оно не превышало 123 символов. Это делается из-за того, что сервер по умолчанию использует для имени журнала транзакций имя базы данных и добавляет к нему в конце символы "_Log".
- ON. После этого ключевого слова указывается описание файлов базы данных. - PRIMARY. Это ключевое слово свидетельствует, что описываемый далее файл является первичным файлом базы данных. Напомним, что в этом файле хранятся все системные данные и таблицы. Только один файл в базе данных может быть первичным. Если первичный файл не определен явно, то в этом качестве будет использоваться первый файл, указанный в конструкции <filespec>. Группа файлов, в которую включен первичный файл, называется первичной группой файлов (primary file group). Первичная группа назначается группой файлов по умолчанию (default file group), то есть в нее включаются все файлы, для которых явно не указана целевая группа файлов. - LOG ON. Указание этого ключевого слова означает, что файлы журнала транзакций будут определены явно. После слов LOG ON должно следовать определение файлов журнала транзакций. Если это ключевое слово отсутствует, то есть пользователь не задает явно файлы журнала транзакций, то сервер автоматически создает единственный файл размером 25 % от суммарного размера файлов данных, но не менее 512 Кбайт. Имя файла генерируется на основе имени базы данных, но в конце к нему добавляются символы "_Log". Как видно из синтаксиса команды CREATE DATABASE и уже рассмотренных параметров этой команды, при создании базы данных можно определить набор файлов, из которого будет состоять создаваемая база данных. Пример 1 CREATE DATABASE GISON (NAME = Names_dat, FILENAME = 'c:\program files\microsoft sql server\mssql\data\prods.mdf', SIZE = 4, MAXSIZE = 10,FILEGROWTH = 1) В этом примере создаем базу данных с именем GIS. Так как в параметрах SIZE мы не указали MB или KB, то размерность устанавливается по умолчанию в Мб. После выполнения получаем сообщение: The CREATE DATABASE process is allocating 4.00 MB on disk 'Names_dat'.The CREATE DATABASE process is allocating 1.00 MB on disk 'GIS_log'.
Первая строка подтверждает, что для нашей базы данных в памяти зарезервировано пространство, не превышающее 4 Мб. Файлы журнала транзакций не будут определены явно, так как не указали ключевое слово Log on. Сервер автоматически создал единственный файл размером 25 % от суммарного размера файлов данных, то есть 1 Мб.
Пример 2 CREATE DATABASE Kafedra_1В этом примере мы не указываем граничных размеров базы данных, и она, при добавлении в нее файлов, будет заполнять все свободное место на диске. Ограничение – объем диска.
Удаление баз данных
Для удаления базы данных используется следующая команда: DROP DATABASE database_name […..n]Аргумент database_name задает имя базы данных, которую необходимо удалить. Одной командой можно удалить несколько баз данных, перечислив их через запятую. Пример 3. DROP DATABASE Kafedra_1.2.4. Работа с таблицами Вся хранящаяся в базе данных пользовательская информация содержится в объектах, называемых таблицами (tables). Таблицы имеют следующую структуру. - Столбцы (column). Каждый столбец представляет собой атрибут или совокупность атрибутов объектов, например идентификационные номера служащих, рост, цвет машин и т.п. Часто в отношении столбца используется термин поле с указанием имени, например " в поле Name ". - Строки (rows). Каждая строка (или запись) представляет собой совокупность атрибутов конкретного объекта, например, в строке может содержаться идентификационный номер служащего, размер оклада этого служащего, год его рождения, цвет глаз и т. п. Строки таблиц не именуются. Некоторые поля в строке могут быть вычисляемыми (computed) – в таких полях указывается не конкретное значение, а выражение (формула), в соответствии с которым генерируется значение для этого поля. Выражение может включать имена других столбцов таблицы, константы, вызовы функций, а также любые операторы. Использование переменных запрещается. Виды таблиц: - Системные таблицы. SQL Server хранит данные, определяющие конфигурацию сервера и всех его баз данных, в специальном наборе таблиц, известном как системные таблицы (system tables). Следует разделять данные, относящиеся к серверу, и данные, относящиеся к конкретной базе данных. Первые хранятся в системной базе данных master, тогда как вторые – в соответствующей базе данных. Поскольку данные, хранящиеся в системных таблицах, играют весьма важную роль в работе сервера, необходимо обезопасить их от удаления или неверного изменения. Поэтому пользователь не должен напрямую вносить изменения в системные таблицы. По умолчанию прямой доступ к системным таблицам (то есть доступ посредством команд INSERT, UPDATE и DELETE) запрещен. Тем не менее с помощью запроса SELECT пользователи могут реализовать непосредственную выборку данных из системных таблиц. Для изменения данных в системных таблицах необходимо использовать специальные системные хранимые процедуры, поставляемые вместе с SQL Server и расположенным в базе данных master. Другой альтернативой является применение приложений, использующих интерфейс SQL-DMO API. Имеющийся набор хранимых процедур охватывает практически все возможные ситуации управления сервером и базами данных, так что необходимость прямого доступа к системным таблицам почти полностью исключена. Кроме того, использование в прикладных приложениях хранимых процедур позволяет гарантировать, что работоспособность программы сохранится даже в случае возможного изменения структуры системных таблиц в следующих версиях SQL Server. - Временные таблицы. SQL Server поддерживает так называемые временные таблицы (temporary tables), предназначенные для временного хранения информации. Временную таблицу можно использовать, к примеру, для временного хранения промежуточных результатов при сложных расчетах. Временные таблицы сохраняются не в текущей базе данных, а в системной базе данных tempdb (даже если при создании временной таблицы вы явно укажете какую-либо другую базу данных, это будет проигнорировано и таблица все равно будет создана в базе данных tempdb). В распоряжении пользователей имеются два вида временных таблиц. - Локальные временные таблицы (local temporary tables). Названия этих таблиц начинаются с одного символа #, например #results. Таким образом, для создания локальной временной таблицы необходимо перед именем таблицы при ее создании указать один символ #. В дальнейшем для ссылки на созданную таблицу в ее имени также необходимо указывать символ #. Локальные временные таблицы существуют до тех пор, пока существует соединение со SQL Server, в котором эти таблицы были созданы, и автоматически уничтожаются при его закрытии. - Глобальные временные, таблицы (global temporary tables). Доступ к временным таблицам этого типа может быть получен из любого соединения, установленного с текущим сервером, и независимо от того, в каком именно из этих соединений была создана глобальная временная таблица. При этом также не важно, какой конкретно пользователь создал эту временную таблицу и в контексте какой базы данных. Названия глобальных временных таблиц начинаются с символов ##, например ## minutes. Таким образом, чтобы создать глобальную временную таблицу, достаточно в начале ее имени указать символы ##. Однако так как глобальная временная таблица видна из любого соединения, ее имя должно быть уникально в пределах сервера. Когда сервер встречает имя таблицы, начинающееся с символов # или ##, он обращается к базе данных tempdb для поиска указанной таблицы. При этом игнорируется имя владельца таблицы и имя базы данных. Указание имени сервера при обращении к временной таблице вообще не разрешается. Таким образом, создание временной таблицы возможно только на текущем сервере. При попытке указать имя сервера при создании временной таблицы будет выдано сообщение об ошибке. В остальном же работа с временными таблицами ничем не отличается от работы с обычными таблицами. В процессе проектирования таблиц принимается решение о том, какие таблицы должны входить в базу данных, какие типы данных будут использованы для построения таблиц, какие пользователи получат доступ к каждой из таблиц. В процессе проектирования необходимо ответить на следующие вопросы: - какие данные, каких типов должны быть включены в таблицы? - какие столбцы будут составлять каждую из таблиц (если потребуется, то с указанием их размера)? При этом необходимо стремиться хотя бы к третьей нормальной форме. Одновременно с этим требуется выбрать имена для столбцов таблицы. (SQL Server позволяет включать в одну таблицу до 1024 столбцов.) - какие столбцы могут содержать значения NULL? - будут ли использованы ограничения целостности или значения по умолчанию и правила для столбцов и если будут, то где? - необходимо ли индексирование столбцов? Если да, то какие типы индексов, для каких столбцов будут применены? - какие столбцы будут входить в первичные и внешние ключи? Типы данных Одним из свойств столбца является его тип данных. Поскольку каждый столбец представляет один признак объекта, данные в каждом столбце подобны, то есть тип данных значений, хранящихся в одном и том же столбце, одинаков. SQL Server имеет набор встроенных типов данных, называемых системными. Этот набор приведен в табл. 1. Таблица 1. Типы данных, используемые в SQL Server 2000
Итак, каждый столбец таблицы должен содержать данные, соответствующие типу данных столбца. Например, допускается неявное преобразование типа данных int в тип данных decimal или значений типа данных varchar в значения типа данных char. При необходимости можно использовать функции преобразования типов данных. Значение NULL NULL – это специальное значение, представляющее собой отсутствие любого значения. NULL – это не то же самое, что знак пробела или ноль. Пробел – это допустимый символ, а 0 – допустимое число. NULL также отличается от строки нулевой длины (пустой строки). Столбцы могут разрешать или запрещать хранение значений NULL. Если столбец запрещает хранение значений NULL, то в таблицу нельзя вставлять строки, имеющие значение NULL для этого столбца. Создание таблиц Создание таблицы выполняется при помощи команды CREATE TABLE. Данная команда имеет довольно сложный синтаксис: CREATE TABLE [database_name.[ owner ]. | owner. ] table_name ({ <column_definition> | column_name AS computed_co1umn_expression I < table_constraint > } [ __n ] ) [ ON { filegroup | DEFAULT } ] Рассмотрим последовательно все ее параметры. - database_name – название базы данных, в которой создается таблица. Если значение этого параметра опускается, то таблица создается в текущей базе данных. Прежде чем пользователь сможет создать таблицу, ему должны быть предоставлены соответствующие права в базе данных. - owner – с помощью этого параметра указывается имя пользователя, который будет являться владельцем создаваемой таблицы. Этот пользователь уже должен существовать в базе данных, в которой создается таблица. - table_name – имя создаваемой таблицы. При выборе имени для таблицы необходимо следовать стандартным правилам формирования идентификаторов объектов. Комбинация имени таблицы и ее владельца (owner.tablename) должна быть уникальной в пределах базы данных. Если таблица создается не в текущей базе данных, необходимо включить в описание имени таблицы ссылку на требуемую базу данных. Длина имени таблицы не должно превышать 128 символов. Если в начале имени указываются символы # или ##, то будут созданы соответственно локальная и глобальная временные таблицы. Длина имен временных таблиц, включая символы # и ##, не должна превышать 116 символов. - column_name – название столбца таблицы. Названия столбцов должны соответствовать правилам для идентификаторов и быть уникальными в пределах таблицы. Параметр column_name может быть опущен для столбцов, имеющих тип данных timestamp. По умолчанию столбцу с таким типом данных присваивается имя timestamp. - computed_column_expression – выражение, задающее значение для вычисляемого столбца. Вычисляемые столбцы являются виртуальными столбцами, то есть физически такие столбцы в таблице не хранятся. Они вычисляются с использованием значений столбцов той же самой таблицы - ON {filegroup | DEFAULT} – обозначает группу файлов, в которой предполагается хранить таблицу. Данная файловая группа уже должна существовать для базы данных. Если указан идентификатор DEFAULT или описанный параметр не определяется вообще, таблица будет сохранена в файловой группе по умолчанию. Помимо собственно таблицы параметр ON {filegroup | DEFAULT} может быть указан и для ограничений целостности PRIMARY KEY и UNIQUE. Для работы этих ограничений SQL Server автоматически создает индекс, который и будет расположен в указанной группе файлов. Если явно не указано, в какой группе файлов следует хранить данные индекса, то они будут сохранены в той же группе файлов, что и сама таблица. Рассмотрим пример создания таблицы " Students ", содержащей такие столбцы, как: " ID " – первичный ключ, идентификатор записи; " Name " – имя студента; " Surname " – отчество студента; " Birth " – дата рождения студента; " _ID_Group " – идентификатор группы студента: Пример 4. USE Kafedra CREATE TABLE Students ( ID int IDENTITY (1, 1) PRIMARY KEY, Name varchar (50) NOT NULL, Surname varchar (50) NOT NULL, Birth datetime NOT NULL, ID_Group int NOT NULL )
Изменение структуры таблицы Как бы тщательно не планировалась структура таблицы, все же иногда возникает необходимость ее изменения. Для этого существует команда ALTER TABLE. С ее помощью можно выполнять изменение свойств существующих столбцов, удалять их или добавлять в таблицу новые столбцы. Также имеется возможность управлять ограничениями целостности как на уровне столбца, так и на уровне таблицы. Назначение многих параметров и ключевых слов команды ALTER TABLE аналогично назначению соответствующих параметров и ключевых слов команды CREATE TABLE. Рассмотрим пример добавления в таблицу " Students " поля " Family " – фамилия студента: Пример 5. USE Kafedra ALTER TABLE Students ADD Family varchar (50). Удаление таблиц Последняя операция, которую можно выполнить с таблицей, – это ее удаление. Удаление таблицы выполняется довольно просто – при помощи команды DROP TABLE, имеющей единственный аргумент с именем таблицы, которую необходимо удалить: DROP TABLE table_name. Хотя команда DROP TABLE и является чрезвычайно простой, сама по себе операция удаления таблицы в некоторых случаях требует определенного внимания. Дело в том, что сервер не даст удалить таблицу, если на нее с помощью ограничения целостности FOREIGN KEY ссылается другая таблица. Помимо этого, удаление таблицы также будет невозможно, если на нее ссылаются объекты базы данных, созданные со связыванием схемы (то есть с параметром SCHEMABINDING). Поэтому не следует удивляться, если при попытке удаления таблицы будет выдано сообщение об ошибке. Рассмотрим пример удаления таблицы " Students ": Пример 6. USE Kafedra DROP TABLE Students.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|