Litmus Production Record Database Core Principle Concepts
The core architecture behind Litmus Production Record Database data collection is the EAV (Entity-Attribute-Value) model for databases.
This does provide a very open schema, which allows the user to define precisely what data they want to record. Compared to classic relational databases, this prevents the need to predict or limit what data are collectable before creating tables with a column for each if these values.
Not needing to define a separate column per fact we want to record prevents to have to record "NULL" values for columns not used. Which also reduces the disc space used by the database.
Instead only non-empty values are stored in tables which are often described as "long and skinny". Where "long" refers to the number of rows and "skinny" to the few columns.
In and EAV model, each attribute-value pair can be considered a fact which describes an entity and a EAV table stores a single fact per row.
Below diagram shows at high level the EAV design philosophy.
![EAV Design EAV Design](https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/FteI5NiRmTuc2xX6kjsZo_untitled-diagramdrawio.png?format=webp)
For Litmus Production Record Database, an entity is typically the process event we are interested in, for example if it is a Downtime, a Traceability event, a Maintenance event or a tag.
The attribute is what we would like to record like the Start Time, a reason code, a temperature, tag value or a bar code.
As value is recorded the actual value received from a data source or result of a calculation to be recorded.
While Litmus Production Record Database makes use of the EAV model for its data recording, to have as little restrictions on what customers can record.
Other functions especially for solution maintenance and configuration make use of relational database design model too.
Making the solution a hybrid design.