Приложение для работы с базой данных компакт-дисков
Сейчас мы покажем, как вы можете создать простую базу данных для хранения информации о ваших компакт-дисках и затем разработать программу для доступа к этим данным. Для простоты вы ограничитесь тремя таблицами в базе данных с очень простыми связями между ними.
Начните с создания новой базы данных и затем сделайте ее текущей базой данных.
mysql> <b>create database blpcd;</b>
Query OK, 1 row affected (0.00 sec)
mysql><b> use blpcd</b>
Connection id: 10
Current database: blpcd
mysql>
Теперь вы готовы к проектированию и созданию необходимых вам таблиц.
Эта версия немного сложнее предыдущей, потому что вы выделите три отдельных элемента компакт-диска: исполнителя (или группу), элемент главного каталога и дорожки. Если вы подумаете о коллекции компакт-дисков и компонентах, ее составляющих, то поймете, что каждый компакт-диск состоит из ряда разных дорожек, но различные компакт-диски связаны друг с другом многими параметрами: исполнителем или группой, компанией, производящей их, представленным музыкальным стилем и т.д.
Вы могли бы сделать базу данных очень сложной, попытавшись сохранить все эти разные параметры, но в данном примере ограничьте себя только двумя самыми важными связями.
Во-первых, каждый компакт-диск состоит из переменного количества дорожек, поэтому вы будете хранить данные о дорожке в таблице, отделенной от остальных данных компакт-диска. Во-вторых, у каждого исполнителя (или группы) часто несколько альбомов, поэтому было бы удобно сохранять сведения об исполнителе один раз, а затем отдельно извлекать все компакт-диски, записанные этим исполнителем. Вы не будете пытаться разбить группы на разных исполнителей, которые, возможно, выпустили сольные альбомы, или работать со сборными компакт-дисками — вы будете стараться сохранять структуру вашей коллекции простой!
Связи тоже сохраняйте очень простыми — каждый исполнитель (им может быть название группы) выпустил один или несколько компакт-дисков и каждый компакт-диск состоит из одной или нескольких дорожек. Связи или отношения в вашей базе данных представлены на рис. 8.8.
Рис. 8.8
Создание таблиц
Сейчас вы должны определить реальную структуру таблиц. Начните с основной таблицы — таблицы компакт-дисков (
cd
), в которой хранится большая часть информации. Вам нужно сохранять идентификационный номер (
id
) компакт-диска, номер каталога, название и, возможно, ваши собственные заметки. Вам также понадобится ID-номер из таблицы исполнителей, чтобы знать, какой исполнитель выпустил альбом.
Таблица исполнителей (
artist
) очень проста; сохраните в ней только имя исполнителя и уникальный идентификационный номер (id) исполнителя. Таблица дорожек (
track
) также чрезвычайно проста; вам нужен только ID компакт-диска, чтобы знать, к какому CD относится дорожка, номер дорожки и название дорожки.
Сначала таблица компакт-диска:
CREATE TABLE cd (
id INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(70) NOT NULL,
artist_id INTEGER NOT NULL,
catalogue VARCHAR(30) NOT NULL,
notes VARCHAR(100)
);
Приведенный программный код создает таблицу с именем
cd
со следующими столбцами:
□ столбец
id
, содержащий целое число, которое автоматически увеличивается и представляет собой первичный ключ таблицы;
□ столбец
title
длиной до 70 символов;
□ столбец
artist_id
— целое число, которое будет использоваться в таблице
artist
;
□ столбец
catalogue
— номер длиной до 30 символов;
□ столбец
notes
до 100 символов.
Учтите, что только столбец
notes
может быть
NULL
; у всех остальных должны быть значения.
Теперь таблица
artist
:
CREATE TABLE artist (
id INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
И снова у вас столбец
id
и еще один для имени исполнителя.
И наконец, таблица
track
:
CREATE TABLE track (
cd_id INTEGER NOT NULL,
track_id INTEGER NOT NULL,
title VARCHAR(70),
PRIMARY KEY(cd_id, track_id)
);
Обратите внимание на то, что на этот раз вы объявили первичный ключ несколько иначе. Таблица
track
необычна тем, что ID каждого компакт-диска будет появляться несколько раз, ID любой заданной дорожки, скажем, дорожки 1, также будет появляться несколько раз в разных компакт-дисках. Но их комбинация всегда будет уникальной, поэтому объявите ваш первичный ключ как комбинацию двух столбцов. Такой ключ называют
составным, поскольку он состоит из нескольких столбцов, участвующих в комбинации.
Сохраните эти SQL-операторы в текущем каталоге, в файле, названном create_tables.sql, и затем двигайтесь дальше и создайте базу данных и таблицы в ней. Готовый пример сценария содержит дополнительные строки, по умолчанию помеченные как комментарий, в них удаляются эти таблицы, если они уже существуют.
$ <b>mysql -u rick -р</b>
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> <b>use blpcd;</b>
Database changed
mysql> <b>\. create_tables.sql</b>
Query OK, 0 rows affected (6.04 sec)
Query OK, 0 rows affected (0.10 sec)
Query OK, 0 rows affected (0.00. sec)
mysql>
Обратите внимание на применение команды
\.
для получения ввода из файла create_tables.sql.
Вы могли бы создать таблицы, выполнив операторы SQL или просто набирая данные с помощью обозревателя запросов MySQL Query Browser.
После того как таблицы созданы, их можно просмотреть, используя MySQL Administrator (рис. 8.9), в котором вы проверяете таблицу индексов базы данных
blpcd
(или схему, если вы предпочитаете этот термин).