I have noticed something that crops up a lot when doing group projects. Inevitably the group projects that you do in uni with it these days are basically all, lets make an app or lets make an app and a web interface or finally lets make a native app for each operating environment. Because phones are terrible computing devices you end up making a web server somewhere with a database driving the whole thing (wow cloud man). Because my degree has “Enterprise Information Systems” in the title I am the lucky one who designs these databases. Now I’m sure I can hear the moans already, “ohh he is lazy and can’t even perform the minimum required by his degree”. Slow down I have a reason why I don’t enjoy this task
Reason the Primus
With the complexity of your average social networking site and the advent of systems like node.js people just expect more out of your systems. So to deal with that there are many approaches the easiest one is to go to the person with the title of enterprise in its name and say “hey make us a database that is scalable, and detailed but also normalised but not so normalised that it slows down the system as a whole.” and then in my stupidity I as “so what is the system as a whole, and do you know what I should be aware of so I can leave thing efficient for you?” the reply is often drawn by a long silence followed by a short “No”. I can’t blame them but I can hardly forgive them either, I understand that we are both trying to build the system at the moment however I cant really make something perfect unless I know the environment I’m building for.I really don’t want to build a database three times but this may just end up being how it’s done.
Again with the rise of social networking at almost every group project someone will say “oh the users can generate this content.” That sounds great, it really does. It does not always work as well as one may think. Firstly one must make sure that the database is properly escaped. We have all seen the hilarious xkcd comic about little bobby drop tables and this harkens to the problem of SQL injection in general. So once we have fixed that (insert crying here) we then need some system of screening for malicious or just incorrect information. My current project for uni is only meant to be for professional use however you still don’t want people being able to attack the system from within if everything goes to hell.
My other issue with this is sometimes its just being lazy. A simple example of this is lets get users to enter in an address. What if they mistype or simply don’t know the postcode so they enter in 0000 just to stop the relentless march of questions. Then months later when someone genuinely needs that information to visit the person in the real life, they cant. The simple solution is to somehow link up your system with an official and verified database of addresses but this takes longer and for a uni project may have costs, something uni students really don’t want to deal with.
I can’t test how the system works under multiple user system load. I can pretend to and I intend to pretend to but at the end of the day I have no idea how it will work when a thousand different users suddenly want to create an account how the system will handle it. Part of me says don’t worry let the DBMS worry about that the other part of me thinks may god have mercy on the fool that tries to use this system.
Less writing about it more building it, and always remember the famous words. Relax you’re doing fine.