Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

1

ШrnWШllJM·•'(Q

Введение

в реляционные

базы данных

Глава 1. Введение в реляционные базы данных

Прежде чем начать использовать SQL, вы должны понять, что такое реляцион­

ная база данных. Мы намеренно не будем обсуждать в этой главе SQL, поэтому вы

можете пропустить ее, если достаточно хорошо владеете основным понятиями реля­

ционных баз данных. Однако в любом случае следует взглянуть на три таблицы, представленные в конце главы, поскольку именно они используются в большинстве

примеров, приведенных в книге. Вы также можете ознакомиться с ними в приложени­

иЕ. Мы рекомендуем постоянно иметь копию этих таблиц перед глазами.

Что такое реляционная база данных?

Реляционная база данных - это связанная информация, представленная в виде двумерных таблиц. Представьте себе адресную книгу. Она содержит множество строк,

каждая из которых соответствует данному индивидууму. Для каждого из них в ней

представлены некоторые независимые данные, например, имя, номер телефона, адрес. Представим такую адресную книгу в виде таблицы, содержащей строки и столбцы. Каждая строка (называемая также записью) соответствует определенному индивидуу­ му, каждый столбец содержит значения соответствующего типа данных: имя, номер телефона и адрес, - представленных в каждой строке. Адресная книга может выгля­ деть таким образом:

Name

Telephone

Address

(Имя)

(Телефон)

(Адрес)

Gcrтy Farish

(415 )365-8775

127

Primrose Ave., SF

Ce\ia Brock

(707) 874-3553

246

#4 3rd St., Sonoma

Yves Grillet

(762)976-3665

778

Modernas, Barcelona

То, что мы получили, является основой реляционной базы данных, определенной в начале нашего обсуждения двумерной (строки и столбцы) таблицей информации. Од­ нако, реляционная база данных редко состоит из одной таблицы, которая слишком мала по сравнению с базой данных. При создании нескольких таблиц со связанной ин­ формацией можно выполнять более сложные и мощные операции над данными. Мощ­ ность базы данных заключается, скорее, в связях, которые вы конструируете между частями информации, чем в самих этих частях.

Установление связи между таблицами

Давайте используем пример адресной книги для того, чтобы обсудить базу данных, которую можно реально использовать в деловой жизни. Предположим, что индиви­ дуумы первой таблицы являются пациентами больницы. Дополнительную информа­ цию о них можно хранить в другой таблице. Столбцы второй таблицы могут быть поименованы таким образом: Patient (Пациент), Doctor (Врач), Insurer (Страховка),

Balance (Баланс).

2

Что такоереляционная база данных?

Patient

Doctor

Insurer

Balance

(Пациент)

(Врач)

(Страховка)

(Баланс)

Farish

Drume

В.С./В.S.

$272.99

Grillet

Halben

None

$44.76

Brock

Halben

Health, Inc.

$9077.47

Можно выполнить множество мощных функций при извлечении информации из этих таблиц в соответствии с заданными критериями, особенно, если критерий включа­ ет связанные части информации из различных таблиц. Предположим, Dr. Halben желает получить номера телефонов всех своих Пациентов. Для того чтобы извлечь эту инфор­ мацию, он должен связать таблицу с номерами телефонов пациентов (адресную книгу) с таблицей, определяющей его пациентов. В данном простом примере он может мыс­ ленно проделать эту операцию и узнать телефонные номера своих пациентов Grillet и Brock, в действительности же эти таблицы вполне могут быть больше и намного слож­ нее. Программы, обрабатывающие реляционные базы данных, были созданы для рабо­ ты с большими и сложными наборами тех данных, которые являются наиболее общими в деловой жизни общества. Даже если база данных больницы содержит десятки или тысячи имен (как это, вероятно, и бывает в реальной жизни), единственная команда SQL предоставит доктору Halben необходимую информацию практически мгновенно.

Порядок строк произволен

Дriя обеспечения максимальной гибкости при работе с данными строки таблицы, по определению, никак не упорядочены. Этот аспект отличает базу данных от адресной кни­ ги. Строки в адресной книге обычно упорядочены по алфавиту. Одно из мощных средств, предоставляемых реляционными системами баз данных, состоит в том, что пользователи могут упорядочивать информацию по своему желанию.

Рассмотрим вторую таблицу. Содержащуюся в ней информацию иногда удобно рас­ сматривать упорядоченной по имени, иногда - в порядке возрастания или убывания баланса (Balance), а иногда - сгруппированной по доктору. Внушительное множество возможных порядков строк помешало бы пользователю проявить гибкость в работе с

данными, поэтому строки предполагаются неупорядоченными. Именно по этой причи­

не вы не можете просто сказать: "Меня интересует пятая строка таблицы". Независимо от порядка включения данных или какого-либо другого критерия, этой пятой строки не существует по определению. Итак, строки таблицы предполагаются расположенными в

произвольном порядке.

Идентификация строк (первичный ключ)

По этой и ряду других причин, необходимо иметь столбец таблицы, который одно­ значно идентифицирует каждую строку. Обычно этот столбец содержит номер, напри­ мер, приписанный каждому пациенту. Конечно, можно использовать для идентификации строк имя пациента, но ведь может случиться так, что имеется не-

3

Глава 1. Введение в реляционные базы данных

сколько пациентов с именем Mary Smith. В подобном случае нет простого способа их различить. Именно по этой причине обычно используются номера. Такой уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспе­ чивающий различимость всех строк, называется первичны.м ключол1 таблицы

(p1·imary key oft/1e tаЫе).

Первичный ключ таблицы - жизненно важное понятие структуры базы данных. Он является сердцем системы данных: для того чтобы найти определенную строку в таблице, укажите значение ее первичного ключа. Кроме того, он обеспечивает целост­ ность данных. Если первичный ключ должным образом используется и поддерживает­ ся, вы будете твердо уверены в том, что ни одна строка таблицы не является пустой и что каждая из них отлична от остальных. Ключи мы рассмотрим позже, после обсужде­ ния ссылочной целостности (referential integrity) в главе 19.

Столбцы поименованы и пронумерованы

В отличие от строк, столбцы таблицы (также называемые пошн1и (fields) упорядо­ чены и поименованы. Следовательно, в нашей таблице, соответствующей адресной книге, можно сослаться на столбец "Address" как на "столбец номер три". Естествен­ но, это означает, что каждый столбец данной таблицы должен иметь имя, отличное от других имен, для того, чтобы не возникло путаницы. Лучше всего, когда имена опре­ деляют содержимое поля. В этой книге мы будем использовать аббревиатуру для име­ нования столбцов в простых таблицах, например: с11а111е - для имени покупателя (customer name), odate - для даты поступления (order date). Предположим также, что таблица содержит единственный цифровой столбец, используемый как первичный ключ. В следующем разделе детально объясняются таблицы, используемые в качестве

примера и их ключи.

Пример базы данных

Таблицы 1.1, 1.2, 1.3 образуют реляционную базу данных, которая достаточно мала для того, чтобы можно было понять ее смысл, но и достаточно сложна для того, чтобы иллюстрировать на ее примере важные понятия и практические выводы, свя­ занные с применением SQL. Эти же таблицы приведены в приложении Е. Поскольку в этой книге они будут использоваться для иллюстрации различных черт SQL, мы реко­

мендуем скопировать их и постоянно иметь перед глазами. Можно заметить, что пер­

вый столбец в каждой таблице содержит номера, не повторяющиеся от строки к строке в пределах таблицы. Как вы, наверное, догадались, это первичные ключи таб­

.1ицы. Некоторые из этих номеров появляются также в столбцах других таблиц (в этом нет ничего предосудительного), что указывает на связь между строками, использую­ щими конкретное значение первичного ключа, и той строкой, в которой это значение

применяется непосредственно в первичном ключе.

4

Пример базы данных

Таблица 1.1. Salespeople (Продавцы)

 

SNUM

SNAME

СIТУ

 

сомм

 

 

1001

Рее!

London

 

.12

 

 

1002

Seпes

San Jose

 

.13

 

 

 

 

 

1004

Motika

London

 

.11

 

 

1007

Rifkin

Barcelona

 

.15

 

 

1003

Axelrod

New York

.10

 

 

Таблица 1.2. Customers (Покупатели)

 

 

 

 

 

 

 

 

 

 

 

CNUM

CNAME

СIТУ

RAТING

SNUM

 

2001

Hoffman

London

100

1001

 

 

2002

Giovanпi

Rome

200

1003

 

 

2003

Liu

San Jose

200

1002

 

 

2004

Grass

Berlin

300

1002

 

 

2006

Clemens

London

100

1001

 

 

2008

Cisneros

San Jose

300

1007

 

 

2007

Pereira

Rome

100

1004

 

 

Таблица 1.3. Orders (Заказы)

 

 

 

 

 

 

 

 

 

 

 

 

ШiUM

АМТ

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/0311990

2003

1002

 

 

3006

1098.16

10/03/1990

2008

1007

 

 

3009

1713.23

10/04/1990

2002

1003

 

 

3007

75.75

10/0411990

2004

1002

 

 

 

 

 

 

3008

4723.00

10/05/1990

2006

1001

 

 

 

 

3010

1309.95

10/0611990

2004

1002

 

 

3011

9891.88

10/06/1990

2006

1001

 

 

Например,

поле snum в таблице Customers определяет, каким продавцом

(salespeople) обслуживается конкретный покупатель (customer). Номер поля snum ус-

5

Источник: https://studfile.net/preview/16418473/