ERIL
ERIL (Entity-Relationship and Inheritance Language) is a visual language for representing the data structure of a computer system. As its name suggests, ERIL is based on entity-relationship diagrams and class diagrams. ERIL combines the relational and object-oriented approaches to data modeling. Overview. ERIL can be seen as a set of guidelines aimed at improving the readability of structure diagrams. These guidelines were borrowed from DRAKON, a variant of flowcharts created within the Russian space program. ERIL itself was developed by Stepan Mitkin. The ERIL guidelines for drawing diagrams: Indexes. A class (table) in ERIL can have  several indexes. Each index in ERIL can include one or more fields, similar to indexes in relational databases. ERIL indexes are logical. They can optionally be implemented by real data structures. Links. Links between classes (tables) in ERIL are implemented by the so-called "link" fields. Link fields can be of different types according to the link type: Example: there is a one-to-many link between "Documents" and "Lines". One "Document" can have many "Lines". Then the "Document.Lines" field is a collection of references to the lines that belong to the document. "Line.Document" is a reference to  the document that contains the line. Link fields are also logical. They may or may not be implemented physically in the system. Usage. ERIL is supposed to model any kind of data regardless of the storage. The same ERIL diagram can represent data stored in a relational database, in a NoSQL database, XML file or in the memory. ERIL diagrams serve two purposes. The primary purpose is to explain the data structure of an existing or future system or component. The secondary purpose is to automatically generate source code from the model. Code that can be generated includes specialized collection  classes, hash and comparison functions, data retrieval and modification procedures, SQL data-definition code, etc. Code generated from ERIL diagrams can ensure referential and uniqueness data integrity. Serialization code of different kinds can also be automatically generated. In some ways ERIL can be compared to object-relational mapping frameworks.