Опыт проектирования таблиц — шахматная база данных 2
В данном пункте вы попробуете спроектировать таблицы, ко¬торые по структуре будут столь же простыми, как телефонный справочник или видеотека, но потребуют от вас немного более сложного системного анализа. Предложенная задача — это учеб¬ный пример, который даст вам возможность подумать над неко¬торыми нюансами проектирования двумерных таблиц.
Создадим шахматную систему — «Базу гроссмейстеров», кото¬рая будет содержать сведения обо всех партиях, сыгранных гроссмейстерами мира на официальных турнирах за определен¬ный период, например, с 1924 года. Как всегда, необходимо оп¬ределить концептуальную основу системы, т. е. четко сформули¬ровать требования и ограничения для информационной базы. Вот один из вариантов. (1) Будем учитывать только официаль¬ные турниры под эгидой ФИДЕ, т. е. сыгранные после 1924 го¬да. (2) Будем учитывать только партии, в которых хотя бы один из партнеров являлся международным гроссмейстером, признан¬ным ФИДЕ. Это означает, что в базу данных не попадут, с од¬ной стороны, корифеи, игравшие до появления ФИДЕ (Стейниц, Чигорин), а с другой — гроссмейстеры «местного» значения. (Некоторые страны имели собственных гроссмейсте¬ров, как и «домашних» генералиссимусов. И хотя по нашим ус¬ловиям такой игрок в базу не попадет, это отнюдь не означает, что он играл хуже международного гроссмейстера.)
Подскажем «стартовый» состав нашей базы:
дата партии (поле типа «Дата»);
код белых;
код черных;
число ходов;
результат.
Коды белых и черных следует отразить в словаре гроссмей¬стеров, например:
001 Алехин
Капабланка
Ботвинник и т. д.
Результат можно кодировать так: 2 — победа белых; 1 — ни¬чья; 0 — поражение белых.
Такая база будет содержать обширную -по объему, но слишком формальную информацию. Усовершенствуйте свою базу таким образом, чтобы, используя ее, исследователь мог написать дю¬жину книг по истории шахмат и дебютам:
укажите страну (ввести словарь стран);
укажите дебют (словарь дебютов!);
введите комментарий к каждой партии (с изображением эндшпиля).
И все-таки эта база данных будет неполной. Придумайте, ка¬кие таблицы, какие данные и какого типа следует включить в БД, чтобы наша информационная система могла выдавать био¬графии и фотографии гроссмейстеров, а также отвечать на во¬просы:
кто предложил ничью (если партия закончилась вничью);
на каком турнире игралась конкретная партия;
какие партии игрались на первенство мира (подсказка: матч на первенство мира считать специальным случаем турнира ФИДЕ);
кто главный судья турнира.
Придумайте три разных запроса к системе по образцу: «Какие партии выиграл Ботвинник, играя белыми, у Смыслова за 1948-1960 годы?»