|
Программирование >> Реляционные базы данных
5.12 Литература к шаве 5 267 5.12 Литература к главе 5 Электронные версии стандартов SQL2 и SQL3 можно получить через Национальный ИНСТИТ1Т науки и техники (N1ST, бывшее Национальное бюро стандартов) по анонимному FTP или по HTTP. Имя хост-узла: speckle.ncsl.nist.gov. Стандарт S0L2 и текущие версии SQL3 находятся в каталоге isowg3/dbl/BAS Edocs Особый интерес представляет формальный синтаксис SQL2, представленный в файле isowg3/dbI/BASEdocs/sql-92.bnf Каталог isowg3/x3h2 содержит множество работ и историчесю1х документов по стандартам SQL2 и SQL3. Все они имеют номера, начинающиеся с ХЗН2, Для доступа к документам SQL с помощью HTTP используйте URL: http: speckle.ncsl.nist gov/-ftp/ за которым следует путь одного из указанных выше каталогов. Деталям программирования SQL посвяшено множество книг. Мы предпочитаем, например, работы [2], [3] и [6]. Первое определение SQL дано в книге [4]. В работе [1] он был реализован как часть системы R - одного из прототипов реляционной БД первого поколения. Материал по рекурсии SQL3 можно найти в источнике [5]. 1. Astrahan, М. М. et al., System R: a relational approach to data management, ACM Transactions on Database Systems 1:2, pp. 97 - 137, 1976. 2. Celko, J., SQL for Smarties, Morgan-Kaufmann, San Francisco, 1995. 3. Date, C. J. and H. Darwen, A Guide to the SQL Standard, Addison-Wesley, Reading, MA, 1993. 4. Chamberlln, D. D., et al., SEQUEL 2: a unified approach to data definition, manipulation and control , IBM Journal of Research and Development 20:6, pp. 560 - 575, 1976. 5. Finkelsiein, S. J., N. Mattos, J. S. Mumick, and H. Pirahesh, Expressing recuRive queries in SQL. ISO WG3 report X3H2-96-075, March, 1996. 6. Melton, J. and A. R. Simon, Understanding the New SQL: A Complete Guide, Morgan Kaufmann, San Francisco, 1993. Глава 6 Ограничения и триггеры в SQL Эта глана поспящена аспектам SQL, позволяющим создавать активные элементы, Активный элемент-это выражение или оператор, которые создаются, хранятся в БД и выполняются в нужные моменты, например при вставке данных в определенные таблицы или при изменении БД так, что становится истинным какое-то булевозначное услопие. Одной из серьезных проблем, с которыми сталкиваются создатели приложений по обновлению БД, является то, что новая информация может бьпь неправильной по многим параметром. СамьиТ простой способ предотвратить появление в отношениях неприемлемых кортежей в результате изменений БД - создание программ приложений, в которых команды вставки, удаления и обновления связаны с про-BepKaNm, обеспечивающими корректность. Однако это не лучший путь, поскольку требования корректности зачастую очень сложны и всегда повторяемы; после каждого изменения программа вынуждена проводить одни и те же тесты. В SQL2 существуют различные способы выражения ограничений целостности в качестве части схемы БД. В этой главе рассматриваются основные из них, и в первую очередь ограничение по ключу, при котором атрибут ihih множество атрибутов объявляются ключом отношения. Затем мы перейдем к требованию ссылочной целостности, согласно которому значение атрибута илн атрибутов одного отношения (например, presC# в Studio) должно быть также значением атрибута или атрибугов другого отношения (например, cert# в MovieExec). После этого будут рассмотрены ограничения на области, вю1ючая уникальность ( возможность ключа ), ограничение по конкретным значениям и запрещение NULL, а также ограничения на кортежи и отношения в целом и ограничения на взаимосвязи, называемые утверждениями. Эти ограничения проверяются при каждом изменении отношения или отношений. И наконец, будут рассмотрены триггеры, которые тоже являются активными элементами и вводятся в действие при определенных событиях. Их нет в стандарте SQL2. ио они включены в SQL3, и хотя на момент написания этой книги SQL3 не является завершенным стандартом, многие коммерческие системы БД предлагают пользователям какую-нибудь фор.му триггера. 6.1 Ключи в SQL Возможно, самым важным видом огр-лничений в БД является объявление атрибута илн атрибутов ключом отнои1ения. Другими аювами, два кортежа отношений не люгчт совпадать по атрибуту, объявленному ключом, или по всему множеству атрибутов, формирующих ключ Ограничение по ключу, подобно многим другим ограничениям SQL, определяется в команде CREATE TABLE. Есть два сходных способа определения ключей: с помощью ключевых слов PRIMARY KEY и с помощью UNIQUE. Таблица может иметь любое число ключей типа unique, но первичный ключ только один. 6.1.1 Определение ключей Первичный ключ состоит из одного и более атрибутов отношения. Существует два способа объявления первичного ключа в команде CREATE TABLE, определяющей хранимую таблицу. 1. Атрибут объявляется первичным ключом при его перечислении в реляционной схеме. 2. К списку элементов схемы (которые до этого были только атрибутами) добавляется предложение, означающее, что отдельный атрибут или множество атрибутов являются первичным ключом. В первом случае после атрибута и его типа ставятся ключевые слова PRIMARY KEY. Во втором случае в список атрибутов вводится новый элемент, состоящий из ключевых слов PRIMARY KEY и заключенного в скобки списка атрибутов, формирующих ключ. Если ключ сосгоит более чем из одного атрибута, применяется только второй способ. Пример 6.1. Обратимся снова к схеме отношения MovieStar из примера 5.32. Первичный ключ этого отношения - пате. Значит, указание на этот факт нужно внести в строку, в которой находится name. Такое изменение рис. 5.13 показано на рис. 6.1. 1) CREATE TABLE MovieStar ( 2) name CHAR(30) PRIMARY KEY. 3) address VARCHAR(255), 4} gender CHAR(1), 5) birthdate DATE ): Рие. 6.1. Преерощение name в первичный ключ Первичный ключ можно определить по-другому. После строки (5) на рис. 5.13 отдельно указывается первичный ключ и строку (2) изменять не нужно. Результат показан на рис. 6.2. □ 1) CREATE TABLE MovieStar ( 2) name CHAR(30), 3) address VARCHAR(255), 4) gender CHAR(1). 5) birthdate DATE, 6) PRIMARY KEY (name) Рис. 6.2. Отдельное цкозоние переич.чого ключе
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |