Основы программирования в Linux
Приложение для работы с базой данных компакт-дисков
Сейчас мы покажем, как вы можете создать простую базу данных для хранения информации о ваших компакт-дисках и затем разработать программу для доступа к этим данным. Для простоты вы ограничитесь тремя таблицами в базе данных с очень простыми связями между ними.
Начните с создания новой базы данных и затем сделайте ее текущей базой данных.
mysql> <b>create database blpcd;</b>Query OK, 1 row affected (0.00 sec)mysql><b> use blpcd</b>Connection id: 10Current database: blpcdmysql>Теперь вы готовы к проектированию и созданию необходимых вам таблиц.
Эта версия немного сложнее предыдущей, потому что вы выделите три отдельных элемента компакт-диска: исполнителя (или группу), элемент главного каталога и дорожки. Если вы подумаете о коллекции компакт-дисков и компонентах, ее составляющих, то поймете, что каждый компакт-диск состоит из ряда разных дорожек, но различные компакт-диски связаны друг с другом многими параметрами: исполнителем или группой, компанией, производящей их, представленным музыкальным стилем и т.д.
Вы могли бы сделать базу данных очень сложной, попытавшись сохранить все эти разные параметры, но в данном примере ограничьте себя только двумя самыми важными связями.
Во-первых, каждый компакт-диск состоит из переменного количества дорожек, поэтому вы будете хранить данные о дорожке в таблице, отделенной от остальных данных компакт-диска. Во-вторых, у каждого исполнителя (или группы) часто несколько альбомов, поэтому было бы удобно сохранять сведения об исполнителе один раз, а затем отдельно извлекать все компакт-диски, записанные этим исполнителем. Вы не будете пытаться разбить группы на разных исполнителей, которые, возможно, выпустили сольные альбомы, или работать со сборными компакт-дисками — вы будете стараться сохранять структуру вашей коллекции простой!
Связи тоже сохраняйте очень простыми — каждый исполнитель (им может быть название группы) выпустил один или несколько компакт-дисков и каждый компакт-диск состоит из одной или нескольких дорожек. Связи или отношения в вашей базе данных представлены на рис. 8.8.
Рис. 8.8
Создание таблиц
Сейчас вы должны определить реальную структуру таблиц. Начните с основной таблицы — таблицы компакт-дисков (
), в которой хранится большая часть информации. Вам нужно сохранять идентификационный номер (cd) компакт-диска, номер каталога, название и, возможно, ваши собственные заметки. Вам также понадобится ID-номер из таблицы исполнителей, чтобы знать, какой исполнитель выпустил альбом.idТаблица исполнителей (
) очень проста; сохраните в ней только имя исполнителя и уникальный идентификационный номер (id) исполнителя. Таблица дорожек (artist) также чрезвычайно проста; вам нужен только ID компакт-диска, чтобы знать, к какому CD относится дорожка, номер дорожки и название дорожки.trackСначала таблица компакт-диска:
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□ столбец
длиной до 70 символов;title□ столбец
— целое число, которое будет использоваться в таблицеartist_id;artist□ столбец
— номер длиной до 30 символов;catalogue□ столбец
до 100 символов.notesУчтите, что только столбец
может бытьnotes; у всех остальных должны быть значения.NULLТеперь таблица
:artistCREATE TABLE artist (id INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR(100) NOT NULL);И снова у вас столбец
и еще один для имени исполнителя.idИ наконец, таблица
:trackCREATE TABLE track (cd_id INTEGER NOT NULL,track_id INTEGER NOT NULL,title VARCHAR(70),PRIMARY KEY(cd_id, track_id));Обратите внимание на то, что на этот раз вы объявили первичный ключ несколько иначе. Таблица
необычна тем, что ID каждого компакт-диска будет появляться несколько раз, ID любой заданной дорожки, скажем, дорожки 1, также будет появляться несколько раз в разных компакт-дисках. Но их комбинация всегда будет уникальной, поэтому объявите ваш первичный ключ как комбинацию двух столбцов. Такой ключ называют составным, поскольку он состоит из нескольких столбцов, участвующих в комбинации.trackСохраните эти 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 changedmysql> <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
