Создание базы данных в InterBaseВведение Если ты решил почитать эту статью, то у тебя есть желание научиться разрабатывать серверные базы данных. Это сейчас очень актуальное направление в мире программного обеспечения. Потому что, все больше и больше коммерческих организаций хотят автоматизировать свои внутренние и внешние процессы. Мы разработаем базу данных в InterBase! Немного теории Реляционная база данных – это система таблиц, связанных между
собой. Вот такое простое определение :) Вот что получилось в результате длинного пути развития человечества, помни: все эти слова синонимы!
В теории баз данных есть несколько непонятных слов, которые я сейчас тебе объясню. Первичный ключ таблицы – это такое уникальное поле (или уникальная группа полей), используемое для идентификации каждой строки. Я рекомендую для первичного ключа выделять специальное поле (числовое!) и не использовать группу полей. Вообще наличие у каждой таблицы ключа необязательно, но его отсутствие – дурной тон, поэтому в каждой таблице определяй первичный ключ! Первичный ключ таблицы - важный элемент в структуре базы данных. Они - основа твоей системы, когда ты захочешь найти определённую строку в таблице, ты будешь ссылаться на этот первичный ключ. Вторичный ключ – это поле, необходимое для связи с другими таблицами. Если что-то не понятно, сильно не беспокойся – на практике все достаточно просто! Постановка задачи Представь, что к тебе пришел умный дядька и просит тебя написать
ему программу, которая организует прозрачность работы автомойки (на самом деле
компания не имеет принципиального значение, ну у нас пусть будет автомойка :).
А что такое прозрачность? Прозрачность в данном контексте означает то, что есть
система, которая хранит все операции автомойки и позволяет следить за бизнесом. • Таблица (справочник) ПЕРСОНАЛ (PERSONAL)
• Таблица ГРАФИК РАБОТЫ (GRAFWORK)
• Таблица АВТОМОБИЛИ (CAR)
• Таблица ОПЕРАЦИИ (OPERATION)
• Таблица СЕРВИСЫ (TSERVICE)
• Таблица (справочник) УСЛУГИ (SERVICE)
По поводу двух последних таблиц: в SERVICE мы заносим все услуги предоставляемые
автомойкой, а TSERVICE необходима для связи справочника УСЛУГИ (SERVICE) с таблицей
ОПЕРАЦИИ (OPERATION). Дело в том, что клиент может заказать несколько услуг,
и чтобы они все принадлежали одной операции нужна таблица TSERVICE. Приведенная диаграмма выполнена в нотации IDEF1X (Integration
Definition for Function Modeling), разработанной Т.Рэмей. С постановкой задачи разобрались! Теперь за практику! Установка InterBase 7.5 Я решил использовать InterBase 7.5. Именно 7.5! Потому что люблю использовать последние версии программных продуктов, так как в новых версиях появляется много интересных фишек и исправлена добрая куча ошибок, замеченных в предыдущих версиях ПО. Но о том, что в свежей версии всегда есть куча новых багов лучше не думать :) Кликай на кнопку ‘Next’, выбирай тип установки ‘Server and
Client’ и еще несколько раз жми на ‘Next’. Теперь в Пуске появился новый пункт меню: Пуск – Программы – InterBase 7.5 Developer Edition. Все, теперь можно приступать к запуску InterBase, для этого запусти IBConsole: Пуск – Программы – InterBase 7.5 Developer Edition – IBConsole. После запуска появится окно, изображенное на рис.3. Нам нужно зарегистрировать сервер InterBase, для этого лезь в меню “Server” и выбирай “Register …”, появится окошко, заполни его так чтобы получилось что-то вроде этого (рис.4): Мы будем создавать базу на своем компе, поэтому выбирай Local Server. В поле Description введи описание нашего сервера. В поле Login Information – вводим логин и пароль админа базы данных, по умолчанию он будет (не знаю почему, но введи именно эти данные, потом можно будет добавлять и удалять пользователей): User Name: SYSDBA Жми "Ok" – сервер зарегистрирован! Обязательно создай папку, где ты хочешь сохранить свою базу
данных (вся твоя база будет состоять из одного GDB-файла!). Указываем название файла базы данных и его месторасположение,
в одной из строк списка Files.
Список Default Character Set не трогай! Если на твоем компе используется русский язык (то есть в настройках винды указано что ты в России), то русские буквы будут поддерживаться твоей базой. В поле Alias вводим произвольный псевдоним. Жмем ОК, база создана, окно IBConsole стала такой (рис.6.): Теперь все готово, можно переходить непосредственно к реализации того, что мы разобрали в Постановке задачи. InterBase версии 7.5 позволяет манипулировать данными с помощью
гуя, но мы все будем делать через утилиту Interactive SQL, так как с интерфейсом
я думаю ты и так разберешься, а вот основные команды SQL тебе пригодятся. Определение типов данных таблиц Назначая типы данных полям таблиц, можно использовать свои
типы – домены. Это удобно, если имеются одинаковые поля в нескольких таблицах.
Кроме того, использование доменов гарантирует реализацию соединения таблиц,
а значит, поддержку ссылочной целостности. CREATE DOMAIN dnDB AS DATE Эти строки означают, что мы создаем домен с именем "dnDB",
тип данных: дата и накладываем ограничения: значение должно быть меньше либо
равно сегодняшней дате. rollback; и нажав CTRL+E.Ну, это так к слову… Должно получиться вот так (рис. 8): Теперь нажми кнопку либо юзай сочетание клавиш: CTRL+E. Если ошибок нет, тогда у тебя в базе появится свеженький домен :) Продолжим создавать наши домены. CREATE DOMAIN dnData AS DATE Жми CTRL+E, у тебя должны создаться 9 доменов (рис.9)
Создание таблиц Введи в окне Interactive SQL следующий код: CREATE TABLE Personal ( Create table – команда создания таблицы, после команды указывается
название таблицы, дальше в скобках указываются параметры таблицы, потом скобка
закрывается и обязательно ставится точка с запятой.
В скобках у нас указаны четыре поля. После имени поля указывается его тип, то есть домен. Командой PRIMARY KEY определяем первичный ключ. Не знаешь что такое первичный ключ? Бегом в начало статьи я об этом подробно писал! Жми кнопку «Высокого напряжения» - третья справа, вуаля, таблица создана. Не останавливаемся на достигнутом, создаем еще 6 таблиц: CREATE TABLE Client ( Команда "FOREIGN KEY (PersonalKod) REFERENCES Personal (PersonalID)" связывает таблицу GRAFWORK и PERSONAL. Чтобы разобраться со всеми связями обратись к ER-диаграмме, на самом деле, здесь все просто. Жми CTRL+E, у тебя должны создаться 7 таблиц (рис.10): Создание генераторов В Interbase нет такого типа как счетчик или autoincrement,
выход из этой ситуации обеспечивается созданием, так называемого генератора! CREATE GENERATOR GEN_CAR; Нажимаем выполнить. SET GENERATOR GEN_CAR TO 0; Нажимаем выполнить. Остальные генераторы создаются аналогично: CREATE GENERATOR GEN_CLIENT; Теперь жми CTRL+E, у тебя должно получится вот так (рис. 11): Создание триггеров У нас есть генераторы, с заданным начальным значением. Осталось только привязать
каждый генератор к конкретной таблице и конкретному полю. SET TERM !!; Выполняем запрос! Опаньки, наш генератор теперь введен в работу :) Конструкция SET TERM задает новый разделитель операторов. Если
ее не использовать, то получится, что у тебя и после NEW.CARID = GEN_ID(GEN_CAR,1);
стоит точка с запятой и после END тоже стоит точка запятой, а InterBase это
не нравится, почему я так и не понял, но она без конструкции SET TERM отказывается
создавать триггер. SET TERM !!; после TERM необходимо поставить пробел, а между «!!» и «;» ставить пробел необязательно! С этой проблемой я столкнулся при переходе на версию 7.5, в IB6 скрипты работали без разделения пробелом «TERM» и «!!;». Рассмотрим поподробней, что же мы накодили: Создаем остальные триггеры: SET TERM !!; SET TERM !!; SET TERM !!; SET TERM !!; SET TERM !!; SET TERM !!; Выполняй запрос. Теперь все генераторы связаны со своими таблицами. В теории баз данных есть такая фишка: каскадное удаление данных,
то есть при удалении строки из родительской таблицы происходит автоматическое
удаление данных из дочерних таблиц. В нашем случае, например, тебе захочется
удалить какого-нибудь сотрудника из таблицы «PERSONAL», но в «GRAFWORK» есть
информация о графике работы этого сотрудника и в «OPERATION» находятся все операции
совершенные им. То есть если сотрудник исчезнет, в связанных таблицах данные
«повиснут», и твоя база будет засорена. Заходи в Interactive SQL и пиши: SET TERM !!; Жми CTRL+E, получишь триггер. Мы создали триггер "BEF_DEL_PERSONAL" для таблицы "PERSONAL", который будет срабатывать перед удаление строки (ACTIVE BEFORE DELETE), выполняя удаление из таблицы «GRAFWORK» и «OPERATION» (DELETE FROM ...). Теперь сделай еще два триггера с помощью скрипта: SET TERM !!; SET TERM !!; Выполни скрип, у тебя получатся вот такие триггеры (рис.12): Всё готово!!! Использование базы данных Чтобы от нашей базы была хоть какая-то польза необходимо внести
в нее информацию. Фишка SQL-скриптов Если ты заметил, в папке ‘sql’ есть еще несколько файлов, так
вот в них содержатся все скрипты по созданию БД описанные выше! Теперь ты понял
фишку использования SQL-скриптов? Сейчас ты в любой момент можешь заново создать
свою базу буквально за 30 секунд :) Тебе достаточно в нужном порядке выполнять
скрипты, а именно:
Будут вопросы – пиши!
Madin, 02.01.2006 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поиск по сайту
Copyright 2004 - 2009: Madin
Авторство всех материалов данного сайта охраняется Законом о защите авторских прав. Разрешается копировать информацию с сайта при условии сохранения ссылки на www.movemind.narod.ru |