Monday 10 November 2014

New beginning

So I know I have been rather quiet for a while, but I have began working on a new project recently and thought it might be worth sharing this to a wider audience.

The project will be a tournament database for the organised FIFA football games that my friends and I play every few months. This will be a bit more of an involved solution to the current spreadsheets that we are currently using to record the glorious victories and crushing defeats that occur, as well as who reigns as 'the champ' until the next tournament.

This project will be in Java, and I have decided to familiarise myself with IntelliJ for this project before. Until this point I have almost exclusively used Eclipse as my IDE of choice, but a new IDE for a new project right?

Step 1 - The scribble bit

So the first bit of design work I did was scratched out on the back couple of pages of a notebook one lunchtime at work. I spent the most time creating a schema, and there was a lot of back and forth in my head about what I should and should not include. The current schema looks a bit like this...
 Seeing as this is my first attempt at a more complex personal project, I opted to keep the schema simple.
The player table keeps the names of the players (simple naming scheme ftw).
The tournament table holds some basic information about the tournament, including the all important winner, the golden boot (most goals scored over the tournament), and the dubious honour of the wooden spoon holder (last place in the tournament).
The game table represents the information for a single game. Note a game has two players, and a game has to belong to a tournament. I decided to differentiate between goals scored and normal and extra time, to goals scored during any penalty shoot-outs. Whether this comes back to bite me remains to be seen.

Step 2 - The techy bit..

So for this I decided to use Java DB as my database. I chose it as it is easily embedded into an application, and is the Oracle supported tech. I wanted the database to be embedded within my application as it makes it easier to deploy and set up on another machine that is not set up for or maintained by a developer. Having an embedded database means that once it is set up, the user is good to go...hopefully.

When I have done some more tidying up, I will move the repo over github and share it on there. I'm currently wrestling with connection pooling choices, and build/dependency management.

To be continued...