Шаг 4. Таблицы в базе данных
Теория
База данных — это, прежде всего, таблицы. Таблицы базы данных можно представить как таблицы в WORD или EXCEL, где в каждой ячейке содержатся определенные данные, но также есть и некоторые отличия.
Дело в том, что таблицы в базах данных создаются по некоторым правилам, и вот основные правила для таблиц в базе данных.
Так как мы изучаем SQL-диалект ORACLE СУБД, то данные правила справедливы именно для СУБД ORACLE:
• любая таблица в базе имеет уникальное наименование в рамках схемы данных;
• у каждой таблицы всегда есть заданное количество колонок: больше нуля и меньше 1024;
• каждая колонка также должна иметь уникальное наименование, но уже в рамках данной таблицы;
• в таблице в базе данных может быть практически неограниченное количество строк, здесь ограничения касаются только объема диска базы данных;
• для данных в таблице можно создавать ограничения. Ограничения касаются всех данных в колонке, на которую установлено ограничение;
• имена таблиц, имена колонок имеют ограничения по количеству символов и не могут называться зарезервированным словом, например командой из языка SQL или PL SQL. Также наименование колонки таблицы не должно начинаться с цифр;
• имя колонки в рамках таблицы также должно быть уникальным.
Создание таблиц по указанным правилам — это первый шаг в разработке базы данных.
Таблицы в базе, состав колонок таблицы должны производиться в соответствии со стандартами проектирования реляционной базы данных.
Работа со структурой таблиц, данными в таблицах осуществляется c помощью языка запросов SQL.
Одна или несколько колонок в таблице могут быть обозначены как первичный ключ.
Первичным ключом обозначаются колонки таблицы, содержащие набор уникальных значений, по которым мы можем однозначно идентифицировать строчку в рамках этой таблицы. Первичный ключ не может содержать пустые значения, так как всегда имеет ограничение NOT NULL.
Вторичный ключ — так обозначается колонка таблицы, в которой есть данные, используемые для связи с другой таблицей.
Таблицы нашей учебной схемы
Наша учебная схема очень проста и состоит всего лишь из четырех таблиц.
Первая таблица MAN содержит сведения о людях, которые приобрели машины.
Колонки таблицы MAN:
• PHONEnum — уникальный телефонный номер человека, первичный ключ для таблицы MAN, содержит текстовые данные;
• CITYCode — код города, вторичный ключ для связи с таблицей CITY;
• FirstName — имя человека (текстовые данные);
• LAStName — фамилия человека (текстовые данные);
• YearOld — возраст человека (числовые данные).
Таблица CITY — справочник городов, состоит из трех колонок:
• CITYCODE — уникальный код города, ключевое поле для таблицы CITY (числовые данные);
• CITYNAME — наименование города (текстовые данные);
• PEOPLES — население города, количество человек, которые проживают в городе (числовые данные).
Таблица AUTO — сведения об автомобилях автосалона.
Колонки таблицы AUTO:
• REGnum — уникальный регистрационный номер автомобиля (содержит текстовые данные);
• PHONEnum — телефонный номер покупателя, вторичный ключ для связи с таблицей MAN;
• MARK — марка авто (текстовые данные);
• COLOR — цвет авто (текстовые данные);
• ReleASeDT — дата создания авто, дата/время (специальный тип данных).
Таблица AUTO1 является копией таблицы AUTO и имеет те же колонки, что и таблица AUTO, и достаточно похожие данные, эта таблица используется в нескольких учебных заданиях (так же, как CITY1, MAN1).
Следующее изображение показывает основные таблицы в учебной базе данных в виде схемы:

Рисунок 6. Учебная схема базы данных
Вопросы учеников
Вы сказали, что наименования таблиц должны быть уникальны в рамках одной схемы. Что такое схема?
В СУБД есть понятие схемы — это особая логическая область, ассоциированная с заданной учетной записью, которая объединяет несколько объектов базы данных.
Почему телефонный номер покупателя PHONEnum — текстовое поле, разве оно не должно быть числовым?
Иногда телефонный номер заполняют со скобками. Чтобы разрешить это противоречие, я использовал текстовый (VARCHAR2) тип данных для этой колонки; кроме того, так сделать правильно, так как это упрощает поиск нужных нам номеров по префиксу.
Какие команды SQL позволяют изменять структуру таблицы, добавлять новые колонки, например?
Это команда ALTER TABLE, с которой мы познакомимся чуть позже.
Контрольные вопросы и задания для самостоятельного выполнения
1. Могут ли колонки разных таблиц называться одинаково?
2. Что такое первичный ключ, какие колонки (первичные ключи) есть в нашей учебной схеме?
3. Какие данные находятся в учебной таблице CITY?
4. Какая колонка в таблице MAN нашей учебной схемы содержит данные о возрасте человека?