Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2012, 13:11
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
Вопрос Вопросы по проектированию БД FB25

Вопросы по проектированию БД, подскажите, пожалуйста, что знаете:
Для какого кол-ва таблиц необходимо делать PrimaryKeys, ForeignKeys, Unique, Indecies? Например:
1) если таблица простой не редактируемый справочник вроде "валюты" или "типы документов" - нужны ли там PrimaryKey и проверка на уникальность названий? Нужны ли индексы?
2) если таблица является связью между двумя другими таблицами вида (T3_ID, T2_ID, T1_ID) нужно ли к двум другим делать ForeignKey? Нужно ли делать индексы?
3) насколько вообще часто имеет смысл делать ForeignKeys если политиками ролей, пользователей и интерфейсом уже невозможно удалить связанные данные?
4) в каких случаях имеет смысл создавать некие самодельные индексы отличающиеся от полей PK/FK/UNQ?
5) какое среднее соотношение таблиц/индексов? 1к4 нормально? или слишком много?
6) можно ли индексы называть в точности как называется поле по которому индекс работает? не создаст ли это ошибок? Индексы же вроде нигде в коде не запрашиваются по имени.

7) в FB/IBexpert можно создавать типы ошибок и выводимый текст, но для этого требуется создавать триггер, который будет перехватывать и показывать этот текст, может можно как-то заменить текст стандартных сообщений БД об ошибках? или как-то назначить на все попытки удаления связанных данных сразу ERR_MSG_1 ?
8) можно ли как-то заставить БД записывать автоматически timestamp при каждом Update записи (без дополнительных триггеров и процедур)? или может можно создавать некие триггеры на все одинаковые поля всей БД, которые бы сами обновляли их, без необходимости писать такой триггер для каждой таблицы?

9) как можно быстро перенести ХП из БД в тело программы? как правильно написать код FIBDataset.SelectSQL используя ХП из тела программы?
Ответить с цитированием
  #2  
Старый 14.03.2012, 14:17
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

индексы нужны для быстрого поиска, несколько замедляя вставку
остальное не знаю)
Ответить с цитированием
  #3  
Старый 14.03.2012, 18:59
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

1) Обычно справочники имеют только PK и как правило не индексируются (все зависит от данных)
2) Конечно надо делать FK, и вешать индекс на пару FK1, FK2.
3) ВСЕГДА! Целостность данных прежде всего!
4) а - если надо гарантировать уникальность
б - быстрый поиск
5) Все зависит от архитектуры базы и ее назначения. Если оперативная база (для загрузки) то обычно индексируют только PK, если хранилище (для запросов) то может быть индекс на каждом поле
6) Можно называть как угодно, но обычно я называю так PK_TAB1 , т.е. указываю тип индекса и таблицу.

Остальное не ко мне... с FB не работаю
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
Этот пользователь сказал Спасибо friz за это полезное сообщение:
delphicoding (14.03.2012)
  #4  
Старый 15.03.2012, 13:16
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

А на вопросы с 7-9 кто-нить ответить может???
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter