Сделай Сам Свою Работу на 5

Схема системного каталога





В дополнение к схеме public и схемам, которые определяются пользователем, каждая база данных содержит схему PostgreSQL (pg_catalog), которая содержит системные таблицы и все встроенные типы данных, функции и операторы. pg_catalog всегда является эффективной частью пути поиска.

В PostgreSQL до версии 7.3, имена таблиц, начинающиеся с pg_, были зарезервированы. Теперь этого больше нет: если хотите, вы можете создавать такие имена таблиц, в любой несистемной схеме. Однако, лучше всё-таки продолжать избегать таких имён, чтобы быть уверенным в невозможности конфликтов по именам, если в будущем, в какой-либо версии появится системная таблица с таким же именем как и ваша.

Примеры использования схем

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

– если вы не создаёте никаких схем, то все пользователи неявно получают доступ к схеме public. Это симулирует ситуацию, когда схемы недоступны никому. Такая стратегия рекомендуется в основном, когда в базе данных работает только один пользователь или группа скооперированных пользователей. Также данная стратегия позволяет смягчить переход из СУБД, где нет схем.



– вы можете создавать схему для каждого пользователя с именем, таким же как и у пользователя. Таким образом, если каждый пользователь имеет отдельную схему, то он по умолчанию получает доступ к своей схеме. Если вы используете такую стратегию, то вы можете также захотеть отобрать доступ к схеме public (или вообще удалить её), так что пользователи будут ограничены только своими схемами.

– чтобы установить разделяемые приложения (где таблицы должны использоваться любым пользователем или в случае дополнительных функций от сторонних разработчиков и т.д.), поместите их в отдельные схемы. Помните, что необходимо предоставить соответствующие привилегии, чтобы разрешить доступ к ним другим пользователям. Пользователи могут затем ссылаться на дополнительные объекты через указания полных имен (со схемой) или они могут поместить нужные схемы в свой путь поиска, как им больше понравится.



Удаление схемы

Команда DROP SCHEMA – удалят БД. Ее синтаксис:

DROP SCHEMA имя_схемы [CASCADE]

Параметр имя_схемы данной команды определяет имя схемы, удаляемой из системы. CASCADE – каскадно удаляет все элементы схемы.

ДОМЕНЫ

Создание домена

Синтаксис команды создания домена приведен ниже:

CREATE DOMAIN имя [AS] тип_данных

[DEFAULT выражение]

[NOT NULL]

CONSTRAIN имя_условия

[CHECK (выражение)]

В команде используются следующие параметры:

– имя - имя домена должно быть уникальным в пределах данной базы данных;

– тип_данных - базовый тип данных в домене;

– DEFAULT выражение - устанавливает значение по умолчанию в столбце. Тип данных значения по умолчанию должен совпадать с типом данных в домене;

– имя условия - название условия соответствия данных;

– CHECK (выражение) - указываются условия, которым должны соответствовать значения в домене. Каждое условие должно возвращать булевский тип данных. В условии используется ключевое слово VALUE, которое ссылается на входные данные. В условиях можно использовать регулярные выражения.

Пользователь, который создает домен, становится ее владельцем.

Примеры.

Предположим, что в некоторой таблицеесть два столбца: FAMILY, NAME. Очевидно, что значения фамилии и имени должны содержать только буквы русского алфавита и символа «-» (если фамилия состоит из двух слов), не должны быть пустыми и не превышают 70 символов. Таким образом:

CREATE DOMAIN zakazy.d_fio

AS character varying(70)

CONSTRAINT fio_check

CHECK (VALUE ~'[А-Яа-я-]+');

В той же самой таблице может быть столбец AGE. Предположим, что значения в нем не должны быть меньше 22 и не превышать 65. Получим:



CREATE DOMAIN zakazy.d_age

AS smallint

CHECK (VALUE >= 22 AND VALUE <= 65);

Можно выполнить приведенные запросы с использованием инструмента выполнения запросов SQL. Можно также воспользоваться возможностями графического интерфейса pgAdmin III. Для этого выберите в дереве базы данных на левой панели главного окна узел базы данных zakazy и в контекстном меню выберите пункт «Новый объект/Новый домен… ». Далее в окне «Новый домен» введите данные как показано на Рис. 6.

Рис. 6. Создание домена с помощью графического интерфейса pgAdmin

В соответствии с логической схемой базы данных, описанной выше, составим SQL-операторы создания доменов.

CREATE DOMAIN store.d_age

AS smallint

NOT NULL

CONSTRAINT d_age_check

CHECK (((VALUE >= 22) OR (VALUE <= 65)));

CREATE DOMAIN store.d_count

AS integer

NOT NULL

CONSTRAINT d_count_check CHECK ((VALUE >= 0));

ALTER DOMAIN store.d_count OWNER TO postgres;

CREATE DOMAIN store.d_fio

AS character varying(70)

NOT NULL

CONSTRAINT d_fio_check

CHECK (((VALUE)::text ~ '[A-Za-zА-Яа-я-]+'::text));

CREATE DOMAIN store.d_price

AS real

CONSTRAINT d_price_check

CHECK ((VALUE >= (0)::double precision));

Создадим файл create_domain.sql, в котором сохраним все приведенные выше скрипты создания доменов, используемых в БД zakazy (см. Приложение).

Изменение домена

Синтаксис команд изменения домена:

ALTER DOMAIN имя_домена

{SET DEFAULT выражение | DROP DEFAULT}

ALTER DOMAIN имя_домена

{SET | DROP} NOT NULL

ALTER DOMAIN имя_домена

ADD условие_домена

ALTER DOMAIN имя_домена

DROP CONSTRAINT имя_условия

ALTER DOMAIN имя_домена

OWNER TO название_роли

ALTER DOMAIN имя_домена

SET SCHEMA имя_схемы

Описание команд:

– SET/DROP DEFAULT - команды устанавливают или удаляют значение по умолчанию для домена.

– SET/DROP NOT NULL - команды указывают может ли домен иметь NULL значения или не NULL значений.

– ADD имя_условия - команда добавляет новое условие к домену, используя тот же синтаксис, что и CREATE DOMAIN. Условие можно установить только в том случае, если все столбцы, использующие домен удовлетворяют этому условию

– DROP имя_условия – команда удаляет указанное условие (ограничение) домена.

– OWNER - команда изменяет владельца домена.

– SET SCHEMA - команда изменяет схему, к которой принадлежит домен.

Описание параметров:

– имя домена - название домена, параметры которого хотите изменить.

– условие домена - новое условие домена.

– имя_условия - название одного из существующих условий домена.

– название роли - имя нового владельца домена.

– имя_схемы - название схемы БД.

Удаление домена

Команда drop domain – удалят БД. Ее синтаксис:

DROP domain имя_домена

Параметр данной команды определяет имя домена, удаляемого из системы.

Таблицы

Создание таблицы

После создания доменов мы готовы создать таблицы базы данных zakazy. В соответствии с логической схемой базы данных, разработанной в результате системного анализа предметной области, составим SQL-операторы создания таблиц, сохраним в файле create_tables.sql (см. Приложение).

CREATE TABLE zakazy.clienty

( id_cln integer NOT NULL,

company character varying(50) NOT NULL,

id_slzh integer NOT NULL,

limit_credit zakazy.d_price NOT NULL

);

CREATE TABLE zakazy.offisy

( id_ofc integer NOT NULL,

city character varying(70) NOT NULL,

region character varying(70) NOT NULL,

mngr integer NOT NULL,

target zakazy.d_price NOT NULL,

sales zakazy.d_price NOT NULL

);

CREATE TABLE zakazy.sluzhaschie

(

id_slzh integer NOT NULL,

"family" zakazy.d_fio NOT NULL,

"name" zakazy.d_fio NOT NULL,

age zakazy.d_age NOT NULL,

id_ofc integer,

dlzh character varying(50) NOT NULL,

mngr integer,

quota zakazy.d_price,

sales zakazy.d_price NOT NULL

);

CREATE TABLE zakazy.tovary

(

id_mvr character varying(20) NOT NULL,

id_prd character varying(10) NOT NULL,

description character varying(100) NOT NULL,

price zakazy.d_price NOT NULL,

count_tvr zakazy.d_count NOT NULL

);

CREATE TABLE zakazy.zakazy

(

id_order integer NOT NULL,

date_order date NOT NULL,

id_cln integer NOT NULL,

id_slzh integer NOT NULL,

id_mvr character varying(20) NOT NULL,

id_prd character varying(10) NOT NULL,

count_ord zakazy.d_count NOT NULL,

price_all zakazy.d_price NOT NULL

);

Рис. 7. Создание таблицы с помощью графического интерфейса pgAdmin Рис. 8. Создание колонки таблицы с помощью графического интерфейса pgAdmin

Выполним приведенные запросы с использованием инструмента выполнения запросов SQL.

Таблицы базы данных можно создавать с помощью pgAdmin. Для этого при выделенном узле «Таблицы» вызывается контекстное меню, в котором выбирается пункт «Новая таблица …». В ответ появляется диалог «Новая таблица …», приведенный на Рис. 7.

После заполнения полей на вкладке «Свойства» необходимо перейти на вкладку «Колонки» и нажать на кнопку «Добавить». (см. Рис. 7).

После выполнения всех запросов дерево базы данных будет иметь вид, приведенный на Рис. 9.

Следует отметить, что при создании таблиц мы не определили ни первичные, ни вторичные ключи. Но без первичных и вторичных ключей невозможно определить связи между таблицами. Поэтому после создания таблиц базы данных приходится модифицировать их. Для этой цели используется оператор ALTER TABLE.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.