Создание многотабличной реляционной базы данных
Ограничения таблиц
Ограничение PRIMARY KEY указывает на то, что столбец, к которому оно применено, является первичным ключом. Таким образом, это ограничение относится ко всей таблице и эквивалентно комбинации двух ограничений столбца: NOT NULL и UNIQUE. Это ограничение, как показано в следующем примере, можно задавать в операторе CREATE:
| CREATE TABLE CLIENT ( | ||
| ClientName | CHARACTER (30), | PRIMARY KEY, |
| Address1 | CHARACTER (30), | |
| Address2 | CHARACTER (30), | |
| City | CHARACTER (25), | |
| State | CHARACTER (2), | |
| PostalCode | CHARACTER (10), | |
| Phone | CHARACTER (13), | |
| Fax | CHARACTER (13), | |
| ContactPerson | CHARACTER (30)); | |
| ); | ||
Утверждения
Утверждение (assertion) задает ограничение для более чем одной таблицы. В следующем примере для создания утверждения применяется условие поиска, составленное для столбцов из двух таблиц.
| CREAE TABLE ORDERS ( | ||
| OrderNumber | INTEGER | NOT NULL, |
| ClientName | CHARACTER (30), | |
| TestOrdered | CHARACTER (30), | |
| Salesperson | CHARACTER (30), | |
| OrderDate | DATE | |
| ); | ||
| CREATE TABLE RESULTS ( | ||
| ResultNumber | INTEGER | NOT NULL, |
| OrderNumber | INTEGER | |
| Result | CHARACTER(50), | |
| DateReported | DATE, | |
| PrelimFinal | CHARACTER (1), | |
| ); | ||
| CREATE ASSERTION | ||
| CHECK (NOT EXISTS SELECT * FROM ORDERS, RESULTS | ||
| WHERE ORDERS.OrderNumber = RESULTS. OrderNumber | ||
| AND ORDERS.OrderDate > RESULTS.DateReported); | ||
Благодаря этому утверждению дата анализа не будет предшествовать дате заказа теста.
