Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Каким поисковиком вы пользуетесь ?

Google.ru
Google.com
Rambler
Mail.ru
WebAlta
Яндекс
Апорт
Yahoo
Gogo.ru
Другим


Результаты
Другие опросы

Всего голосов: 1715
Комментарии: 4


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Статьи и обзоры



Создание таблиц. Ключи и индексы

Подборка статей по программированию на языке C++ и в средах разработки Visual C+ и C++ Builder. Даже если вы считаете себя профессионалом, вы все равно найдете здесь для себя что-то новое. Опытом делятся профессионалы. Давайте определимся с номенклатурой. Поле - это ячейка в таблице. Запись - набор из полей. Так вот, существуют разные типы полей - обычные, индексные и ключевые. Обычные поля - просто данные. Индексное поле - поле, по которому данные сортируются. Ключевое - поле, значение которого уникально. В общем-то четкого разделения нет. Ведь программа базы данных может сортировать таблицу и по обычным полям, а индексное поле может быть также уникальным.

В BDE достаточно логично поределена структура построения полей и их типов. Для этого имеются классы TxxxDef (три икса здесь обозначают подстановку, а то мало ли что Вы подумаете ;)), произведенные ото абстрактного базового класса TNamedItem. В компоненте TTable имеются и соответствующие свойства

TIndexDefs
TFieldDefs


Как и следовало предполагать, эти свойства содержат в себе определения индексных и обычных полей. Здесь нет свойства типа TKeyDefs, потому что в таблицах типа Парадокс индексные поля могут быть сами по себе уникальны. За счет этих свойств и задаются параметры таблицы, ее сетка. Создание таблицы довершает метод CreateTable.

Теории было много, теперь практика. Вот пример, честно скажу, взятый их Хелпа и перекомментированный автором (то есть мной).

Код
if (!Table1->Exists) // Don't overwrite an existing table
{
Table1->Active = false; // Компонент TTable должен быть отключен.

// Опишем параметры таблицы.
Table1->DatabaseName = "BCDEMOS";//это по желанию
Table1->TableType = ttParadox; //как обычно, Парадокс.
Table1->TableName = "CustInfo";//имя создаваемой таблицы.

// Опишем поля и их типы.
Table1->FieldDefs->Clear();
TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "Field1";// имя, обычной строкой.
pNewDef->DataType = ftInteger;//то, о чем я говорил.
//установим, является ли поле обязательным
pNewDef->Required = true;
//еще одно поле.
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "Field2";
pNewDef->DataType = ftString;
//определим размер поля.
pNewDef->Size = 30;
// Теперь взялись за индексы
Table1->IndexDefs->Clear();
/* Первый индекс безымянный, поскольку это основной индекс Парадокса. */
Table1->IndexDefs->Add("","Field1", TIndexOptions() <<ixPrimary << ixUnique);
Table1->IndexDefs->Add("Fld2Index","Field2", TIndexOptions() << ixCaseInsensitive);

// Ну и наконец, создаем таблицу.

Table1->CreateTable();



Это все еще объяснять и объяснять. Но, я надеюсь, общая логика понятна.



Нет комментариев. Почему бы Вам не оставить свой?
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



Статьи и обзоры С++ Visual C++ Создание таблиц Ключи и индексы Давайте определимся номенклатурой Поле это ячейка таблице Запись набор из полей Так вот существуют разные типы обычные индексные ключевые Обычные поля просто данные Индексное поле по которому сортируются Ключевое значение которого уникально общем-то четкого разделения нет Ведь программа базы данных может сортировать таблицу обычным полям индексное быть также уникальным достаточно логично поределена