значение.
■ dob Хранит значение даты рождения покупателя. Обратите внимание,
что для этого столбца не указано ограничение NOT NULL, следовательно,
предполагается задаваемое по умолчанию NULL, поэтому значение
является необязательным.
■ phone Здесь хранится номер телефона покупателя. Также является необязательным
полем.
Сценарий store_schema.sql заполняет таблицу customers следующими
строками:
16 Глава 1
customer_id first_n am e last_name dob phone
1 John Brown 01-JAN-65 800-555-1211
2 Cynthia Green 05-FEB-68 800-555-1212
3 Steve White 16-MAR-71 800-555-1213
4 G a il Black 800-555-1214
5 Doreen Blue 20-MAY-70
Обратите внимание, что дата рождения покупателя №4 не определена
(null), как и номер телефона покупателя №5.
Чтобы увидеть строки таблицы customers, можно, используя SQI?Plus,
выполнить следующий оператор SELECT:
□ SELECT * FROM customers;
Символ звездочки (* ) означает, что вы хотите выбрать из таблицы
customers все столбцы.
Примечание В данной книге SQL операторы, выделенные жирным шрифтом, - это операторы,
которые вам надо набрать на клавиатуре, если вы работаете с примерами. Операторы, показанные
обычным шрифтом, набирать с клавиатуры не требуется.
Т а б л и ц а р roduct_types используется для хранения названий типов товаров,
имеющихся в продаже в магазине. Для создания этой таблицы product^
type сценарий store_schema.sql использует следующий оператор CREATE
TABLE:
□ CREATE TABLE product_types (
produ ct_type_id INTEGER CONSTRAINT product_types_pk PRIMARY KEY,
name VARCHAR2(10) NOT NULL
);
Таблица product_types содержит два столбца:
■ produ ct_type_id Уникально идентифицирует каждую строку таблицы;
столбец produ ct_type_ id является первичным ключом этой таблицы.
Для каждой строки таблицы product_types должно существовать уникальное
целое значение в столбце produ ct_type_id.
■ name Содержит имя типа товара. Этот столбец был определен как NOT
NULL и, следовательно, в нем обязательно должно присутствовать значение.
Сценарий store_schema. s q l заполняет эту таблицу следующими строками:
□ producr_type_id name
1 Book
2 Video
3 DVD
4 CD
5 Magazine
Эта таблица определяет типы товаров для магазина. Каждый имеющийся
в магазине товар должен принадлежать к одному из этих типов.
Введение 17
Чтобы получить строки таблицы product_types, можно выполнить следующий
оператор SELECT, используя для этого SQITPlus:
□ SELECT * FROM product_types;
Таблица products используется для хранения детализированной информации
о проданных товарах. Для каждого товара в таблице должны
храниться следующие элементы информации:
■ тип товара;
■ название;
■ описание;
■ цена.
Сценарий store_schema. s q l создает таблицу products, используя для этого
следующий оператор CREATE TABLE:
□ CREATE TABLE products (
produ ct_id INTEGER CONSTRAINT products_pk PRIMARY KEY,
produ ct_type_id INTEGER
CONSTRAINT produ cts_fk_product_typ es
REFERENCES p ro d u ct_ ty p e s (p ro d u c t_ typ e _ id ),
name VARCHAR2(30) NOT NULL,
d e s c r ip tio n VARCHAR2(50),
p r ic e NUMBER(5, 2)
);
В этой таблице присутствуют следующие столбцы.
■ product_id Однозначно определяет каждую строку таблицы. Этот
столбец является первичным ключом таблицы.
■ product_type_id Связывает каждый товар с типом товара. Этот столбец
является ссылкой на столбец produ ct_type_ id таблицы product_
types и его принято называть внешним ключом, поскольку он ссылается
на столбец из другой таблицы. Таблица, содержащая внешний
ключ (таблица products), называется подчиненной или дочерней таблицей,
а таблица, на которую делается ссылка (таблица product_types),
называется главной или родительской таблицей. Такой вид отношений
известен под названием главная/подчиненная (master/detail) или родитель/
потомок (parent/child). Когда вы добавляете новый товар, вы
связываете этот товар с типом, подставляя соответствующее значение
pro d u ct_ typ e s .p ro d u ct_ typ e _ id в столбец p ro d u cts.p ro d u c t_ typ e_ id
(пример вы увидите ниже).
■ паше Хранит имя товара, которое должно быть задано в обязательном
порядке, так как этот столбец был объявлен как NOT NULL.
■ description Хранит необязательное описание товара.
■ price Хранит цену товара. Этот столбец также является необязательным
и определен как NUMBER(5, 2) разрядность равна 5, поэтому
для этого значения на входе может быть задано не более пяти цифр.
Точность равна 2, поэтому после десятичной точки может быть сохранено
не более двух из общего числа пяти цифр.
18 Глава 1
Ниже показано подмножество строк, хранящихся в таблице products:
□ p rodu ct_id produ ct_type_id name d e s c r ip tio n p r ic e
1 1 Modern Science A d e s c r ip tio n
o f modern sc ie n c e 19.95
2 1 Chemistry In tro d u c tio n