cosmetics
[erdiag.git] / README.md
... / ...
CommitLineData
1# erdiag: Entity-Relationship Diagrams Generator
2
3Inspired by [this repository](https://code.google.com/archive/p/merisier/).
4
5This parser reads ER diagrams definition files, and produces two types of diagrams + SQL code.
6[Graphviz](https://www.graphviz.org/) is used on server side to translate parsed graph descriptions into SVG objects.
7
8*Note:* at the moment only the conceptual graph is implemented, and no comments are allowed in textual descriptions.
9At least the former is planned, and also probably a way to indicate relative identifiers.
10
11-----
12
13An entity is defined as follow
14
15 [Entity]
16 #attr1 (*)
17 attr2 (*)
18
19with (\*) = optional SQL indications, and # denoting a (part of) a key.
20
21A relationship is defined in this way
22
23 {Relation}
24 Entity C1
25 Entity2 C2
26 --
27 attr1 (*)
28 attr2 (*)
29
30where attributes are optional, and C1 (resp. C2) = cardinality for entity 1 (resp. 2).
31Defining relationships with more than two attributes is easy: just add entities.
32Cardinality dictionary:
33 * \* = 0..n
34 * \+ = 1..n
35 * 1 = 1..1
36 * ? = 0..1
37
38To mark a weak entity, just surround its name by extra-brackets
39
40 [[WeakEntity]]
41
42In the same way, a weak relation can be written
43
44 {{WeakRelation}}
45
46The syntax for these two last is then the same as in the non-weak versions.
47
48To indicate an inheritance relation, proceed as follow
49
50 is_a
51 Animal Cat Fish
52 Planet Mars Venus
53
54Finally, blocks must be separated by new lines. For a usage example, see example.html (it should render as seen in example.svg)
55
56Note that the "drawMcd" method can take a second argument, which indicates the type of graph.
57 * "bubble" draws the standard graph, as seen [here](https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#/media/File:ER_Diagram_MMORPG.png) for example
58 * "compact" (default) use the same box for an entity and its attributes