A computer-implemented method of assembling mechanical parts of a product, comprising: - building a non-hierarchical graph from at least one product stored in a database, the database storing an orientation associated with each part of the at least one product, the graph comprising nodes and edges between nodes, a node representing a part of the product to be assembled and an edge representing a relationship between a pair of parts represented by nodes, a server storing the non-hierarchical graph and the database; - providing a part of the product to be completed; - performing, upon user action by a designer using a client computer that is connected to the server, a selection on the provided part; - identifying in the graph a node representing the selected part and one or more nodes that have the closest relationships to the node representing the selected part, the relationship being a property shared by a pair of nodes; - retrieving from the database one or more new parts corresponding to the one or more identified nodes; - downloading, by the client computer, the retrieved one or more new parts; - displaying to the user the downloaded one or more new parts; wherein identifying the one or more nodes that have the closest relationships to the node representing the selected part comprises: - obtaining signatures of the nodes of the graph that are connected with an edge to the node representing the selected part; - identifying one or more most similar signatures with the signature of the node representing the selected part; - on the database, identifying the orientation associated with the part of the product to be completed and associating the identified orientations with each of the one or more nodes that have the closest relationships to the node representing the selected part; and - identifying, among the one or more similar signatures, at least one signature whose orientation matches with the orientation of the provided part of the product. - building a non-hierarchical graph from at least one product stored in a database, the database storing an orientation associated with each part of the at least one product, the graph comprising nodes and edges between nodes, a node representing a part of the product to be assembled and an edge representing a relationship between a pair of parts represented by nodes, a server storing the non-hierarchical graph and the database; - providing a part of the product to be completed; - performing, upon user action by a designer using a client computer that is connected to the server, a selection on the provided part; - identifying in the graph a node representing the selected part and one or more nodes that have the closest relationships to the node representing the selected part, the relationship being a property shared by a pair of nodes; - retrieving from the database one or more new parts corresponding to the one or more identified nodes; - downloading, by the client computer, the retrieved one or more new parts; - displaying to the user the downloaded one or more new parts; - obtaining signatures of the nodes of the graph that are connected with an edge to the node representing the selected part; - identifying one or more most similar signatures with the signature of the node representing the selected part; - on the database, identifying the orientation associated with the part of the product to be completed and associating the identified orientations with each of the one or more nodes that have the closest relationships to the node representing the selected part; and - identifying, among the one or more similar signatures, at least one signature whose orientation matches with the orientation of the provided part of the product.