In this particular case, TSQLite3DataSet is not useful, because it treats memo/blob field as text field with length of 255. But this is a kind of bug of TSQLite3DataSet, I think.
The usage of SQL statements instead of direct operations on each table is right direction. We cannot use Dbf files or Paradox files any more.
But this does not mean that we have to use SQL Queries in our applications.
If possible, I would prefer defining views within database, and accessing it with something like TSQLite3DataSet. The views must be defined using SQL statements, using relations among tables. And any modifications on the views must be handled with triggers. The final application developer don't have to know the internal relationship within database itself.
I do not have any similar component like TSQLite3DataSet as I use Firebird. I used to open tables directly using "select * from table where .... ", but now I have defined stored procedures and my Lazarus applications call the procedures even for simple selections like "select * from table1 where pid='100001'". This is because even though I modify the internal structure of database (e.g. splitting the table into two or more tables), I do not have to change any code of Lazarus application.
So some of the rationales are misled, I think. Using relational database has large merits instead of using individual tables or for example CSV sheets (as mentioned somewhere else). But this does not mean that the relations are defined within our applications. It had better be avoided, if possible.