It started out with some test of sql queries and practising Mysql Workbench to learn it and want to try on some basic relational algebra operators. I have created a database to store customer and order information of an imaginary company. At the tables I have tried to perform some atomicity/singularity processes, I tried to make sure that every single column in a table is single, then at second and third normal form. I can say that it started out with my sql learning event. I have faced some problems like “partial dependencies”, which means when the thing we’re talking about changes the data describing it will also change and if I have a “partial dependency” the data only describes part of the key. And that’s not allowed! In a nutshell I started to ask myself “does this belong here, does it describe all of the columns inside of the primary key?”. If it does it’s appropriate, if it doesn’t it’s not appropriate and I need to put it somewhere else. Also whenever have a transitive dependency all have to do is grab what the closest to the primary key and put it on its own table.
Then, I googled the ACID properties (also found that MySQL is not ACID compliant because it doesn’t support consistency, isolation, or durability.) and test some relationships such as one-to-one, one-to-many, many-to-many. And Entity, referential and domain integrity and some sql joins. Also I wrote some procedures and views to storing and showing data. I upload all of these queries to my github repository.
After all of these I thought that Why am I not able to build an app from scratch? I can start with store customer personal info cards as a beginning. I can use Java 8 and I’am familiar with sql so why not. I start to review some java ORM documentation, I felt obligated to shift sql to object oriented domain so I picked to use Hibernate 5 for persistence provider, Mysql 8 for database server, C3P0 for managing database connection pooling, Hibernate Search for Full-text search for entities, Apache Log4j2 for trace level logging, Tomcat 9 for Java Web server, Servlet 4 web containers as Controller and JSP (with Bootstrap 4.5) as View.
![](https://blog.gunlerveisler.gen.tr/wp-content/uploads/2020/07/two-and-three-tier-architecture-1024x565.png)
Also I will use three-tier architecture I’am not sure these combination is suitable for this kind of job but I will see. When I finish it I will deploy the application to my vps and share the link.