Разработка приложений баз данных для СУБД Sybase SQL Anywhere

       

Cвойства таблиц данных


Свойства полей были рассмотрены в п.п. и . Они распространяются только на отдельные поля. Свойства для совокупности полей задаются, так называемыми, свойствами таблиц. Они включают в себя:

  • признак уникальности совокупности значений нескольких полей;
  • определение составного первичного ключа;
  • определение составного внешнего ключа;
  • наложение условия на значения совокупности полей.
  • Для задания свойств таблицы в утилите SQL Central следует установить соединение с базой данных Dubl_Biblia. Затем необходимо в левой или правой панели щелкнуть правой клавишей мыши по пиктограмме требуемой таблицы, например таблицы Books. В результате этого на экране появляется контекстное меню (см. рис. 50).

    Рис. 50. Контекстное меню установки свойств таблицы данных

    Рассмотрим элементы этого меню.

    Выбор пункта Open приводит к отображению в правой панели содержимого папки, соответствующей выбранной таблице.

    Пункт View Data позволяет просмотреть содержимое таблицы. Воспользоваться этим пунктом могут пользователи с классом полномочий DBA (), владелец таблицы и пользователи, для которых для данной таблицы установлена привилегия SELECT (). Реакцией на выбор пункта View Data является последовательное выполнение следующих действий:

  • запуск утилиты ISQL;
  • соединение с текущей базой данных под именем текущего пользователя;
  • выполнение SQL-оператора SELECT:, в результате которого в окно выводится содержимое всех записей таблицы. Для нашего случая этот оператор будет иметь вид:
  • /* Выбор всех полей таблицы */ SELECT * FROM "Stepanov"."Books"

      ПРИМЕЧАНИЕ

      SQL Anywhere допускает в SQL-операторах использование в названий объектов любых символов. К этим символам относятся пробел, различные специальные символы и символы национальных алфавитов. В таких случаях имена объектов должны быть заключены в двойные кавычки. Если имена объектов состоят только из символов английского алфавита и цифр, то кавычки можно опускать.

      Пункт Validate предназначен для запуска утилиты DBVALID (см. табл. - ).

      Она осуществляет проверку соответствия:






    • индексов текущей таблицы данных ее содержимому;
    • записей таблицы данных установленным для нее ограничениям целостности.


    • Применять этот пункт меню могут пользователь с правами администратора базы данных и только на ЭВМ - сервере базы данных.

      В утилите ISQL эти действия реализуются следующим SQL-оператором:

      /* Проверка индексов и целостности таблицы */ DBTOOL VALIDATE TABLES '"Stepanov"."Books"' USING /*строка соеди- нения () */ 'DBN=Dubl_Biblia;UID=Stepanov; PWD=s;ENG=Server_ste1'

      Следующим является пункт меню Unload. Данный пункт могут использовать только пользователи с правами администратора базы данных. Он служит для использования утилиты DBUNLOAD (см. табл. - ). Эта утилита осуществляет выгрузку базы данных. Эта процедура заключается в формировании командного файл и файлов для импорта данных. При этом содержимое таблиц данных записывается в отдельные файлы. Командный файл содержит SQL-операторы, позволяющие создать полную копию базы данных, включая таблицы данных, хранимые процедуры и другие объекты.

      Для применения утилиты DBUNLOAD (см. табл. - ) в утилите ISQL необходимо выполнить оператор DBTOOL вида:

      //Выгрузка базы данных DBTOOL UNLOAD TABLES TO 'd:\Log_DB\Unload' /* каталог, куда записываются файлы с содержимым таблиц */ RELOAD FILE TO 'd:\Log_DB\Biblia.sql' //полное имя команд- // ного файла USING //строка соединения 'DBN=Biblia;UID=Stepanov; PWD=s; ENG=Server_ste1' //строка соединения ()

      Для того, чтобы воспользоваться в дальнейшем результатами работы утилиты DBUNLOAD необходимо выполнить следующую последовательность действий:

    • создать новую базу данных;
    • установить с ней соединение под именем DBA в утилите ISQL;
    • выполнить командный файл при помощи SQL-оператора READ, имеющего следующий синтаксис:


    • /* запуск на исполнение командного файла SQL-операторов */ READ <ПУТЬ>,

      где ПУТЬ - полное имя командного файла SQL-операторов.

      После этого новая база данных становится точной копией исходной.

      Реакцией на пункт меню Edit Columns является запуск редактора структуры таблиц (). Право использовать этот пункт меню имеют владелец таблицы, пользователи с классом полномочий DBA () и пользователи, для которых для работы с таблицей установлена привилегия ALTER().

      Выбор пункта Copy позволяет запомнить в системном буфере свойства текущей таблицы с целью копирования их в дальнейшем в другую базу данных. Для этого требуется в текущем сеансе работы утилиты SQL Central осуществить соединение с другой базой данных. Затем для нее отобразить в правой панели содержимое папки Tables. После этого следует щелкнуть в любом свободном месте правой панели правой кнопкой мыши и выбрать в появляющемся контекстном меню пункт Paste. В результате этого на основании данных системного буфера создается копия таблицы первой базы данных.

      Следующим пунктом контекстного меню установки свойств таблицы данных является пункт Paste. Применять этот пункт могут только владелец таблицы, пользователи, имеющие для этой таблицы привилегию ALTER () и администратор базы данных. Пункт Paste позволяет добавлять в текущую или другую базу данных копию таблицы, информация о которой была запомнена при выборе пункта Copy рассматриваемого меню.

      Посредством выбора пункта Delete осуществляется удаление текущей таблицы из базы данных. Это могут сделать только владелец таблицы или администратор базы данных.

      В утилите ISQL для исключение таблицы Stepanov.Books из базы необходимо выполнить следующий оператор:



      // Удаление таблицы из базы данных DROP TABLE Stepanov.Books

      Последний пункт рассматриваемого меню Properties позволяет проанализировать и модифицировать свойства текущей таблицы. Изменять эти свойства могут только владелец таблицы, пользователи, имеющие для этой таблицы привилегию ALTER ()и администратор базы данных. Другие пользователи могут только просматривать свойства таблицы.

      Выбор пункта меню Properties инициирует появление окна Books Properties (рис. 51).



      Рис. 51. Окно свойств таблицы Books - вкладка General

      Вкладка General позволяет в случае необходимости изменить название таблицы и отредактировать комментарий к таблице. Кроме того она показывает кто является владельцем таблицы и в какой области базы данных хранится текущая таблица ().

      В утилите ISQL замена названия таблицы Stepanov.Books на Stepanov.Книги реализуется оператором вида:

      //Изменение названия таблицы ALTER TABLE Stepanov.Books RENAME "Книги"

      Вкладка Columns предназначена для формирования составного первичного ключа (рис.52).



      Рис. 52. Окно свойств таблицы Books - вкладка Columns



        ПРИМЕЧАНИЕ

        В одной таблице данных может быть определен только один первичный ключ.

        В поле вкладки Columns указывается состав первичного ключа. В частном случае, как показано на рис. 52 первичный ключ может состоять из одного поля. Для расширения состава ключа необходимо выделить поля, которые необходимо ввести в состав ключа. Выделение нескольких полей осуществляется щелком левой клавиши мыши при нажатой клавиши Ctrl. После этого необходимо щелкнуть по кнопке Add To Key. При этом состав первичного ключа будет отображен в поле внизу вкладки. Если затем "нажать" на одну из кнопок OK или Применить, то состав первичного ключа будет зафиксирован в базе данных. Отличие состоит в том, что при использовании кнопки OK окно Books Properties закроется. При щелчке мышью по кнопке Применить это окно останется на экране и пользователь может продолжить модификацию первичного ключа.

        Включение в таблице Books в состав первичного ключа полей City_publish и Publisher в дополнение к ключевому полю Code_book в утилите ISQL осуществляется операторами:



        // удаление первичного ключа ALTER TABLE Stepanov.Books DELETE PRIMARY KEY; //формирование составного первичного ключа ALTER TABLE Stepanov.Books ADD PRIMARY KEY (Code_book,City_publish,"Publisher")

        Элементы управления вкладки Columns позволяют также исключать поля из первичного ключа. Для следует выделить исключаемые поля и воспользоваться кнопкой Remote From Key. Измененный состав ключа опять отобразиться в нижнем поле вкладки. Для удаления всего первичного ключа таблицы можно применить кнопку Remote All.

        Все эти действия в ISQL реализуются совокупностью двух SQL-операторов, приведенных выше.

        Кнопка Details вкладки Columns позволяет просмотреть все свойства выделенного поля. В утилите ISQL эту информацию можно получить, применив оператор SELECT к системному представлению SYS.SYSCOLUMNS.

        Задание признака уникальности и наложение условия для значений совокупности полей осуществляется во вкладке Constraints (рис. 53).



        Рис. 53. Окно свойств таблицы Books - вкладка Constraints



          ПРИМЕЧАНИЕ

          В одной таблице данных может быть определено несколько групп полей с признаками уникальности значений. В каждой такой группе совокупность значений составляющих ее полей должна быть уникальной.

          В поле области Uniqueness Constraints данной вкладки отображаются группы полей таблицы с признаками уникальности значений. Для таблицы Books уникальность значений установлена только для одной группы. Она состоит из одного поля Code_book и была автоматически сформирована при определении этого поля первичным ключом таблицы. Для формирования новой группы следует воспользоваться кнопкой New. При этом открывается окно Add Uniqueness Constraint. Оно имеет точно такой же вид как и вкладка Columns ().

          В утилите ISQL для добавления/удаления совокупности полей с признаком уникальности необходимо выполнить SQL-операторы вида:

          /* Добавления новой совокупности полей с признаком уникальности /* ALTER TABLE Stepanov.Books ADD UNIQUE(City_publish,"Publisher"); /* Удаление совокупности полей с признаком уникальности /* ALTER TABLE Stepanov.Books DELETE UNIQUE(City_publish, "Publisher")



          Поле области Check Constraint вкладки Constraints предназначено для задания условия накладываемые на значения таблицы. В утилите ISQL эти действия реализуются следующими операторами:

          /* Установка условий для значений таблицы */ ALTER TABLE Stepanov.Books ADD CHECK(Number>0 AND Start_date>=1992); /* Снятие условий для значений таблицы */ ALTER TABLE Stepanov.Books DELETE CHECK

          Назначение вкладки Permissions (рис. 54) состоит в установлении для пользователей привилегий по манипулированию текущей таблицей.



          Рис. 54. Окно свойств таблицы Books - вкладка Permissions

          На вкладке Permissions показано, что пользователь Sidorova имеет привилегию SELECT () для таблицы Books (). Причем он(она) имеет право предоставлять эту привилегию другим пользователям. Такие привилегии данному пользователю предварительно установил автор. Для предоставлении привилегий другим пользователям следует щелкнуть мышью по кнопке Grant.



          Рис. 55. Назначение пользователей, допущенных к работе с таблицей Books

          После этого необходимо выделить из предлагаемого списка требуемых отдельных пользователей или/и групп пользователей. Этим самым реализуется назначение индивидуальных или групповых привилегий. На рис. 55 показано выделение пользователей Ivanova, Popova и группы пользователей LIBRARIANS. После этого следует щелкнуть по кнопке Grant Permission. Результат допуска этих пользователей будет отображен в вкладке Permissions (рис. 56).



          Рис. 56. Пользователи допущенные к работе с таблицей Books и перечень их привилегий

          По умолчанию каждому пользователю назначаются все привилегии без права из передачи другим пользователям. Для коррекции привилегий отдельного пользователя следует выделить его как показано на рис. 56. В результате этого становятся доступными группы флажков Permission и Grant option. Установка/снятие флажков в первой группе соответствует назначению/отмене соответствующих привилегий. На рис. 56 показано, что какие привилегии устанавливаются пользователю Petrova. Этому пользователю назначены все привилегии кроме привилегии DELETE (). Привилегия UPDATE () позволяет пользователю Petrova модифицировать только поля Number и Times_read. Уточнение привилегий для подмножества полей таблицы осуществляется при помощи кнопок с многоточием. Кроме того, пользователь Petrova имеет право назначать привилегию SELECT () для таблицы Books другим пользователям. Следует отметить, в закладке Permissions (см. рис. 56) можно устанавливать как индивидуальные, так и групповые привилегии. Так на рис. 56 видно, что индивидуальные привилегии установлены для пользователей Petrova, Ivanova и Sidorova. Групповые привилегии определены для группы пользователей LIBRARIANS. Из этого следует, что для всех членов этой группы (пользователей Petrova, Ivanova, Sidorova и Popova) определена привилегия INSERT () для работы с таблицей Stepanov.Books. Таким образом, установка данной привилегий для пользователей Petrova и Ivanova является избыточной.

          Все действия, произведенные в SQL Central при рассмотрении вкладки Permissions, можно произвести и в утилите .ISQL Для этого следует выполнить последовательность ниже приведенных SQL-операторов:



          /* Установление привилегии SELECT для пользователя Sidorova, с правом ее передачи другим пользователям */ GRANT SELECT ON Stepanov.Books TO Sidorova WITH GRANT OPTION; /* Установление всех привилегий для пользователя Ivanova */ GRANT ALL PRIVILEGES ON Stepanov.Books TO Ivanova; /* Установление трех привилегий для пользователя Petrova */ GRANT ALTER, INSERT, INDEX ON Stepanov.Books TO Petrova; /* Установление привилегии SELECT для пользователя Petrova, с правом ее передачи другим пользователям */ GRANT SELECT ON Stepanov.Books TO Petrova WITH GRANT OPTION; /* Установление для пользователя Petrova привилегии UPDATE для полей Number и Times_read */ GRANT UPDATE(Number,Times_read) ON Stepanov.Books TO Petrova; /* Установление привилегии INSERT для группы пользователей LIBRARIANS */ GRANT INSERT ON Stepanov.Books TO LIBRARIANS

          Последней вкладкой окна свойств таблицы данных () является вкладка Statistics. Она представлена на рис. 57.



          Рис. 57. Окно свойств таблицы Books - вкладка Statistics

          Вкладка Statistics показывает некоторые физические характеристики текущей таблицы. В поле Number of columns показано количество полей таблицы. Таблица Books состоит из 10 полей. Поле Approximate number of rows отображает примерное число записей таблицы. Таблица Books пока не содержит ни одной записи. В поле Maximum table width указывается максимальная длина записи в байтах. При этом размеры полей с перемененной длинной (см.табл. , ) не учитываются.

          В утилите ISQL количество полей таблицы можно определить путем просмотра из перечня (см. рис. , ). Количество записей в таблице можно определить при выполнении оператора SELECT. Оно отображается при этом в окне Statistics утилиты ISQL.

          Таким образом, совместно со свойствами полей, свойства таблицы представляют пользователям возможность хранить в базах данных информацию с широким спектром характеристик.


          Содержание раздела