C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
БД и ключи к ним, Как сделать лучше??
Storm
Отправлено: 27.07.2003, 05:43


Не зарегистрирован







Например есть 2-е таблицы:

Города:
id_City << Primary(key)
Name_City

Районы:
id_Area << Primary(key)
id_City
Name_Area

Как лучше сделать ключи к ним???

Отредактировано Storm — 27/07/2003, 06:47
Young Coder
Отправлено: 27.07.2003, 10:12


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Насколько я знаю, для скорейшего поиска, лучше делать все возможные варианты ключей. Правда при добавлении или обновлении данных будут заметные тормоза.
Admin
Отправлено: 27.07.2003, 13:32


Владимир

Группа: Администратор
Сообщений: 1190



О каких ключах идет речь ?
Что нужно — сделать связи между этими таблицами (foreign key)
или по каким полям создавать индексы ?

Если речь идет о связях между таблицами, о создании внешнего
ключа, то конечно это ключ по полям id_City — id_City
для ваших двух таблиц.

А что касается индексов — если вы создадите foreign key, то по полям
участвующим в ключе индекс будет создан автоматически, специально
вам его создавать не надо.
Точно также индекс автоматически создается для полей,
присутствующих в первичном ключе (Primary Key), в вашем случае,
для полей id_City таблицы Города и id_Area таблицы Районы.

Что касается полей Name_City в таблице Города и
Name_Area в таблице Районы, то если по этим полям
будет производиться частый поиск данных, то для
ускорения поиска можете создать индексы по этим полям.

Учтите, при интенсивном добавлении/удалении записей
из таблиц, и плюс при больших размерах этих таблиц,
это может замедлить работу из-за постоянной необходимости
перестройки индекса.

Хотя в вашем случае, после того, как данные по городам-районам
будут влиты в таблицы, вряд-ли начнется массовое изменение
названия районов или городов. smile.gif

То есть — ориентироваться в этом случае надо на то — для чего
у вас эти таблицы
 — если в основном для поиска/выборки данных,
что-то типа поисковой системы, то индекс по этим полям нужен,
если просто для регистрации участников чего-либо,
данные постоянно вносятся/удаляются и поиск по этим полям почти
не делается, то индекс не нужен.

Отредактировано Admin — 27/07/2003, 14:37
Storm
Отправлено: 27.07.2003, 21:48


Не зарегистрирован







Спасибо!!
Именно то что я и хотел узнать smile.gif)
Таблицы используются в основном для регистрации
И данных там будет не так много

Вернуться в Работа с базами данных в C++Builder