пятница, 20 мая 2011 г.

Создание отношений между таблицами


Как правило, в Visual FoxPro при создании форм, отчетов и запросов используется несколько таблиц, между которыми установлены постоянные отношения. Такие таблицы называются связанными. Из двух связанных таблиц одна является главной, а другая — подчиненной. Главную таблицу называют родительской, а подчиненную — дочерней. При создании индексов для родительской таблицы должен быть определен ключ типа Primary (Первичный) или типа Candidate (Кандидат), а для дочерней таблицы — индекс для связи с родительской таблицей типа Regular (Обычный).
Рассмотрим, например, отношения между таблицей customer, содержащей список клиентов, и таблицей Phoncust, в которой размещены данные о телефонах, по которым можно связываться с клиентами. Таблица customer является родительской по отношению к таблице Phoncust. В свою очередь, таблица Phoncust является дочерней по отношению к таблице customer. При создании отношений между этими таблицами для customer должен быть определен первичный ключ, а для таблицы phoncust — создан индекс по полю, содержащему код клиента, по которому осуществляется связь между таблицами.
Для создания отношений между таблицами customer и Phoncust выполните следующие действия:
  1. Откройте окно конструктора базы данных, и которой эти таблицы размещены.
  2. Откройте таблицу customer в конструкторе таблиц. Для этого щелкните на ней правой кнопкой мыши и в контекстном меню выберите команду Modify (Модифицировать).
  3. На вкладке Indexes (Индексы) создайте первичный ключ для поля icdcustomer. Для этого в поле столбца Name (Имя) пиелите наимснова-ние индекса icdcustomer. Для простого индекса в качестве ею имени удобно использовать наименование поля, по которому индекс создайся.
  4. В столбце Туре (Тип) выберите из списка значение Primary (Первичный).
  5. В столбце Expression (Выражение) нажмите кнопку построителя. В открывшемся диалоговом окне Expression Builder (Построитель выражений) в списке Fields (Поля) дважды щелкните мышью на поле icdcustomer. Оно будет перенесено в поле Expression (Выражение). Нажмите кнопку ОК для закрытия диалогового окна.
  6. Индекс для таблицы customer создан. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  7. Откройте в конструкторе таблицу PhonCust.
  8. Перейдите на вкладку Indexes (Индексы) и создайте ключ типа Regular (Обычный) для поля icdcustomer.
  9. Нажмите кнопку ОК для закрытия окна конструктора таблицы.
  10. Выберите родительскую таблицу. В нашем примере это таблица Customer.
  11. Установите курсор мыши на первичный ключ таблицы icdcustomer.
    Замечание
    Таблицы в конструкторе базы данных обозначаются прямоугольниками, в нижней части которых после надписи Indexes (Индексы) расположен список индексов, созданных для данной таблицы. Первичный ключ в этом списке выделяется значком ключа, расположенным с левой стороны от наименования индекса.
  12. Нажмите кнопку мыши и, не отпуская ее, переместите курсор мыши на индекс дочерней таблицы PhonCust, по которому устанавливается связь.
  13. Отпустите кнопку мыши.
  14.  В окне конструктора базы данных отображается в виде линии созданное отношение между таблицами (рис. 4.20). Если дважды щелкнуть левой кнопкой мыши на линии, то откроется диалоговое окно Edit Relationship (Редактирование отношения) (рис. 4.21), в котором слева приведено наименование родительской таблицы и расположен раскрывающийся список индексов таблицы, а справа размешена аналогичная информация о дочерней таблице. Используя раскрывающиеся списки, можно изменять индексы, по которым связываются таблицы. В этом диалоговом окне указан также тип установленного отношения между таблицами. Для сохранения отношения нажмите кнопку ОК, а для отказа — кнопку Cancel (Отмена).

Отображение связи между таблицами




Диалоговое окно Edit Relationship для установления отношений между таблицами

Контекстное меню

Установите курсор на линию, соединяющую связываемые таблицы. Толщина линии увеличится. Не сдвигая курсора нажмите правую кнопку мыши, появится контекстное меню, содержащее четыре команды (рис. 4.22). Команда Remove Relationship (Удалить отношение) удаляет установленное между таблицами отношение. При выборе команды Edit Relationship (Редактирование отношения) открывается диалоговое окно Edit Relationship (Редактирование отношения), позволяющее изменить установленное отношение. Команда Edit Referential Integrity (Редактирование целостности данных) открывает диалоговое окно Referential Integrity Builder (Построитель целостности данных). Об этом окне речь пойдет в следующем разделе.


Отношения между таблицами


Между таблицами существует четыре типа отношений. Это "один-к-одному", "один-ко-многпм", "много-к-одному", "много-ко-многим". Все эти типы отношений поддерживаются в Visual FoxPro.
Отношение "один-к-одному" означает, что каждая запись в одной таблице соответствует только одной записи в другой таблице. В качестве примера можно рассмотреть отношения между списком служащих предприятия и таблицей, содержащей их служебные характеристики.
Наиболее часто встречающимся является тип отношения "один-ко-многим". В качестве примеров могут быть рассмотрены отношения между покупателем и купленными им товарами, между предприятием и работающими на нем сотрудниками.
Отношение "много-к-одному" можно сравнить с отношением "один-ко-многим", рассматриваемое с другой точки зрения. Например, между клиентами и сделанными им заказами существует отношение "один-ко-многим". С другой стороны, если в качестве исходной точки рассматривать заказы, то между сделанными заказами и клиентами подучается отношение "много-к-одному".
В качестве примера отношения "много-ко-многим" можно привести пример магазина оптовой торговли. Данный тип отношений существует между списком товаров, производимых предприятиями-поставщиками, и списком товаров, заказанных потребителями.

пятница, 6 мая 2011 г.

Создание составного индекса


Рассмотрим создание индекса для таблицы Сustomer, который будет упорядочивать данные в таблице по фамилии, имени и отчеству. Для создания такого индекса воспользуемся индексным выражением.
  1. Откройте окно конструктора Table Designer (Конструктор таблиц) для таблицы customer и перейдите на вкладку Indexes (Индексы).
  2. В поле Name (Имя) введите имя индекса СustName.
  3. Из списка возможных типов индекса в поле Туре (Тип) выберите значение Regular (Обычный).
  4. Для задания индекса нажмите кнопку открытия построителя выражений для поля Expression (Выражение). В окне построителя сформируйте следующее выражение:
    cLastName + cFirstName + cSecondName
  5. Проверьте синтаксис выражения, воспользовавшись кнопкой Verify (Проверить), и закройте окно построителя выражений.
  6. Для завершения создания индекса нажмите кнопку ОК.

вторник, 26 апреля 2011 г.

Создание первичного ключа для таблицы


Рассмотрим последовательность ваших действий при создании первичного ключа для таблицы customer. Так как первичный ключ таблицы должен быть уникальным, для его создания можно использовать поле icdcustomer таблицы, содержащее коды клиентов. Это поле было добавлено в таблицу специально, так как значения остальных полей не являются уникальными.
1. Откройте окно конструктора таблиц для таблицы customer. Для этого в окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify (Модифицировать) конструктора проекта.
  
     Рис. 4.19. Первичный ключ таблицы Customer

2. В окне Table Designer (Конструктора таблиц) перейдите на вкладку Indexes (Индексы).
3. В поле Name (Имя) введите имя индекса icdcustomer.
4. Из списка возможных типов индекса в поле Туре (Тип) выберите значение Primary (Первичный).
5. Перейдите в поле Expression (Выражение) и введите выражение для индекса icdCustomer.
6. Установите переключатель столбца Order (Упорядочение) в значение По возрастанию. Результат создания первичного ключа представлен на рис. 4.19.
7. Для завершения создания индекса нажмите кнопку ОК.


суббота, 23 апреля 2011 г.

Режимы просмотра таблицы


В Visual FoxPro существует два режима просмотра таблицы: Edit (Ввод) (рис. 4.15) и Browse (Обзор) (рис. 4.16).




Рис. 4.15. Просмотр таблицы в режиме Edit
В режиме Edit (Ввод) (рис. 4.15) поля таблицы располагаются в столбец друг под другом. Записи таблицы отделяются горизонтальными линиями.
В этом режиме пользователю нет необходимости после ввода информации во все поля одной записи заботиться о добавлении новой пустой записи. Visual FoxPro автоматически добавляет следующую запись, и пользователь продолжает вводить информацию.
В режиме Browse (Обзор) (рис. 4.16) таблица более наглядна. Поля расположены в один ряд. Одна строка соответствует одной записи таблицы, а записи размещены одна под другой. При вводе данных в таблицу, представленную в режиме Browse (Обзор), после ввода одной записи пользователю необходимо самому добавлять новую пустую запись, используя для этого команду Append New Record (Добавить новую запись) из меню Table (Таблица) или комбинацию клавиш <Ctrl>+<Y>.



Рис. 4.16. Просмотр таблицы в режиме Browse
Замечание
Для перехода в режимы просмотра таблицы Edit (Ввод) и Browse (Обзор) можно использовать одноименные команды из меню View (Вид).


четверг, 21 апреля 2011 г.

Модификация таблицы


Структуру таблицы, созданную с помощью мастера или конструктора таблиц, можно модифицировать, то есть изменить наименование любого поля и его тип, вставить новое поле или удалить существующее, изменить порядок следования полей в таблице.
Чтобы модифицировать таблицу, откройте ее в конструкторе таблиц. Для этого выполните одно из приведенных далее действий.
  • В окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify (Модифицировать) или выберите команду Modify File (Модифицировать файл) в меню Project (Проект).
  • В окне проекта установите курсор на модифицируемую таблицу, нажмите правую кнопку мыши и в появившемся на экране контекстном меню выберите команду Modify (Модифицировать).
  • При открытии конструктора таблицы из окна конструктора базы данных выделите модифицируемую таблицу и нажмите кнопку Modify Table (Модифицировать таблицу) на панели инструментов Database Designer (Конструктор базы данных) или выберите команду Modify (Модифицировать) в меню Database (База данных).
В результате на экране открывается диалоговое окно Table Designer (Конструктор таблицы), содержащее структуру модифицируемой таблицы.
Изменение наименований полей и их типов
Ошибки, допущенные при задании имени поля или его типа, легко устраняются. Установите курсор на имя поля, которое хотите изменить, и, используя клавишу <Backspace> или <Del>, удалите ошибочные символы. После этого введите правильное имя поля.
Для изменения типа поля установите курсор в столбец Туре (Тип) и выберите из списка требуемое значение.
Предупреждение
Изменение типов полей таблицы, содержащей данные, может привести к потере информации.
Добавление и удаление полей
Для добавления нового поля в таблицу выполните следующие действия:
  1. С помощью клавиш-стрелок или мыши установите курсор на строку, перед которой вы хотите вставить пропущенное поле. При этом курсор может находиться в любом столбце (Name (Имя), Туре (Тип) или Width (Размер)).
  2. Нажмите кнопку Insert (Вставить).
  3. Visual FoxPro вставляет пустую строку с именем NewFld. Введите требуемое имя поля.
  4. Используя значения списка Туре (Тип), задайте тип поля.
  5. В столбце Width (Размер) введите размер нового поля.
Для удаления поля из структуры таблицы установите курсор на поле, которое требуется удалить, и нажмите кнопку Delete (Удалить) окна конструктора.
Изменение порядка расположения полей
Порядок расположения полей, заданный при создании структуры таблицы, можно изменить. Для этого выполните следующие действия:
  1. Установите курсор на поле, расположение которого хотите изменить. На кнопке появляется значок перемещения поля в виде двунаправленной стрелки .  
  2. Установите курсор на значок перемещения.
  3. Нажмите кнопку мыши и, удерживая ее нажатой, переместите значок вверх или вниз на требуемое место в структуре.
  4. Отпустите кнопку мыши. Поле изменило свое местоположение

среда, 6 апреля 2011 г.

Окно конструктора таблиц


Конструктор таблиц предоставляет разработчику более широкие возможности при создании таблицы, чем мастер.


В конструктор таблиц вы можете перейти из мастера по созданию таблицы или непосредственно из диалогового окна New Table (Новая таблица), нажав кнопку New Table (Новая таблица) и введя в диалоговом окне Create (Создать) имя создаваемой таблицы. В результате выполнения этих действий откроется окно конструктора таблицы Table Designer (Конструктор таблиц).
Окно конструктора таблиц Table Designer  (Конструктор таблиц)  содержит три вкладки, предназначенные для определения следующих параметров:
  • Fields (Поля) — полей таблицы;
  • Indexes (Индексы) — индексов;
  • Table (Таблица) — условий достоверности вводимых данных, а также триггеров добавления, удаления и модификации.