Приложение для работы с базой данных компакт-дисков
Сейчас мы покажем, как вы можете создать простую базу данных для хранения информации о ваших компакт-дисках и затем разработать программу для доступа к этим данным. Для простоты вы ограничитесь тремя таблицами в базе данных с очень простыми связями между ними.
Начните с создания новой базы данных и затем сделайте ее текущей базой данных.
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 (или схему, если вы предпочитаете этот термин).