Типы даты и времени
Стандарт поддерживает типы DATE, TIME и TIMESTAMP, в Oracle реализован тип DATE, которые служит для хранения даты и времени суток, а, начиная с версии 9i, еще и TIMESTAMP, который позволяет хранить момент времени с высокой точностью (до миллисекунд). Над датами выполняется операция вычитания, при этом разность двух дат вычисляется в днях. К дате можно прибавить или вычесть заданное количество дней, при этом получается другая дата, можно сравнивать две даты, используя обычные знаки сравнения. Внутренний формат представления типа Date в Oracle – действительное число, целая часть которого хранит количество дней, содержащихся в дате, а действительная – время суток. Константы типа даты заключаются в апострофы, как и текстовые константы, их формат должен соответствовать настройкам сервера. Типы для хранения больших объектов Современные базы данных позволяют хранить не только хорошо структурированную фактографическую информацию, но и такие данные, как рисунки (фотографии), звуковые или анимационные файлы, тексты формата Microsoft Word, Web-страницы в формате html и другую слабо структурированную информацию. Для хранения подобных данных используются типы больших объектов. Стандарт поддерживает типы BLOB (Binary Large Object) и CLOB (Character Large Object) или NCLOB (National Character Large Object). Oracle дополнительно поддерживает тип LONG для хранения больших текстов. Работа с типами LONG и CLOB выполняется значительно медленнее, чем с типом VARCHAR, поэтому они используются только для действительно больших текстов. Следует заметить, что, начиная с версии 8, в Oracle появилось специальное расширение Oracle Text, предназначенное для эффективной работы с большими текстами. Ограничения Ограничения (constraints) позволяют задавать дополнительные условия проверки вводимых данных, которые СУБД проверяет автоматически. Данные, которые не удовлетворяют условиям, заданным в ограничениях, отвергаются. Например, при вставке новой строки в таблицу она не будет добавлена, если хотя бы одно из значений не удовлетворяет ограничениям. Механизм ограничений позволяет поддерживать данные в непротиворечивом состоянии, соответствующем бизнес-правилам предметной области.
Любое ограничение может быть поименовано, в противном случае, имя для ограничения СУБД создает автоматически. Для явного задания имени, к описанию ограничения следует добавить слева фразу CONSTRAINT имя_ограничения (рекомендуется задавать явные имена для ограничений). Можно задать ограничения для отдельного столбца или для таблицы в целом. Ограничения столбца: NOT NULL/NULL – допустимы ли пустые (неопределенные) значения в столбце, по умолчанию используется значение NULL (т.е. допустимы), что в большинстве случаев не соответствует бизнес-правилам предметной области, поскольку пропуски какой-либо нужной информации обычно не допустимы. Данное ограничение не именуется. PRIMARY KEY – ограничение первичного ключа, при этом автоматически накладывается ограничение NOT NULL. При задании значений первичного ключа любое значение проверяется на уникальность и при обнаружении дубликата операция прерывается. В таблице может быть только один столбец с ограничением PRIMARY KEY. UNIQUE – ограничение уникальности (альтернативный ключ), ограничение NOT NULL также накладывается автоматически. Фактически, UNIQUE ничем не отличается от PRIMARY KEY, однако количество столбцов с UNIQUE не ограничено. REFERENCES имя_главной_таблицы — внешний ключ, который задается для столбца подчиненной (детальной) таблицы. Для значений внешнего ключа автоматически выполняется проверка на существование равного значения первичного ключа главной таблицы. При определении внешнего ключа могут быть дополнительно определены правила обеспечения ссылочной целостности. Например, правилами для удаления являются:
· ON DELETE RESTRICT – запретить удаление строки главной таблицы, если в подчиненной есть хотя бы одна строка, которая на нее ссылается; · ON DELETE CASCADE – вместе со строкой главной таблицы автоматически удалить все ссылающиеся на нее строки подчиненной таблицы; · ON DELETE SET NULL – при удалении строки главной таблицы установить во внешнем ключе ссылающихся строк значение NULL (это правило может быть определено только в том случае, если на внешний ключ не наложено ограничение NOT NULL); · ON DELETE SET DEFAULT – при удалении строки главной таблицы установить во внешнем ключе значение по умолчанию (это правило может быть определено только в том случае, если при определении внешнего ключа задано DEFAULT значение_по_умолчанию).
По умолчанию принят запрет удаления строк при наличии ссылок на них (ON DELETE RESTRICT). Аналогичные правила можно определить для обновления (ON UPDATE …), однако необходимости в них обычно не возникает, т.к. первичные ключи обновлять не принято.
CHECK – проверка логических выражений при изменении данных в столбце, например, CHECK (имя_столбца BETWEEN 1 AND 100). Например: CREATE TABLE t (c1 NUMBER(8) DEFAULT 0 NOT NULL CONSTRAINT un UNIQUE, c2 VARCHAR(100) NOT NULL ) Создается таблица с именем t, содержащая два столбца: числовой столбец c1, обязательный для заполнения и принимающий значение 0 по умолчанию, все значения этого столбца уникальны (ограничение уникальности имеет имя un) и текстовый столбец c2, обязательный для заполнения текстом, его размер не более 100 символов.
Читайте также: Калькуляция трудозатрат, затрат машинного времени и их стоимости Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|