![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Внебрачные отношения." [D6, D7, fb2]
Mike Kouzmine © (2008-01-21 14:22:00)Имеет место быть.
Манагеры
Клиенты
Фирмы клиентов
Отношения
1 Клиенты имеют любое количество "фирм клиетнтов" и индекс клиент-фирма клиента - уникален
2 манагеры имеют любые "фирмы клиентов" - один к одному
Что сделал
CREATE TABLE CL_MAN (
CLIENT_NUM INTEGER NOT NULL,
MANAGER_NUM INTEGER NOT NULL
);
CREATE TABLE CLIENTS (
NUM INTEGER NOT NULL,
NICK VARCHAR(20) NOT NULL,
NAME VARCHAR(100) COLLATE PXW_CYRL
);
CREATE TABLE MANAGERS (
NUM INTEGER NOT NULL,
NICK VARCHAR(20) NOT NULL,
FIRSTNAME VARCHAR(20) COLLATE PXW_CYRL,
SECONDNAME VARCHAR(20) COLLATE PXW_CYRL,
LASTNAME VARCHAR(20) COLLATE PXW_CYRL,
NOTE VARCHAR(200) COLLATE PXW_CYRL
);
CREATE TABLE REKVISTS (
NUM INTEGER NOT NULL,
NICK VARCHAR(20) NOT NULL COLLATE PXW_CYRL,
NUM_CLIENT INTEGER,
NAME VARCHAR(40) NOT NULL COLLATE PXW_CYRL,
INN VARCHAR(20) NOT NULL COLLATE PXW_CYRL,
KPP VARCHAR(20) COLLATE PXW_CYRL,
PERCENT DOUBLE PRECISION DEFAULT 0 NOT NULL
);
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
ALTER TABLE CLIENTS ADD CONSTRAINT PK_CLIENTS PRIMARY KEY (NUM);
ALTER TABLE CL_MAN ADD CONSTRAINT PK_CL_MAN PRIMARY KEY (CLIENT_NUM, MANAGER_NUM);
ALTER TABLE MANAGERS ADD CONSTRAINT PK_MANAGERS PRIMARY KEY (NUM);
ALTER TABLE REKVISTS ADD CONSTRAINT PK_REKVISTS PRIMARY KEY (NUM);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
ALTER TABLE CL_MAN ADD CONSTRAINT FK_CL_MAN_1 FOREIGN KEY (CLIENT_NUM) REFERENCES CLIENTS (NUM) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE CL_MAN ADD CONSTRAINT FK_CL_MAN_2 FOREIGN KEY (MANAGER_NUM) REFERENCES MANAGERS (NUM) ON DELETE CASCADE ON UPDATE CASCADE;
/******************************************************************************/
/**** Indices ****/
/******************************************************************************/
CREATE UNIQUE INDEX MANAGERS_IDX1 ON MANAGERS (NICK);
CREATE UNIQUE INDEX REKVISTS_IDX1 ON REKVISTS (NICK);
CREATE INDEX REKVISTS_IDX2 ON REKVISTS (NUM_CLIENT);
CREATE UNIQUE INDEX REKVISTS_IDX3 ON REKVISTS (INN);
Что надо
Сделать вышеуказанные отношения.
Неуверен где - на клиенте или сервере?
Если где, то как лучше?
Подробностей не надо, только развернутый намек, ибо лет 7 не держал шашек в руках.
clickmaker (2008-01-21 15:08:00) [21]CREATE TABLE CL_MAN (
CLIENT_NUM INTEGER NOT NULL,
MANAGER_NUM INTEGER NOT NULL
);
это что за отношение?
клиенты манагера?
Mike Kouzmine (2008-01-21 15:01:00) [22]Имеется "прокладка"
CREATE TABLE CL_MAN (
CLIENT_NUM INTEGER NOT NULL,
MANAGER_NUM INTEGER NOT NULL
);
Нужна ли она. Если нужна, то кде поля заполнять или можно сделать это с помощью сервера?
clickmaker (2008-01-21 15:00:00) [23]
> Неуверен где - на клиенте или сервере?
в каком смысле на клиентесделать отношения?