The MariaDB database that underlies lucentLIMS.
- A Linux system (other systems like macOS and Windows probably also work, but aren't tested)
- MariaDB 10.11 or higher (older versions might still work, but aren't tested)
-
Clone this project, e.g. by
git clone https://github.com/BooneyNoobington/lucentBase.git
-
Execute this command as root user inside the project directory. In the example, sudo is used to achieve that.
sed "s/{linux_user}/$USER/g" DATABASE_GENERATION.SQL | sudo mysql
lucentBase aims to strictly adhere to the first three normal forms in order to maximaze maintainability and enable frontend building with many different frameworks.
It is also process oriented. In a lab workflow, any object of observation - mostly samples - go through a number of steps during their lifetime. Such as sampling, registration in the lab, preprocessing, various measurements as well as disposal. These steps are called actions. Each action can have effects (instances of predefined parameters), such as the recording of the time of sampling and the arrival time in the lab, confirmation that preprocessing is completed, measurement results or even their total costs.
Collections make up the second center of lucentBASE. Besides samples, a collection can be a singular measurement or a time series with the unifying quality of holding an assortment of values - which are effects that are assigned to a specific collection.
A value consists of one or more raw values (connected to a value with its primary key id_value).
Unlike many other LIMSs, lucentBASE has no table for end results. Instead of such, effects know functions to calculate and end result by their values and raw values. Also they are self joined by coefficents to get raw values of a differenct value.
By default, every change on a table is logged in its corresponding logging table. Without user changes, logging table names are the table name prefixed by "l_". They are automatically generated when setting up the database via the procedure create_all_log_tables()
.
Not autogenerated are "comment tables". Those are table that hold textual comments for a specific record and are prefixed by "c_".
Junction tables have meaningful names whereever possible. If they don't carry an intuitive information, they are prefixed by "j_".