Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Внебрачные отношения." [D6, D7, fb2]


Страницы:   1 2

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]


> Неуверен где - на клиенте или сервере?

в каком смысле на клиентесделать отношения?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо