% $Id: tables.tex,v 1.5 2003/09/04 20:44:30 boris Exp $
% $Log: tables.tex,v $
% Revision 1.5 2003/09/04 20:44:30 boris
% added status
%
% Revision 1.4 2002/01/20 19:54:32 boris
% Added URL in Clubs
%
% Revision 1.3 2001/09/03 04:09:44 boris
% Spell-checked
%
% Revision 1.2 2001/09/03 03:48:45 boris
% Wrote text
%
\documentclass[12pt]{article}
\usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\begin{document}
\title{Структура таблиц для проекта <<клубный регистр>>}
\date{$ $Date: 2003/09/04 20:44:30 $ $, $ $Revision: 1.5 $ $}
\author{Борис Вейцман}
\maketitle
\tableofcontents
\listoftables
\section{Введение}
В этом документе описаны таблицы для БД <<клубный реестр>>. Проект
осуществляется в стандартной для клуба связке PerlCGI-MySQL.
\section{Общая структура}
Мы предполагаем \emph{две} иерархии в таблице: регионы и
клубы. Регионы образуют цепочку, например, Вселенная $\to$ Россия
$\to$ Москва. Клубы делятся на собственно клубы и ассоциации. Каждый
регион может входить в несколько регионов, а каждый клуб может быть
членом нескольких ассоциаций.
Кроме того, мы предполагаем, что один и тот же человек может занимать
несколько должностей в разных клубах или ассоциациях. Для этой цели
люди выделены в отдельную таблицы.
\section{Основные таблицы}
\subsection{Таблица клубов}
Основное таблицей является таблица Clubs. Её поля перечислены в
таблице~\ref{tab:clubs}. Очень важно, что адрес, телефон и т.д.,
указанные в этой таблице "---это адрес клуба как такового, а не адрес
людей из руководства клуба!
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
cid & Auto Increment & Идентификатор клуба\\
Name & Text & Название клуба\\
Address & Text & Адрес клуба (отличный от адреса людей, которые
представляют клуб!)\\
URL & Text & Список ссылок, разделённых пробелами\\
Phone & Text & Список телефонов, разделённых пробелами\\
Fax & Text & Список факсов, разделённых пробелами\\
Email & Text & Список адресов, разделённых пробелами\\
DoB & Text & Дата образования клуба комментарий\\
Sponsor & Text & Основной спонсор клуба\\
Meetings & Text & Основные формы деятельности клуба\\
AdultTeams & Text & Взрослые команды клуба\\
KidTeams & Text & Детские команды клуба\\
ForeignFests & Text & Основные <<чужие>> фестивали, где выступаю
команды клуба\\
Braglist & Text & Достижения клуба \\
OwnFests & Text & Фестивали, которые организовывает клуб\\
\hline
\end{tabular}
\caption{Поля таблицы Clubs}
\label{tab:clubs}
\end{center}
\end{table}
\subsection{Таблица регионов}
Таблица регионов (таблица~\ref{tab:regions} очень проста. Поля
<<долгота>> и <<широта>> нужны для будущей карты клубов. Поле <<URL>>
нужно для связи ссылок на региональные странички.
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
rid & Auto Increment & Идентификатор региона\\
Name & Text & Название региона\\
Lon & Float & Долгота\\
Lat & Float & Широта\\
URL & Text & Список ссылок, разделённых пробелами\\
\hline
\end{tabular}
\caption{Поля таблицы Regions}
\label{tab:regions}
\end{center}
\end{table}
\subsection{Таблица кадров}
Руководители клубов собраны в таблице People (см.
таблицу~\ref{tab:people}).
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
pid & Auto Increment & Идентификатор человека\\
Name & Text & ФИО\\
Address & Text & Адрес\\
URL & Text & Список ссылок, разделённых пробелами\\
Phone & Text & Список телефонов, разделённых пробелами\\
Fax & Text & Список факсов, разделённых пробелами\\
Email & Text & Список адресов, разделённых пробелами\\
\hline
\end{tabular}
\caption{Поля таблицы People}
\label{tab:people}
\end{center}
\end{table}
\section{Таблицы связей}
Для связей между элементами таблиц нам нужны стандартные реляционные
таблицы:
\begin{enumerate}
\item Таблица ClubClub (\ref{tab:clubclub}): в ней указано отношение
<<$A$ есть ассоциация, в которую входит $B$>>
\item Таблица ClubPeople (\ref{tab:clubpeople}): в ней указано
отношение <<$B$ занимает определённую должность в $A$>>. Поскольку
принято перечислять должности в определённом порядке, в таблице есть
графа <<вес>>. Чем больше вес, тем раньше идёт должность в порядке
перечисления.
\item Таблица ClubRegion (\ref{tab:clubregion}): в ней указано отношение
<<клуб $B$ входит в регион $A$>>
\item Таблица RegionRegion (\ref{tab:regionregion}): в ней указано отношение
<<регион $A$ является непосредственным надрегионом для региона $B$>>
\end{enumerate}
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
Parent & Int & Идентификатор ассоциации\\
Child & Int & Идентификатор клуба\\
Status & Text & Статус клуба (ассоциированный клуб и т.д.)\\
\hline
\end{tabular}
\caption{Поля таблицы ClubClub}
\label{tab:clubclub}
\end{center}
\end{table}
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
cid & Int & Идентификатор клуба\\
pid & Int & Идентификатор человека\\
Position & Text & Должность\\
Weight & Int & Вес при перечислении\\
\hline
\end{tabular}
\caption{Поля таблицы ClubPeople}
\label{tab:clubpeople}
\end{center}
\end{table}
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
cid & Int & Идентификатор клуба\\
rid & Int & Идентификатор региона\\
\hline
\end{tabular}
\caption{Поля таблицы ClubRegion}
\label{tab:clubregion}
\end{center}
\end{table}
\begin{table}[tbp]
\begin{center}
\begin{tabular}{llp{0.5\textwidth}}
\hline
Поле & Формат & Значение\\
\hline
Parent & Int & Идентификатор региона\\
Child & Int & Идентификатор региона\\
\hline
\end{tabular}
\caption{Поля таблицы RegionRegion}
\label{tab:regionregion}
\end{center}
\end{table}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>