Изучаем sql


Рис. 1.2.  Сетевое представление информации по счетам 16



Pdf көрінісі
бет12/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   8   9   10   11   12   13   14   15   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Рис. 1.2.
 Сетевое представление информации по счетам


16
Глава 1. Немного истории
4. Перейти по связи от записи денежного рынка к списку его транзак
ций.
Одну интересную особенность сетевых баз данных демонстрирует на
бор записей 
product
(тип счета), на рис. 1.2 крайний справа. Обратите
внимание, что каждая запись 
product
(
Checking
(текущие расходы), 
Sa
vings
(сбережения) и т. д.) указывает на список записей 
account
(счет),
соответствующих этому типу счета. Поэтому доступ к записям 
account
может быть осуществлен из нескольких мест (и через записи 
customer
,
и через записи 
product
), что делает сетевую базу данных 
иерархией с не
сколькими родителями 
(
multiparent hierarchy
).
И иерархические, и сетевые системы баз данных ныне живы и здоро
вы, хотя преимущественно в мире мэйнфреймов. Кроме того, иерархи
ческие системы БД возродились в службах каталогов, таких как Active
Directory компании Microsoft и Directory Server компании Netscape,
а также с появлением XML (Extensible Markup Language, расширяе
мый язык разметки). Однако начиная с 1970х годов все большую по
пулярность приобретает новый способ представления данных, более
строгий, но при этом более понятный и удобный.
Реляционная модель
В 1970 году сотрудник исследовательской лаборатории IBM доктор
Е. Ф. Кодд (E. F. Codd) опубликовал статью под названием «A Relation
al Model of Data for Large Shared Data Banks» (Реляционная модель дан
ных для больших банков данных коллективного пользования), в кото
рой предложил представлять данные как наборы 
таблиц
. Вместо ука
зателей для навигации по взаимосвязанным сущностям используются
избыточные данные, связывающие записи разных таблиц. На рис. 1.3
представлена информация счетов Джорджа и Сью в таком контексте.
На рис. 1.3 есть четыре таблицы, представляющие четыре обсуждае
мые сущности: 
customer

product

account
и 
transaction
(транзакция). По
смотрев на таблицу 
customer
, можно увидеть три 
столбца

cust_id
(идентификационный номер клиента), 
fname
(имя клиента) и 
lname
(фа
милия клиента). Ниже в таблице 
customer
видим две 
строки
: первая со
держит данные Джорджа Блейка, вторая – данные Сью Смит. Макси
мально возможное количество столбцов в таблице отличается для раз
ных серверов, но обычно это достаточно большое число, и с ним нет
проблем (Microsoft SQL Server, например, допускает до 1024 столбцов
в таблице). Число строк в таблице – это больше вопрос физических
возможностей (т. е. определяется доступным дисковым пространст
вом), чем ограничений серверов БД.
Каждая таблица реляционной базы данных включает информацию,
уникально идентифицирующую строку этой таблицы (
первичный ключ
(
primary key
)), а также дополнительные данные, необходимые для пол
ного описания сущности. Возвращаясь к таблице 
customer
: в столбце
cust_id
каждому клиенту соответствует определенный номер. Напри


Введение в базы данных
17
мер, Джорджа Блейка можно уникально идентифицировать с помо
щью клиентского идентификатора (ID №). Никогда никакому другому
клиенту не будет присвоен такой же идентификатор, и этой информа
ции достаточно, чтобы обнаружить данные Джорджа Блейка в таблице
customer
. Хотя в качестве первичного ключа можно было бы выбрать со
четание столбцов 
fname
и 
lname
(первичный ключ, состоящий из двух
и более столбцов, называют 
составным ключом 
(
compound key
)), у двух
и более человек, имеющих счета в банке, могут быть одинаковые имена
и фамилии. Поэтому специально для первичных ключей в таблицу 
cus
tomer
был включен столбец 
cust_id
.
Некоторые из таблиц также содержат информацию, используемую для
навигации к другой таблице. Например, в таблице 
account
есть столбец
cust_id
, содержащий уникальный идентификатор клиента, открывше
го счет, и столбец 
product_cd
, содержащий уникальный идентификатор
типа счета, которому будет соответствовать счет. Эти столбцы называют
внешними ключами 
(
foreign keys
). Они служат той же цели, что и ли
нии, соединяющие сущности в иерархической и сетевой версиях пред
20040122
$100.00
103
DBT
978
date
amount
account_id
txn_type_cd
txn_id
20040205
$25.00
103
CDT
979
20040309
$250.00
104
DBT
980
20040325
$1000.00
105
DBT
981
20040402
$138.50
105
CDT
982
20040404
$77.86
105
CDT
983
20040327
$500.00
106
DBT
984
$75.00
1
CHK
103
balance
cust_id
$250.00
1
SA V
104
$783.64
2
CHK
105
$500.00
2
MM
106
0
2
LO C
107
Блейк
Джордж
1
lname
fname
cust_id
Смит
Сью
2
Текущие расходы
CHK
name
product_cd
Сбережения
SAV
Денежный рынок
MM
Кредитный лимит
LOC
Транзакция
account_id
Счет
Клиент
Тип счета
product_cd


Достарыңызбен бөлісу:
1   ...   8   9   10   11   12   13   14   15   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет