diff options
Diffstat (limited to 'graphics/pgf/base/doc/pgfmanual-en-library-er.tex')
-rw-r--r-- | graphics/pgf/base/doc/pgfmanual-en-library-er.tex | 155 |
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: |