Программирование >>  Программный интерфейс приложений 

1 ... 13 14 15 [ 16 ] 17 18 19 ... 264


данных, которой я здесь еще не касался. Более подробно это обсуждается в главе 3 Синтаксис и использование языка SQL . А на этом этапе разница между двумя типами не играет роли.

Введя оператор describe member, читатель увидит аналогичную информацию для таблицы member.

Оператор describe полезен в тех случаях, когда пользователь забыл имя столбца или необходимо уточнить тип данных, размер столбца и т. п. Это также полезно для того, чтобы узнать порядок, в котором СУБД MySQL хранит столбцы в таблице Знать это очень важно при добавлении строк в таблицу и загрузке данных. Для операторов insert и load data необходимо полное соответствие вводимых данных со структурой таблицы.

Оператор describe можно сократить до desc или, если читатель предпочитает много печатать, он может ввести оператор show columns from tbl name, который является синонимом describe tbl name.

А что делать, если читатель вообще забыл имена своих таблиц? Тогда воспользуйтесь оператором show tables. Для базы данных samp db листинг этого оператора будет иметь следующий вид.

mysql> SHOW TABLES;

+.-+

1 Tables in samp db +--+

member president 1 -+

Ha случай, если читатель забьш имя своей базы данных, имеется оператор show databases.

mysql> SHOW DATABASES;

I Database \

menargie mysql I samp db I test I -+

Ha каждом сервере список баз данных может варьироваться, но две из них должны присутствовать всегда. Это samp db и mysql. Последняя база данных хранит таблицы, содержащие привилегии и права доступа

Команды describe и show имеют также и эквиваленты в командной строке.

% mysqlshow дает перечень всех баз данных, как

SHOW DATABASES

% mysqlshow clb name дает перечень всех таблиц в

данной базе данных, как SHOW TABLES

% mysqlshow db name tbl name дает перечень столбцов в данной

таблице, как DESCRIBE tbl name



Таблицы проекта Учет успеваемости

Попробуем посмотреть на примере учета успеваемости в простом журнале, какого рода таблицы нам нужны для реализации проекта контроля успеваемости. На рис. 1.2 изображена страница из обыкновенного журнала. Основным телом журнала является матрица с оценками. Присутствуют и другие данные, необходимые для того, чтобы придать смысл этой информации. Перечисляются имена и идентификационные номера учащихся. (Для простоты ограничимся только четырьмя учащимися.) Вверху записаны даты викторин и тестов. Из рисунка видно, что викторины проводились 3, 6, 16 и 23 сентября, а тесты - 9 сентября и I октября.

Для контроля всей этой информации нам понадобится таблица итоговых оценок score. Что должны хранить записи этой таблицы? В каждой строке указывается имя учащегося, дата викторины или теста и результат. На рис. 1.3 нащло отражение такое представление информации. (Даты представлены в формате yyyy-mm-dd .)

Учащиеся

Оценки

Идентификатор

9/6 9/9 9/16 9/23 10/1 ...

Billy

Missy

Johnny

Jenny

Рис, 1.2. Пример журнала успеваемости

Таблица score

name

date

score

Billy

1999-09-23

Missy

1999-09-23

Johnny

1999-09-23

Jenny

1999-09-23

Billy

1999-10-01

Missy

1999-10-01

Johnny

1999-10-01

Jenny

1999-10-01

Рис. 1.3. Первоначальная структура таблицы score

Однако похоже, что такая структура таблицы может создать определенные проблемы. Кажется, в ней недостает какой-то информации. Например, глядя на записи рис. 1.3, трудно сказать, результатом чего он является. Результатом викторины или результатом теста? Возможно, при определении окончательной оценки потребуется определить типы результатов. Это нужно в том случае, когда результаты викторин и результаты тестов имеют различный приоритет. Конечно, можно определить тип ре-



зультата по диапазону результатов, выпадающих на определенную дату (викторины обычно имеют более низкие оценки, чем тесты), но это будет неверно, так как полученный результат будет основываться не на явных данных, а на предположениях.

Можно просто добавить столбец, содержащий флаг Т или Q для определения типа оценки. На рис. 1.4 Т - означает оценку за тест, Q - оценку за викторину. Теперь тип оценки объявлен явным образом. Недостатком является то, что эта информация несколько избыточна. Обратите внимание на то, что даты и типы счетов для нескольких учащихся совпадают. Все результаты за 23 сентября имеют тип Q, а за 1 октября - Т. Это бесспорно. При записи результатов тестов и викторин мы несколько раз записываем одну ту же дату и один и тот же тип. Кому нужно вводить эту избыточную информацию?

Попробуем другое представление данных. Вместо записи типов результатов в таблицу score мы будем вычислять его из даты. Будем хранить перечень дат и использовать его для определения типа события : просто найдите в таблице event дату, соответствующую дате в таблице score. Получится тип события. На рис. 1.5 приведена структура этой таблицы и видно, как реагирует эта связь на дату 23 сентября. Подобрав соответствующую запись в таблице event, мы увидим, что этот результат является результатом викторины.

Таблица score

name

date

score

type

Billy

1999-09-23

Missy

1999-09-23

Johnny

1999-09-23

Jenny

1999-09-23

Billy

1999-10-01

Missy

1999-10-01

Johnny

1999-10-01

Jenny

1999-10-01

Рис, 1,4, Структура таблицы score, измененная для хранения типа результата

Таблица score

Таблица event

name

date

score

Billy

1999-09-23

Johnny

1999-09-23

Jenny

1999-09-23

Billy

1999-10-01

Missy

1999-10-01

Johnny

1999-10-01

Jenny

1999-10-01

date

type

1999-09-03

1999-09-06

1999-09-09

1999-09-16

1999-09-23

1999-10-01

Рис. 1.5. Таблицы score и event, связанные по дате



1 ... 13 14 15 [ 16 ] 17 18 19 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика