Лекция 10: Создание таблиц баз данных
После того как вы создали базу данных (с файлами и группами файлов), следующим шагом должно стать создание таблиц. Таблицы являются объектами, при помощи которых вы организовываете и храните свои данные. В этой лекции мы расскажем о главных решениях, принимаемых при создании таблиц базы данных. Так как возможны многие варианты настроек, то создание таблиц базы данных может оказаться несколько сложным процессом. Сначала мы рассмотрим основные требования к таблицам, а затем изучим некоторые настройки, сопровождая наше изложение примерами.
В данной лекции вы познакомитесь с системными и пользовательскими типами данных, узнаете, как помещать таблицы в группы файлов, узнаете, что такое null -значения и свойство IDENTITY. Вы также научитесь создавать таблицы при помощи Enterprise Manager и команд Transact SQL (T-SQL). Мы также вкратце затронем здесь другие важные вопросы, относящиеся к созданию таблиц, такие как ограничения, значения по умолчанию и индексы, о которых будет рассказано более подробно в последующих лекциях.
Создание основы структуры таблиц
Когда вы приступите к проектированию своих таблиц базы данных, вам потребуется принять некоторые решения, относящиеся к их структуре. К этим решениям относится определение того, какие элементы данных должны храниться в этих таблицах и как таблицы будут связаны друг с другом. Эта работа поможет представить общую картину базы данных, прежде чем вы углубитесь в создание таблиц. Ниже дан перечень этих глобальных решений:
- Какие данные будут храниться в каждой из таблиц?
- Какие колонки будут созданы для хранения данных и какие у них будут имена?
- Какие будут требования к диапазону данных, хранящихся в колонках (какие данные разрешено в них хранить), и какие типы данных Microsoft SQL Server 2000 должны применяться для каждой из колонок?
- Будут ли иметься колонки, которые могут содержать null-значения, или же вместо этого могут применяться значения по умолчанию? (Если разрешить null-значения, то, по сравнению с использованием значений по умолчанию, увеличится нагрузка на процессор.)
- Какие колонки станут первичными ключами, а какие внешними ключами?
- Какие типы ограничений должны использоваться?
- Какие типы индексов (кластеризованные или некластеризованные) должны иметься в таблице и для какой колонки или колонок они должны быть определены?
- Какие пользователи должны иметь доступ к тем или иным таблицам?
Постарайтесь найти ответы на как можно большее количество этих вопросов о проектировании системы и записать их на листок бумаги или в компьютерной программе для рисования схем, чтобы осознать общую конструкцию таблиц вашей базы данных, прежде чем начать создавать их. Нужно также узнать у ваших пользователей, каким образом будут осуществляться доступ к данным. Например, можно узнать, что некоторая таблица будет предназначена только для чтения или же будут производиться вставки, удаления или обновления данных. Узнайте, какие запросы будут выполняться чаще всего и из каких колонок будут извлекаться данные. Определите, какая информация действительно необходима для базы данных, а какую хранить не надо. Ответы на эти вопросы помогут вам принять решения о том, как создавать таблицы и индексы, какие ограничения могут применяться, какие значения по умолчанию могут оказаться полезными и т.д. А теперь давайте научимся создавать таблицы на основе этого "фундамента".
Основные понятия, относящиеся к таблицам
В данном разделе вы познакомитесь с некоторыми простыми, но важными понятиями, относящимися к таблицам. Мы рассмотрим пример базы данных, в котором вы познакомитесь с основными элементами таблиц и узнаете о системных типах данных и о том, как создавать и удалять пользовательские типы данных.
Создание таблицы базы данных
Таблица – это объект базы данных, который хранит данные в виде совокупности строк и колонок. Таблица определяется содержащимися в ней колонками. Данные организованы в форме, похожей на электронные таблицы Excel (см. пример таблицы Product_Info, показанный в табл. 10.1). Таблица Product_Info, используемая в наших примерах, будет создана в базе данных MyDB.
Таблица Product_Info применяется для хранения информации обо всех продуктах, продаваемых в магазине. Когда продукт становится готов к продаже, данные о нем добавляются в новую строку таблицы Product_Info. Эта таблица состоит из пяти колонок: Product_ID (Идентификатор продукта), Product_Name (Название продукта), Description (Описание), Price (Цена) и Brand_ID (Название торговой марки). В табл. 10.1 показаны в качестве примера три строки данных из таблицы Product_Info. Оператор T-SQL, применявшийся для создания этой таблицы (пустой, без данных) показан в разделе "Создание таблицы Product_Info с использованием системных типов данных" далее в этой лекции. (Об использовании оператора INSERT, применяемого для вставки данных в таблицы см. "Расширенное описание T-SQL" .)
Product_ID | Product_Name | Description | Price | Brand_ID |
---|---|---|---|---|
1 | Пятифутовый тент | Для одного-двух человек | 80.00 | 12 |
2 | Мини-печь | Работает на керосине | 20.00 | 33 |
3 | Рюкзак | Со стальным каркасом | 60.00 | 15 |
Мы вернемся к этому примеру таблицы базы данных в этой лекции, когда будем объяснять более сложные вопросы создания таблиц. Но сначала мы продолжим рассказ об основах, которые вы должны знать, чтобы уметь создавать таблицы.
Чтобы задать таблицу, вы должны решить, сколько колонок она будет иметь и данные каких типов (например, символьные или числовые) смогут храниться в каждой из колонок. Вы должны также задать допустимый диапазон для этих данных, например, вы можете разрешить использовать не более 30 символов или числа, хранимые в 4 байтах. Эти атрибуты задаются благодаря тому, что каждой колонке присваивается некоторый тип данных, являющийся набором атрибутов, определяющих тип и диапазон данных, способных храниться в этой колонке. Вы можете пользоваться многими системными типами данных, имеющимися в SQL Server, а можете создать и свой собственный тип данных, основанный на системных типах данных. (Вы не можете изменять системные типы данных, но можете создавать совершенно новые типы данных.)
Применение системных типов данных
Как мы уже говорили, вы задаете тип данных для каждой колонки таблицы. При задании типа данных у колонки задаются следующие атрибуты:
- Категория данных, которые могут содержаться в колонке (например, символьные данные, целые числа или изображения).
- Размер (длина) данных, хранимых в колонке.
- Точность чисел (этот атрибут применяется только для числовых типов данных), т.е. количество цифр, содержащихся в числах.
- Масштаб чисел (этот атрибут применяется только для числовых типов данных), т.е. количество цифр, способных помещаться справа от десятичной точки.
Типы данных могут также применяться к колонкам для представлений, параметров в хранимых процедурах и в функциях T-SQL, возвращающих одно или несколько значений данных. Встроенные типы данных, имеющиеся в SQL Server, перечислены в табл. 10.2. В SQL Server 2000 появились три новых типа данных: bigint, sql_variant и table. (Кроме нескольких исключений, явно указанных в табл. 10.2, для всех указанных объектов применяются те же самые типы данных.)
Тип данных | Описание | Сколько места занимает |
---|---|---|
tinyint | Целочисленные данные в диапазоне от 0 до 255. | 1 байт |
unique-identifier | Хранит 16-байтное двоичное значение, являющееся глобальным уникальным идентификатором (GUID) | 16 байт |
varbinary | Двоичные данные переменной длины, состоящие из n байтов, где n может принимать значение от 1 до 8000. Применяйте тип varbinary, если предполагаете, что элементы данных, хранимые в колонке, будут сильно отличаться по своим размерам | Фактическая длина введенных данных плюс 4 байта |
varchar[(n)] | Данные переменной длины не в кодировке Unicode, длиной в n символов, где n может принимать значение от 1 до 8000 | Фактическая длина введенных данных |