нет смысла в двух одинаковых записях таблицы,
хотя, практически это можно сделать.
К
лю чи
ля обеспечения уника-
льности в таблице выделяют одно поле, что
гарантированно является уникальным для табли-
цы. Это поле называют
первичным ключом
(pri-
mary key, РК).
В большинстве случаев для таблицы сложно или
невозможно выделить первичный ключ из инфор-
мационных полей. Как пример можно рассмотреть
БД сотрудников какого-то учреждения.
Если таблица содержит ФИО работника, дату
рождения, отдел, специальность, должность, то,
какое бы поле не взяли, оно не будет уникальным,
ведь существует вероят-
ность, что в одном отделе бу-
дут работать двое сотрудни-
ков с одинаковыми данными
должностями, специальнос-
тями, годами рождения или
даже однофамильцы.
В таком случае
каждой
за-
писи
таблицы
присваивают
идентификатор
-
некоторое
число,
уникальное
для таблицы (не повторяющееся внутри таблицы)
и делают его первичным ключом. Так мы и сдела-
ли, добавив для таблицы mp3 ещё одно поле id и
сделали его первичным ключом. О полях perf_id и
album jd чуточку позже.
Аналогичным образом мы создали ещё две таб-
лицы: performer (исполнители) с тем же полем id и
именем или названием коллектива в поле name;
album (альбомы) с полем id,
названием альбома
title и годом выхода year.
На схеме также видно стрелки, показывающие
связи (зависимости) между таблицами.
Разуме-
ется, если есть песня, то она принадлежит како-
му-то альбому. Аналогично она принадлежит ка-
кому-то исполнителю.
Для упрощения задачи, будем считать, что песня
принадлежит
лишь
какому-то
одному
альбому
и
одному
ис-
полнителю. Поэтому для каждой
песни
записи
таблицы
mp3)
можем добавить
ссылки
на
за-
пись в таблице performer и ссыл-
ку
на
запись
в
таблице
album.
Этими ссылками и будут поля perf_id и album jd.
Если поле одной таблицы является ссылкой на
запись другой таблицы, то такое поле называется
внеи:ним ключом
(foreign key, FK).
Индексы
С
ключами разобрались. Теперь речь пойдёт
об индексах. Представьте себе, что вам не-
обходимо работать с некоторой энциклопедией.
Энциклопедия представляет собой набор ста-
Ф
тей. Вам необходимо быстро находить необхо-
димую статью.
В таком случае
имеет смысл раз-
местить статьи в алфавитном порядке. Если
необходимо найти некоторое слово внутри ста-
тьи, то логично иметь в энциклопедии алфа-
витный указатель.
Такие самые указатели существуют и в таблицах
БД и
называются
индексами.
Их действие
про-
зрачно для
пользователя
-
индекс
следует соз-
дать в таблице только один раз, а дальше сервер
сам решает, как и когда ими пользоваться.
Рассмотрим пример с таблицей mp3. Для нача-
ла приведём её к новому виду, который мы
уже обсудили выше. Добавим в таблицу
поля id, album jd и p e rfjd в phpMyAdmin во
вкладке
Структура
(рис.
2)
далее добавляем эти поля
(рис. 3).
После добавления новых полей удалим
все записи из таблицы mp3 (закладка
Об-
зор >
Очистить).
После чего задумаемся, какие же индек-
сы нам нужны. Когда решают такой вопрос, то
обычно размышляют, какие операции по выборке
будут проводиться над таблицей.
Во-первых, поле id является первичным клю-
чом, а по ключевому полю всегда строится ин-
декс, причём это особый тип индекса -
уникаль-
ный индекс.
Если в таблице есть поле с уникаль-
ным индексом, то сервер не позволит вставить в
таблицу запись с уже
уществующим индексом.
Первичный
ключ создаётся
в phpMyAdmin
кли-
ком
на ссылке
Первичный
в списке полей в за-
кладке
Структура.
Как только поле id стал первичным ключом, в спис-
ке полей он стал подчёркнутым, а в списке индексов
под списком полей видим индекс по этому полю.
Поскольку мы должны связывать эту таблицу по
полям album jd и
p e rfjd с таблицами
album и performer, то
нам необходимо будет
делать выборки по
этим полям. Значит,
необходимы индексы для этих полей. Создание
индекса по полю выполняется в phpMyAdmin кли-
ком на ссылке
Индекс
в списке полей в закладке
Структура
(рис. 4).
Создание индекса ощутимо повышает ско-
рость выборки из таблицы. Поэтому, на первый
взгляд кажется, что можно создать индексы
сразу для всех полей. На самом деле это не
очень удачная идея.
Рис. 2
Добавить новое поле :
Пошел
Индексы
[Документация]
К о л и ч е с т в о
э л е м е н т о в
Рис. 4
Имя
'
к л ю ч а
Т и п
Д е й с т в и е
П о л е
PRIMARY PRIMARY
,
0 Іничтшить: Праша id
•„
Щй
• .
..
.if:
»_
album id
INDEX
-У'-
‘-Н е т Уничтожить Правка album id
pertjd
INDEX
Нет
УшчтожиШ ИраШа perfjd
предыдущая страница 36 Компьютер 2011 04 читать онлайн следующая страница 38 Компьютер 2011 04 читать онлайн Домой Выключить/включить текст