author | eilers <eilers> | 2002-10-09 14:36:57 (UTC) |
---|---|---|
committer | eilers <eilers> | 2002-10-09 14:36:57 (UTC) |
commit | 273d5329e29c43b287876202de2f0c500a312b7b (patch) (side-by-side diff) | |
tree | 04dfc8d29dd57dd2bea76beb98f154825ba178b3 /development/pim/dbpaper/intro.tex | |
parent | f9f2d227b3cfbc2187b4f7f535fc59f9735798d0 (diff) | |
download | opie-273d5329e29c43b287876202de2f0c500a312b7b.zip opie-273d5329e29c43b287876202de2f0c500a312b7b.tar.gz opie-273d5329e29c43b287876202de2f0c500a312b7b.tar.bz2 |
Changes regarding the tips of Robert Wittams
Diffstat (limited to 'development/pim/dbpaper/intro.tex') (more/less context) (ignore whitespace changes)
-rw-r--r-- | development/pim/dbpaper/intro.tex | 63 |
1 files changed, 29 insertions, 34 deletions
diff --git a/development/pim/dbpaper/intro.tex b/development/pim/dbpaper/intro.tex index 0a26b90..c456333 100644 --- a/development/pim/dbpaper/intro.tex +++ b/development/pim/dbpaper/intro.tex @@ -1,112 +1,107 @@ \pagebreak \section{Introduction} \subsection{This document} Note: This paper is just a request for comment! Don't expect to find anything in the real implementation ! \\ This draft paper describes the database layout of the Opie PIM applications. Design goal is a fast and extendable layout on a sql database to support cross referencing. \subsection{Copyright} Copyright notice \copyright 2002, Maximilian Rei{\ss} \& Stefan Eilers \& Holger Freyther \pagebreak \section{Relations} \subsection{About Cross Referencing and Horizontal Data Storage} Before you read on, it may be helpful to get some information about the solution of ``horizontal'' data storage into the tables and cross referencing. -Some of the tables are just using 4 attributes: +Some of the tables are just using 5 attributes: \begin{enumerate} -\item UID: This countains an unique ID for the complete entry. -\item ID: This defines a number to seperate the rows of an entry. +\item UID: This countains an unique ID for the complete entry. An entry may consist of multiple +rows, seperated by ID. +\item ID: This defines a number to seperate the rows of an entry. UID + ID must be unique for every entry. \item Type: Describes the type of this entry. -\item Value: And the data which was described by ``Type'' is stored here. +\item Priority: For instance: Your default email-address will get the priority 1 and the other 2.. . 0 means ``not defined''. +\item Value: The data which was described by ``Type'' is stored here. \end{enumerate} -These kinds of tables are very flexible in what they may contain, due to the fact that the ``Type'' may be without any constraint. Therefore it is perfectly for storing personal information, which may change in the future, or should be increased. The other advantage is the fact that these tables are automatically convertable into XML: -The ``Type'' has just to be converted into an ``attribute'' in a XML-tag. Thats all, and that will work for all future Types ! - +These kinds of tables are very flexible in what they may contain, due to the fact that the ``Type'' may be without any constraint. Therefore it is perfectly for storing personal information, which may change in the future, or should be increased. +\\ Let's see how such an entry may look like for the table ``ADDRESSBOOK'': \begin{tabular}[ht]{|l|l|l|l|} \hline \underline{UID} & \underline{ID} & Type & Value\\ \hline 1231& 00& Title& Herr\\ \hline 1231& 01& FirstName& Stefan\\ \hline 1231& 02& LastName& Eilers\\ \hline \end{tabular} \\ \\ -We need some additional information about this entry, which is stored into the table ``PERSONAL\_DATA\_CONTACT'': +We need some additional information about this entry, which is stored into the table ``PERSONAL\_DATA'': \\ \\ -\begin{tabular}[ht]{|l|l|l|l|} +\begin{tabular}[ht]{|l|l|l|l|l|} \hline -\underline{UID} & \underline{ID} & Type & Value\\ +\underline{UID} & \underline{ID} & Type & Priority & Value\\ \hline - 2345& 00& Email& eilers@sra.uni-hannover.de, eilers.stefan@epost.de\\ + 2345& 00& Email& 1& eilers.stefan@epost.de\\ \hline - 2345& 01& DefaultEmail& eilers@sra.uni-hannover.de\\ + 2345& 01& Email& 2& eilers@sra.uni-hannover.de\\ \hline - 2345& 02& HomeWebPage& www.sra.uni-hannover.de/$\sim$eilers/\\ + 2345& 02& WebPage& 1& www.sra.uni-hannover.de/$\sim$eilers/\\ \hline \end{tabular} \\ \\ -The last question is: How to get these information together? This is the job of the cross-referencing-table\footnote{We expecting that the table ``PERSONAL\_DATA\_CONTACT'' was registered in the table ``TABLEID'' as table ``03''!}: +The last question is: How to get these information together? This is the job of the cross-referencing-table\footnote{We expecting that the table ``PERSONAL\_DATA'' was registered in the table ``TABLEID'' as table ``03''and ADDRESSBOOK with ``01''!}: \\ \\ \begin{tabular}[ht]{|l|l|l|l|l|l|} \hline -\underline{TID1} & \underline{UID1} & \underline{Type1} & \underline{TID2} & \underline{UID2} & \underline{Type2} \\ +\underline{TID1} & \underline{UID1} & \underline{ID1} & \underline{TID2} & \underline{UID2} & \underline{ID2} \\ \hline - 01& 1231& & 03& 2345&\\ + 01& 1231& (NULL) & 03& 2345& (NULL) \\ \hline \end{tabular} \\ \\ -Type was left empty, due to the fact that we wanted to link the complete entry and not some rows of the entry. +ID was left empty, due to the fact that we wanted to link the complete entry and not some rows of the entry. \\ In some cases, it may be useful to reference in a much more smaller granularity than complete entries. What should we do, if we want to store the children of a person ? -The easiest way is to store the children into the table ``PERSONAL\_DATA'':\footnote{We expecting that the table ``PERSONAL\_DATA'' was registered in the table ``TABLEID'' as table ``05''!}\\ +The easiest way is to store the children into the table ``PERSONAL\_DATA'':\footnote{We remember that the table ``PERSONAL\_DATA'' was registered in the table ``TABLEID'' as table ``03''!}, too.\\ \\ -\begin{tabular}[ht]{|l|l|l|l|} +\begin{tabular}[ht]{|l|l|l|l|l|} \hline -\underline{UID} & \underline{ID} & Type & Value\\ +\underline{UID} & \underline{ID} & Type & Priority & Value\\ \hline - 2344& 11& Children& Amaly, Karl, Clarissa\\ + 2345& 11& Child & 0 & Amaly \\ \hline -\end{tabular}\\ -\\ -and reference it again with the table ``ADDRESSBOOK'':\\ -\\ -\begin{tabular}[ht]{|l|l|l|l|l|l|} + 2345& 12& Child & 0 & Karl \\ \hline -\underline{TID1} & \underline{UID1} & \underline{Type1} & \underline{TID2} & \underline{UID2} & \underline{Type2} \\ + 2345& 13& Child & 0 & Clarissa\\ \hline - 01& 1231& & 05& 2344&\\ -\hline -\end{tabular} -\\ +\end{tabular}\\ \\ + But what happens if you want to store additional information about the children, as there mobile phone numbers, etc? In this case we need an entry in addressbook and a reference to this entry. Lets expect ``Amaly'' was stored in the table ``ADDRESSBOOK'' with UID 9213 and Karl with UID 7654. A cross-reference will look like this:\\ \\ \begin{tabular}[ht]{|l|l|l|l|l|l|} \hline -\underline{TID1} & \underline{UID1} & \underline{Type1} & \underline{TID2} & \underline{UID2} & \underline{Type2} \\ +\underline{TID1} & \underline{UID1} & \underline{ID1} & \underline{TID2} & \underline{UID2} & \underline{ID2} \\ \hline - 05& 2344& Children& 01& 9213& \\ + 03& 2345& 11& 01& 9213& (NULL) \\ \hline - 05& 2344& Children& 01& 7654& \\ + 03& 2345& 12& 01& 7654& (NULL) \\ \hline \end{tabular} \\ |