I also have a SQL book and CJ Date relational theory. This is the best book you can read on relational concepts that are DBMS neutral. for example, Designing tables and recording SQL queries oriented to relational orientation rather than product-based.
However, I believe that the book is not very practical when it comes to maintaining production systems or in practical situations where circuit changes are less favorable. In addition, the behavior of production data and applications can also influence the transformation of normal table forms, for example. the table may have started fine with 3NF, but ends at 1NF for performance reasons. those. the fewer joins and lookup tables the better.
However, this is due to the limitation of the concept of database-based DBMS, therefore, recently, much attention has been paid to NoSQL databases / pair databases.
Returning to the topic of embedded SQL with parameterized SQL, do you compare the SQL written in the application-level source code and the SQL that are on database machines (e.g. PL / SQL in Oracle)?
In this case, for embedded SQL, I canโt give sufficient reasons to believe that the business logic should be at the application level, and not at the database level.
I am part of a team that supports a moderately large system, and there is a mixture of using PL / SQL with embedded SQL in this system, it becomes difficult if you say that a Java developer does not necessarily understand PL / SQL (in this case), whether performance optimization or support. Therefore, if you save all your business logic in one place (preferably the application level, you get here).
About locking the database, I believe that you do not need to worry too much about it. Usually, when a database product is purchased for use, you rarely change. Efforts, costs and risks are usually too great for such a consideration. If you do not shift the paradigm, i.e. From relational databases to a key / value database.
Hope this helps.