Выбрал свободную минутку и ещё немного поработал над БД. До этого ещё почитал книжки по "Аксессу" для начинающих и порассматривал добытые в разных местах готовые файлы. Кое-что понял, но на этом заострять внимание не буду - это промежуточные ступени.
В результате поубирал все сделанные ранее связи и в каждой таблице сделал поле "Код ...", которое сделал ключевым. Добавил табличку "Тип географического названия"...
Ага, неправильно получилось - надо был "Тип географического пункта". Потом переделаю. И ещё надо добавить табличку "Тип имени". Добавлю.Со связями я ещё буду разбираться, а пока представлю промежуточную схему БД для тех, кому интересно разобраться в идее.
Здесь три таблицы в верхнем ряду - собственно, те, ради которых всё это и замышлялось. На самом деле, возможно, их все можно соединить в одну, но над этим я ещё подумаю.
Все таблицы ниже "поставляют" в основные нужные данные. Судя по книгам, устоявшаяся терминология немного не подходит для нашего случая, потому что обычно
главными называют таблицы, из которых берутся записи в таблицы, которые, в частности, в моём случае, являются основными по своему предназначению. А они, в свою очередь, называются
подчинёнными.
Правда, есть и ещё один вариант:
материнские и
дочерние. Можно воспользоваться такой терминологией.
Итак, три верхних таблицы - дочерние по отношению ко всем остальным, потому что они используют поля материнских.
Таблица "Имена и названия" - материнская, в свою очередь, для таблиц всей нижней части схемы. В предыдущем варианте БД я расписывал переводы имён и названий в каждой материнской таблице, где они появлялись, а теперь решил всё это сосредоточить в одной таблице, из которой потом, в случае чего, выбирать нужные данные.
Итак, сверху - основные таблицы по сути и дочерние по терминологии, поля которых составляются из материнских таблиц. Вот, собственно, и объяснение такого количества таблиц.
Скажем, хочу я создать таблицу со списком соревнований и достаточным их описанием. Что мне надо включить в такую таблицу?
Название традиционного или разового соревнования. В прошлом гонки нередко состояли из нескольких равнозначных или разнозначных гонок, и весь этот набор каким-то образом именовался или воспринимался под каким-то обобщающим названием. Скажем, в Гудвуде проводились пасхальные гонки. Нормальное описание многозаездного соревнования. Его надо поместить в таблицу, а поскольку оно проводилось каждый год, оно будет повторяться в БД неоднократно, и его есть смысл брать по коду из специальной материнской таблицы. Для этого служит таблица
Названия соревнований.
Соревнование проходило в какой-то день, и для описания этого существуют внутренние возможности программы. Соревнование проходило на какой-то трассе, и её тоже надо упомянуть. Списки трасс помещаются в свою материнскую таблицу, от которой выводится связь в таблицу соревнований.
У соревнования были организатор и иногда санкционер, которых тоже полезно упомянуть, и каждый из которых берётся из своей материнской таблицы.
Точно так же расписываются поля других дочерних таблиц.
Материнские таблицы я сгруппировал по видам.
Названия соревнований и
Названия гонок;
Организаторы и
Санкционеры;
Классы автомобилей и
Категории автомобилей;
Гонщики оказались сами по себе;
Трассы оказались в одной группе со
Странами,
Географическими пунктами и
Типами географических пунктов.
Имена и названия будут поставлять данные практически для каждой таблицы.
Ну и как, понятней стала идея?