|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопросы по проектированию БД 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
|
|||
|
|||
индексы нужны для быстрого поиска, несколько замедляя вставку
остальное не знаю) |
#3
|
||||
|
||||
1) Обычно справочники имеют только PK и как правило не индексируются (все зависит от данных)
2) Конечно надо делать FK, и вешать индекс на пару FK1, FK2. 3) ВСЕГДА! Целостность данных прежде всего! 4) а - если надо гарантировать уникальность б - быстрый поиск 5) Все зависит от архитектуры базы и ее назначения. Если оперативная база (для загрузки) то обычно индексируют только PK, если хранилище (для запросов) то может быть индекс на каждом поле 6) Можно называть как угодно, но обычно я называю так PK_TAB1 , т.е. указываю тип индекса и таблицу. Остальное не ко мне... с FB не работаю Последний раз редактировалось Admin, Сегодня в 10:32. |
Этот пользователь сказал Спасибо friz за это полезное сообщение: | ||
delphicoding (14.03.2012)
|
#4
|
|||
|
|||
А на вопросы с 7-9 кто-нить ответить может???
|