A computer-implemented method for storing data, the method comprising: receiving a computer file; identifying a type of the received computer file; separating (140, 430) the received computer file into a plurality of data objects (120, 130), wherein separating (140, 430) the received computer file into the plurality of data objects (120, 130) is based upon the type of the computer file; analyzing a database (160, 170) and each of the plurality of data objects (120, 130) of the computer file to determine both: which data objects (120, 130) of the computer file were not previously stored in the database (160, 170), and which data objects (120, 130) of the computer file are already stored in the database (160, 170); generating for the computer file relational links that include a reference to the data objects (120, 130) that are already stored in the database (160, 170) instead of storing the data objects that are already stored in the database (160, 170); and storing in the database both: the data objects (120, 130) that were not previously stored in the database (160, 170), and the generated relational links, wherein if data objects (120, 130) are already stored in the database (160, 170), such data objects are not stored for a second time; wherein the data objects (120, 130) comprise one or more of the following: a text, an image, a video, an audio, a multimedia object, a program code, a numerical value, and a data structure. receiving a computer file; identifying a type of the received computer file; separating (140, 430) the received computer file into a plurality of data objects (120, 130), wherein separating (140, 430) the received computer file into the plurality of data objects (120, 130) is based upon the type of the computer file; analyzing a database (160, 170) and each of the plurality of data objects (120, 130) of the computer file to determine both: which data objects (120, 130) of the computer file were not previously stored in the database (160, 170), and which data objects (120, 130) of the computer file are already stored in the database (160, 170); which data objects (120, 130) of the computer file were not previously stored in the database (160, 170), and which data objects (120, 130) of the computer file are already stored in the database (160, 170); generating for the computer file relational links that include a reference to the data objects (120, 130) that are already stored in the database (160, 170) instead of storing the data objects that are already stored in the database (160, 170); and storing in the database both: the data objects (120, 130) that were not previously stored in the database (160, 170), and the generated relational links, wherein if data objects (120, 130) are already stored in the database (160, 170), such data objects are not stored for a second time; the data objects (120, 130) that were not previously stored in the database (160, 170), and the generated relational links, wherein if data objects (120, 130) are already stored in the database (160, 170), such data objects are not stored for a second time; wherein the data objects (120, 130) comprise one or more of the following: a text, an image, a video, an audio, a multimedia object, a program code, a numerical value, and a data structure.