There is no real logical advantage to this two-table design, since the ratio is 1-1, you can have all the information related to the FileInfo table. However, there are serious operational and operational advantages, in particular if your binary data averages several hundred bytes.
EDIT . As Remus Rusanu noted, in some DBMS implementations, such as SQL2005, large types of objects are transparently stored in a separate table, effectively eliminating the practical drawback of having large records. The implementation of this function implicitly confirms the weakness of the [true] approach for a single table.
I just looked at the SO posting pointed out in this question. I usually argue that while another publication makes several valid points, such as the integrity of the embedded data (since all CRUD actions on this element are atomic), but in general and if only relatively atypical use cases (for example, using the table element as repository, which is mainly requested for individual elements at the same time), the performance advantage is associated with the use of two tables (in this case, indexes in the header table will be more efficient, queries that Some do not require binary data, they will return much faster, etc. etc.)
And the approach to the two tables has additional advantages if the design is developed to provide various types of binary objects in a different context. For example, let's say that these elements are images (GIF, JPG, etc.). At a later stage, you will also want to provide a small preliminary version of these images (and / or the high-resolution version), the choice of which depends on the context (user preferences, clients with low bandwidth, subscriber and visitor, etc.). In this case, not only the operational problems associated with the approach to a single table become more acute, the model becomes more universal.
source share