Начало » Использование СУБД » Firebird, HQbird, InterBase » Избыточная ссылочность
Избыточная ссылочность [сообщение #1082] |
Mon, 05 December 2022 14:48  |
 |
Док
Сообщений: 101 Зарегистрирован: June 2022
|
Senior Member |
|
|
Комрады, есть мысль сделать в табле дополнительные внешние ключи, чтобы не добывать нужные сведения лишними джойнами из подчиненых таблиц. Насколько это целесообразно? И чем может грозить?
CREATE TABLE TBL_CHILD_1 (
ID INTEGER NOT NULL,
FK_SUBCHILD INTEGER,
NAME INTEGER
);
CREATE TABLE TBL_CHILD_2 (
ID INTEGER NOT NULL,
NAME VARCHAR(10)
);
CREATE TABLE TBL_MAIN (
ID INTEGER NOT NULL,
FK_CHILD_1 INTEGER,
FK_CHILD_2 INTEGER,
FK_SUBCHILD INTEGER,
NAME VARCHAR(10)
);
CREATE TABLE TBL_SUB_CHILD (
ID INTEGER NOT NULL,
NAME VARCHAR(10)
);
/******************************************************************************/
/*** Primary keys ***/
/******************************************************************************/
ALTER TABLE TBL_CHILD_1 ADD CONSTRAINT PK_TBL_CHILD_1 PRIMARY KEY (ID);
ALTER TABLE TBL_CHILD_2 ADD CONSTRAINT PK_TBL_CHILD_2 PRIMARY KEY (ID);
ALTER TABLE TBL_MAIN ADD CONSTRAINT PK_TBL_MAIN PRIMARY KEY (ID);
ALTER TABLE TBL_SUB_CHILD ADD CONSTRAINT PK_TBL_SUB_CHILD PRIMARY KEY (ID);
/******************************************************************************/
/*** Foreign keys ***/
/******************************************************************************/
ALTER TABLE TBL_CHILD_1 ADD CONSTRAINT FK_TBL_CHILD_1_1 FOREIGN KEY (FK_SUBCHILD) REFERENCES TBL_SUB_CHILD (ID);
ALTER TABLE TBL_MAIN ADD CONSTRAINT FK_TBL_MAIN_1 FOREIGN KEY (FK_CHILD_1) REFERENCES TBL_CHILD_1 (ID);
ALTER TABLE TBL_MAIN ADD CONSTRAINT FK_TBL_MAIN_2 FOREIGN KEY (FK_CHILD_2) REFERENCES TBL_CHILD_2 (ID);
ALTER TABLE TBL_MAIN ADD CONSTRAINT FK_TBL_MAIN_3 FOREIGN KEY (FK_SUBCHILD) REFERENCES TBL_SUB_CHILD (ID);

|
|
|
|
|
|
|
Re: Избыточная ссылочность [сообщение #1089 является ответом на сообщение #1085] |
Mon, 05 December 2022 16:41   |
pastor
Сообщений: 87 Зарегистрирован: June 2022 Географическое положение: Калуга
|
Member |
|
|
цена вопроса.
если экономить на join - то проще сразу подтянуть данные
если этих join меньше десяти - то проще сгородить select
в общем и целом, простая ссылка на справочник ничего не упрощает, а промежуточный справочник тащить так и так.
[Обновления: Mon, 05 December 2022 16:42] Известить модератора
|
|
|
|
|
|
|
|
|
|
|
Переход к форуму:
Текущее время: Wed Feb 19 06:31:11 GMT+3 2025
Общее время, затраченное на создание страницы: 0.01211 секунд
|