Попробую помочь. Но предлагаю все- таки не Paradox (скорее бы он умер!) а
все- таки что- нибудь посерьезней. Например Firebird
Здесь я набросал БД (наспех)
Суть вот в чем
БД содержит таблицы
-Список преподавателей
-Список дисциплин
-таблицу связи где указано какой преподаватель какую дисциплину преподает
Причем 1 преп может преподавать несколько дисципл. и обратно- одну дисц
могут преподавать разные преподы (те связь Многие- с многими)
-и наконец таблицу расписания
В примитивном случае можно отказаться от табл преподавателей и дисциплин
оставив только табл связи.
Но это полностью лишит тебя возможности доработок программы.
Ну и конечно до нового года не успеть. Если это не поздно- пиши. Сделаю.
Код:
/*****************************************************
База данных программы Nikonov
по заказу Никонова
******************************************************/
SET AUTODDL ON;
SET ECHO ON;
OUTPUT isql.txt;
CONNECT 'Nikonov.fdb'
USER 'sysdba' PASSWORD 'masterkey';
DROP DATABASE;
COMMIT;
SET NAMES WIN1251;
SET SQL DIALECT 3;
CREATE DATABASE 'Nikonov.fdb'
USER 'sysdba' PASSWORD 'masterkey'
DEFAULT CHARACTER SET WIN1251;
COMMIT;
CONNECT 'Nikonov.fdb'
USER 'sysdba' PASSWORD 'masterkey';
/***************************************************
Список преподавателей
****************************************************/
CREATE TABLE Prepods (
Tabnum INTEGER NOT NULL, /* таб номер */
Fam VARCHAR(50) NOT NULL, /* фамилия препода */
Sex CHAR(1), /* пол */
PRIMARY KEY(Tabnum)
);
/***************************************************
Дисциплины
****************************************************/
CREATE TABLE Diszipls (
Naimen VARCHAR(20) NOT NULL, /* наименование дисциплины первичный ключ */
Chasov INTEGER, /* объем курса в часах */
Auditoria VARCHAR(20), /* аудитория */
PRIMARY KEY(Naimen)
);
/***************************************************
Таблица связи
****************************************************/
CREATE TABLE Sootv (
NN INTEGER NOT NULL, /* первичный ключ */
Tabnum INTEGER NOT NULL, /* таб номер */
Naimen VARCHAR(20) NOT NULL, /* наименование дисциплины первичный ключ */
CONSTRAINT Tabnum_FK FOREIGN KEY (Tabnum) REFERENCES Prepods(Tabnum) ON DELETE CASCADE,
CONSTRAINT Naimen_FK FOREIGN KEY (Naimen) REFERENCES Diszipls(Naimen) ON DELETE CASCADE,
PRIMARY KEY(NN)
);
CREATE GENERATOR Sootv_NN_GEN;
SET GENERATOR Sootv_NN_GEN TO 0;
/***************************************************
Расписание
****************************************************/
CREATE TABLE Raspisanie(
NN INTEGER NOT NULL, /* первичный ключ */
NN_Sootv INTEGER, /* внешний ключ связи с таблицей соответствия */
Dat DATE, /* дата занятий */
CONSTRAINT Raspisanie_FK FOREIGN KEY (NN_Sootv) REFERENCES Sootv(NN) ON DELETE CASCADE,
PRIMARY KEY(NN)
);
CREATE GENERATOR Raspisanie_NN_GEN;
SET GENERATOR Raspisanie_NN_GEN TO 0;
SET TERM !;
/**********************************************
Генераторы первичных ключей
***********************************************/
------------------------------------------------------- */
CREATE TRIGGER Raspisanie_trig FOR Raspisanie
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.NN=GEN_ID(Raspisanie_NN_GEN,1);
END!
CREATE TRIGGER Sootv_trig FOR Sootv
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.NN=GEN_ID(Sootv_NN_GEN,1);
END!
/***********************************************
Начальная инициализация
************************************************/
SET TERM ;!
COMMIT;