Re: Флуд
Пример создания базы данных в формате Paradox
В первой таблице содержатся сведения о студентах, во второй
о предметах, в третьей - оценки студентов по данным предметам.
Будем считать, что студенты могут иметь оценки не по всем
предметам, а по одному предмету - более одной оценки.
Спроектируем структуру таблиц. Таблица по студентам Stud
включает поля
StudId - номер студента (обязательное поле);
Gr - группа (обязательное поле);
SName - фамилия (обязательное поле);
Rost - рост;
Hobby - увлечения.
Таблица по предметам Predm включает поля
PredmId - номер предмета (обязательное поле);
PNazv - название предмета (обязательное поле);
PKaf - название кафедры, ведущей данный предмет.
Таблица по оценкам Exam включает поля
ExamId - номер оценки (обязательное поле);
EStudId - номер студента (обязательное поле);
EPredmId - номер предмета (обязательное поле);
Ocenka - оценка (обязательное поле).
Для машины баз данных BDE база данных (БД) должна храниться
в отдельной папке. Создадим эту папку и вызовем утилиту
Database Desktop. Она может запускаться независимо или из
среды Delphi: Tools->Database Desktop.
Новая таблица в утилите Database Desktop создается через
меню File->New->Table. Удобнее всего согласиться с
предлагаемым типом таблиц Paradox 7, "родным" для BDE.
Типы полей таблицы Stud:
StudId - + (Autoincrement) - номер студента проставляется
автоматически;
Gr - Alpha(6) - строка не более чем из 6 символов;
SName - Alpha(20) - строка не более чем из 20 символов;
Rost - Short - короткое целое;
Hobby - Memo(50) - для текстов произвольной длины, первые
50 символом хранятся в основном файле.
Поле StudId объявим первичным ключем (символ '*' в колонке
Key). Для первичного ключа часто выбирают уникальный номер. В
нашем случае это позволяет отличать однофамильцев. Кроме того,
легко ошибиться при наборе фамилии. В таблицах Paradox
первичный ключ не имеет имени, а вторичные ключи могут
создаваться только при наличии первичного ключа. Зададим для
поля StudId минимальное значение 1 (Validity Checks Minimum
Value), иначе позже могут возникнуть проблемы при добавлении
записей (значением поля оказывается NULL и возникает ошибка
Key Violation). Это должно быть сделано при создании таблицы,
как поясняется в опции Help утилиты Database Desktop.
Аналогично выбираем типы полей двух других таблиц.
Первичными ключами в них объявим поля PredmId и ExamId. В
таблице Exam для правильной связи с таблицами Stud и Predm
поля EStudId и EPredmId должны иметь тип Long Integer.
В правом верхнем углу экрана расположен элемент Combo Box
для задания свойств таблиц. Для каждой таблицы установим
языковой драйвер (Table Language) Pdox ANSI Cirillic, чтобы в
приложениях корректно отображался русский текст.
В таблице Exam зададим вторичные индексы (Secondary
Indexes): IndStud по полю EStudId и IndPredm по полю EPredmId
для связи с таблицами Stud и Predm. Чтобы обеспечить
правильный ввод номеров студента и предмета, в режиме Table
Lookup укажем, что значение поля EStudId должно быть одним из
значений поля StudId таблицы Stud, называемой таблицей
подстановки, а значение поля EPredmId - одним из значений поля
PredmId таблицы Predm. При указании подстановочных полей
таблицы Stud и Predm должны быть закрыты. Ввод значений
записей в утилите Database Desktop неудобен, т.к. в ней самой
русская кодировка не поддерживается.
Далее желательно назначить псевдоним (alias) нашей БД,
например, StPrEx. Для файл-серверных БД это не обязательно, но
удобно в случае переноса таблиц в другое место или
конвертирования их в другие форматы. Это обеспечивается через
меню Tools->Alias Manager, далее New, тип драйвера STANDARD.
Можно назначить псевдоним и с помощью утилиты SQL Explore,
которая вызывается либо самостоятельно, либо из среды Delphi
(Database->Explore).
Заполнение значений можно делать утилитой SQL Explore. На
вкладке Databases слева выбираем БД StPrEx, затем нужную
таблицу, вкладка Data справа выводит нас на режим ввода
записей.
Анонс:
Лабораторная 2: приложение с главным меню, формами для
ввода данных в таблицы, согласованным просмотром каждой из
родительских таблиц совместно с дочерней таблицей.
Лабораторная 3: навигация в таблицах, поиск данных,
фильтрация, индексация, сортировка, визуализация,
корректировка, бизнес-правила.
__________________
|