Скачиваний:
147
Добавлен:
02.05.2014
Размер:
2.66 Mб
Скачать

3.9. База данных поставщиков и деталей

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

комить читателя с этой базой данных, которая будет служить примером для ссылок в последующих главах. На рис. 3.8 показано множество значений ее данных. Именно эти конкретные значения будут фактически использоваться в дальнейшем (где это имеет смысл). На рис. 3.9 показано определение базы данных, для которого снова использу- ется (несколько измененный) язык Tutorial D. В частности, обратите внимание на спецификации первичных и внешних ключей. Кроме того, обратите внимание на то, что несколько столбцов имеют типы данных, которым присвоено название, аналогич- ное названию соответствующего столбца. Столбцы STATUS и CITY определены как имеющие не пользовательский, а встроенный тип данных— INTEGER (целое) и CHAR (строка символов произвольной длины) соответственно. Наконец, необходимо отме- тить, что в отношении значений, показанных в столбцах на рис. 3.8, должно быть сде- лано одно важное замечание, однако мы еще не готовы к этому. Поэтому обсуждение упомянутого замечания будет отложено до главы 5, точнее — до подраздела "Внутренний уровень" в разделе 5.2.

s#

SNAME

STATUS

CITY

SP

S#

P#

QTY

SI

Smith

20

London

SI

PI

300

S2

Jones

10

Paris

SI

P2

200

S3

Black

30

Paris

SI

P3

400

S4

Clark

20

London

SI

P4

200

S5

Adams

30

Athens

SI

P5

100

SI

P6

100

P#

PNAME

COLOR

WEIGHT

CITY

S2

PI

300

PI

Nut

Red

12.0

London

S2

P2

400

P2

Bolt

Green

17.0

S3

P2

200

P3

Screw

Blue

17.0

Rome

S4

P2

200

P4

Screw

Red

14.0

London

S4

P4

300

P5

Cam

Blue

12.0

Paris

S4

P5

400

P6

Cog

Red

19.0

London

Рис. 3.8. База данных поставщиков и деталей (пример значений) В базе данных предполагается следующая семантика.

  • Переменная-отношение S представляет поставщиков. Каждый поставщик имеет уникальный номер (S#); имя (SNAME), необязательно уникальное (хотя оно может быть уникальным, как в случае, представленном на рис. 3.8); значение рейтинга или статуса (STATUS); место расположения (CITY). Предполагается, что каждый поставщик находится только в одном городе.

  • Переменная-отношение Р представляет детали (точнее, виды деталей). У каждого вида детали есть номер детали (Р#), который является уникальным; название дета- ли (PNAME); цвет (COLOR); вес (WEIGHT); город, где хранится этот вид деталей (CITY). Предполагается (где это имеет значение), что вес детали приведен в фунтах. Так- же предполагается, что каждый отдельный вид детали имеет только один цвет и хранится на складе только в одном городе.

■ Переменная-отношение SP представляет поставки. Она в известном смысле слу- жит для организации логической связи двух других переменных-отношений. На- пример, первая строка переменной-отношения SP на рис. 3.8 связывает поставщика с номером 'S1' из переменной-отношения S с соответствующей деталью, имеющей номер 'Р1' в переменной-отношении Р, т.е. представляет факт поставки деталей типа ' Р1' поставщиком с номером ' S1' (а также указывает количество деталей — 300 штук). Таким образом, каждая поставка характеризуется номером поставщика (St), номером детали (Pi) и количеством (QTY). Предполагается, что в одно и то же время может быть не более одной поставки для одного поставщика и одной детали, поэтому для каждой поставки комбинация значений столбцов Si и Pi уни- кальна с точки зрения набора текущих поставок, представленных в переменной- отношении SP.

Замечание. На рис. 3.8 умышленно показано одно значение поставщика (с номе- ром ' S5'), для которого не существует ни одной поставки.

TYPE Si ... ; TYPE NAME ... ; TYPE Pi ... ; TYPE COLOR ... ; TYPE WEIGHT ... ; TYPE QTY ... ;

VAR S BASE RELATION { Si Si,

SNAME NAME,

STATUS INTEGER,

CITY CHAR } PRIMARY KEY { Si } ;

VAR P BASE RELATION

{ Pi Pi,

PNAME NAME, COLOR COLOR, WEIGHT WEIGHT, CITY CHAR } PRIMARY KEY { Pi } ;

VAR SP BASE RELATION

{ si si, Pi Pi,

QTY QTY }

PRIMARY KEY { Si, Pi }

FOREIGN KEY { Si } REFERENCES S

FOREIGN KEY { Pi } REFERENCES P ;

Рис. 3.9. База данных поставщиков и деталей (определение данных)

Как отмечалось выше (в главе 1, раздел 1.3), детали и поставщиков можно рассмат- ривать как сущности, а поставку — как связь между определенным поставщиком и оп- ределенной деталью. Однако в том же разделе было указано, что связи можно понимать как особый вид сущностей. Одно из преимуществ реляционных баз данных состоит именно в том, что все сущности, независимо от того, что на самом деле они могут яв- ляться связями, представляются одним универсальным способом, а именно — с помо- щью строк, объединенных в отношения, как показано в нашем примере.

И еще пара последних замечаний.

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

  • Во-вторых, безусловно, не было бы ошибкой, если бы мы использовали более описательные названия переменных-отношений, подобные SUPPLIERS (постав- щики), PARTS (детали) и SHIPMENTS (поставки), вместо сокращенных названий S, Р и SP. Более того, на практике рекомендуется использовать именно такие описа- тельные названия. Однако в нашем конкретном случае в последующих главах на- звания этих переменных-отношений будут употребляться так часто, что целесооб- разнее использовать именно короткие названия. Многократно употребляемые длинные названия зачастую способны вызвать раздражение.

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]