We will keep the model very simple in order to avoid going overboard with the implementation.
A language code shall be defined by the ISO 639-1.
A translation shall contain a language code and a product name (non-empty string).
A product shall contain a unique id (UUID version 4) and a list of translations.
Our data model: a product and its list of name translations
Our data model: a product and its list of name translations
Database
The data will be stored in a relational database (RDBMS). Therefore, we need to define the tables and relations within the database.
The products table
The table “products” must only contain the unique id, which is also the primary key.
The "products" table
The "products" table
The names table
The table “names” must contain a column for the product id, one for the language code, and one for the name. Its primary key is the combination of the product id and the language code. All columns must not be null.
The "names" table
The "names" table
The relation to the products is realized by a foreign key constraint to the products table via the product id.
HTTP API
The HTTP API shall provide the following endpoints on the given paths:
Path HTTP Method Function
/products POST Create a product
/products GET Get all products and translations
/product/{UUID} PUT Update product
/product/{UUID} GET Get the specific product
There are three main types of data in the stock exchange. Let’s explore them one by one.
Product, order, and execution
Order book
Candlestick chart