Вот почему номера так необходимы. Такой уникальный столбец( или уникальная группа столбцов ), используемый чтобы идентифицировать каждую строку и храненить все строки отдельно, называются - первичными ключами таблицы.
Первичные ключи таблицы важный элемент в структуре базы данных. Они - основа вашей системы записи в файл; и когда вы хотите найти определенную строку в таблице, вы ссылаетесь к этому первичному ключу. Кроме того, первичные ключи гарантируют, что ваши данные имеют определенную целостность. Если первичный ключ правильно используется и поддерживается, вы будете знать что нет пустых строк таблицы и что каждая строка отличается от любой другой строки. Мы будем обсуждать ключи и далее когда поговорим относительно справочной целостности в Главе 19.
В отличие от строк, столбцы таблицы (также называемые полями ) упорядочиваются и именуются. Таким образом, в нашей таблице адресной книги, возможно указать на " адрес столбца " или на " столбец 3 ". Конечно, это означает что каждый столбец данной таблицы должен иметь уникальное имя чтобы избежать неоднозначности. Лучше всего если эти имена указывают на содержание поля. В типовых таблицах этой книги, мы будем использовать такие сокращения для имени столбца, как cname для имени заказчика, и odate для даты порядка. Мы также дадим каждой таблице личный числовой номер столбца в качестве первичного ключа. Следующий раздел будет объяснять эти таблицы и их ключи более подробно.
Таблицы 1.1, 1.2, и 1.3 составляют реляционную базу данных которая является минимально достаточной чтобы легко ее отслеживать, и достаточно полной, чтобы иллюстрировать главные понятия и практику использования SQL.
Эти таблицы напечатаны в этой главе а также в Приложении E. Так как они будут использоваться для иллюстрирования различных особенностей SQL по всей этой книге, мы рекомендуем чтобы вы скопировали их, для удобства ссылки к ним.
Вы могли уже обратить внимание что первый столбец каждой таблицы содержит номера чьи значения различны для каждой строки. Как вы наверное и предположили, это - первичные ключи таблиц. Некоторые из этих номеров также показаны в столбцах других таблиц. В этом нет ничего неверного. Они поазывают связь между строками которые используют значение принимаемое из первичного ключа, и строками где это значение используется в самом первичном ключе.
Таблица 1.1: Продавцы
SNUM | SNAME | CITY | COMM |
1001 | Peel | London | .12 |
1002 | Serres | San Jose | .13 |
1004 | Motika | London | .11 |
1007 | Rifkin | Barcelona | .15 |
1003 | Axelrod | New York | .10 |
Таблица 1.2: Заказчики
CNUM | CNAME | CITY | RATING | SNUM |
2001 | Hoffman | London | 100 | 1001 |
2002 | Giovanni | Rome | 200 | 1003 |
2003 | Liu | SanJose | 200 | 1002 |
2004 | Grass | Berlin | 300 | 1002 |
2006 | Clemens | London | 100 | 1001 |
2008 | Cisneros | SanJose | 300 | 1007 |
2007 | Pereira | Rome | 100 | 1004 |
Таблица 1.3: Порядки
ONUM | AMT | ODATE | CNUM | SNUM |
3001 | 18.69 | 10/03/1990 | 2008 | 1007 |
3003 | 767.19 | 10/03/1990 | 2001 | 1001 |
3002 | 1900.10 | 10/03/1990 | 2007 | 1004 |
3005 | 5160.45 | 10/03/1990 | 2003 | 1002 |
3006 | 1098.16 | 10/03/1990 | 2008 | 1007 |
3009 | 1713.23 | 10/04/1990 | 2002 | 1003 |
3007 | 75.75 | 10/04/1990 | 2004 | 1002 |
3008 | 4723.00 | 10/05/1990 | 2006 | 1001 |
3010 | 1309.95 | 10/06/1990 | 2004 | 1002 |
3011 | 9891.88 | 10/06/1990 | 2006 | 1001 |
Например, поле snum в таблице Заказчиков указывает, какому продавцу назначен данный заказчик. Номер поля snum связан с таблицей Продавцов, которая дает информацию об этих продавцах. Очевидно, что продавец которому назначены заказчики должен уже существовать - то есть, значение snum из таблицы Заказчиков должно также быть представлено в таблице Продавцов. Если это так, то говорят, что "система находится в состоянии справочной целостности ".
Этот вывод будет более полно и формально объяснен в Главе 19.
ПРИМЕЧАНИЕ: Эти три представленых таблицы в тексте имеют русские имена - Продавцов, Заказчиков и Порядков, и далее будут упоминаться именно под этими именами. Имена любых других применяемых в книге таблиц будут написаны по английски что бы отличать их от наших базовых таблиц этой базы данных. Кроме того в целях однозначности, имена заказчиков, продавцов, Системных Каталогов а также полей в тексте, также будут даны на латыни.
Таблицы приведены как пример к похожей ситуации в реальной жизни, когда вы будете использовать SQL чтобы следить за продавцами, их заказчиками, и порядками заказчиков. Давайте рассмотрим эти три таблицы и значения их полей.
Здесь показаны столбцы Таблицы 1.1