The challenge was to develop an application to track market changes based on data from various exchanges and form customized investment portfolios.
Throughout the process of database structure development, we have taken into account various market entities such as Coins, Exchanges, Tokens, ICOs, Funds, Crypto Funds, etc. These entities may have child entities. To store all types of entities, we have implemented a universal table structure.
The key tables of this structure are object_type, object_relation and attribute.
The object_type table stores entity types, object_relation holds entity relationships (parent-child) which are bound by a specific attribute from the attributes table.
One of the tasks was to enable the CRUD (Create, Read, Update, Delete) operations on the attributes of each entity type. Key tables are object, attribute, and value.
The object table contains all the application entities. Attribute values are stored in the value table and sorted by type. It allows one to add attributes to any type.
There is an interface for obtaining data from external sources like coinmarketcap.com, and coinigy.com on the server side of the application. JSON files are responsible for each source description.