summaryrefslogtreecommitdiff
path: root/graphics/pgf/base/doc/pgfmanual-en-library-er.tex
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/base/doc/pgfmanual-en-library-er.tex')
-rw-r--r--graphics/pgf/base/doc/pgfmanual-en-library-er.tex155
1 files changed, 155 insertions, 0 deletions
diff --git a/graphics/pgf/base/doc/pgfmanual-en-library-er.tex b/graphics/pgf/base/doc/pgfmanual-en-library-er.tex
new file mode 100644
index 0000000000..27470015fd
--- /dev/null
+++ b/graphics/pgf/base/doc/pgfmanual-en-library-er.tex
@@ -0,0 +1,155 @@
+% Copyright 2019 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+\section{Entity-Relationship Diagram Drawing Library}
+
+\begin{tikzlibrary}{er}
+ This packages provides styles for drawing entity-relationship diagrams.
+\end{tikzlibrary}
+
+This library is intended to help you in creating E/R-diagrams. It defines only
+few new styles, but using the style |entity| instead of saying |rectangle,draw|
+makes the code more expressive.
+
+
+\subsection{Entities}
+
+The package defines a simple style for drawing entities:
+
+\begin{stylekey}{/tikz/entity}
+ This style is to be used with nodes that represent entity types. It causes
+ the node's shape to be set to a rectangle that is drawn and whose minimum
+ size and width are set to sensible values.
+
+ Note that this style is called |entity| despite the fact that it is to be
+ used for nodes representing entity \emph{types} (the difference between an
+ entity and an entity type is the same as the difference between an object
+ and a class in object-oriented programming). If this bothers you, feel free
+ to define a style |entity type| instead.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er,positioning}}]
+\begin{tikzpicture}
+ \node[entity] (sheep) {Sheep};
+ \node[entity] (genome) [right=of sheep] {Genome};
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+\begin{stylekey}{/tikz/every entity}
+ This style is evoked by the style |entity|. To change the appearance of
+ entities, you can change this style.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er,positioning}}]
+\begin{tikzpicture}
+ [every entity/.style={draw=blue!50,fill=blue!20,thick}]
+ \node[entity] (sheep) {Sheep};
+ \node[entity] (genome) [right=of sheep] {Genome};
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+
+\subsection{Relationships}
+
+Relationships are drawn using styles that are very similar to the styles for
+entities.
+
+\begin{stylekey}{/tikz/relationship}
+ This style works like |entity|, only it is to be used for relationships.
+ Again, |relationship|s are actually relationship types.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er}}]
+\begin{tikzpicture}
+ \node[entity] (sheep) at (0,0) {Sheep};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+\begin{stylekey}{/tikz/every relationship}
+ Works like |every entity|.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er}}]
+\begin{tikzpicture}
+ [every entity/.style={fill=blue!20,draw=blue,thick},
+ every relationship/.style={fill=orange!20,draw=orange,thick,aspect=1.5}]
+ \node[entity] (sheep) at (0,0) {Sheep};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+
+\subsection{Attributes}
+
+\begin{stylekey}{/tikz/attribute}
+ This style is used to indicate that a node is an attribute. To connect an
+ attribute to its entity, you can use, for example, the |child| command or
+ the |pin| option.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er}}]
+\begin{tikzpicture}
+ \node[entity] (sheep) {Sheep}
+ child {node[attribute] {name}}
+ child {node[attribute] {color}};
+\end{tikzpicture}
+\end{codeexample}
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er}}]
+\begin{tikzpicture}[every pin edge/.style=draw]
+ \node[entity,pin={[attribute]60:name},pin={[attribute]120:color}] {Sheep};
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+\begin{stylekey}{/tikz/key attribute}
+ This style is intended for key attributes. By default, the will cause the
+ attribute to be typeset in italics. Typically, underlining is used instead,
+ but that looks ugly and it is difficult to implement in \TeX.
+\end{stylekey}
+
+\begin{stylekey}{/tikz/every attribute}
+ This style is used with every attribute, and therefore also for every key
+ attribute.
+ %
+\begin{codeexample}[preamble={\usetikzlibrary{er}}]
+\begin{tikzpicture}
+ [text depth=1pt,
+ every attribute/.style={fill=black!20,draw=black},
+ every entity/.style={fill=blue!20,draw=blue,thick},
+ every relationship/.style={fill=orange!20,draw=orange,thick,aspect=1.5}]
+
+ \node[entity] (sheep) at (0,0) {Sheep}
+ child {node [key attribute] {name}};
+ \node[entity] (genome) at (2,0) {Genome};
+ \node[relationship] at (1,1.5) {has}
+ edge (sheep)
+ edge (genome);
+\end{tikzpicture}
+\end{codeexample}
+ %
+\end{stylekey}
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual-pdftex-version"
+%%% End: