OU blog

Personal Blogs

I Suppose a First is Out of the Question..?

Visible to anyone in the world
Edited by Mitchell Cooper, Tuesday, 7 Sept 2010, 18:11

So,

Results are in. Repeat. Results are in.

It's so good to get the results even when they're poor.

M362

I was actually expecting a little more for M362 I thought the exam went really well. Just goes to show you can never be certain. M362 was also the first course I'd actually read all the material so it's a bit worrying I couldn't even pull off a Grade 2. No matter, it shows I'm either not working hard enough or am quite quite stupid.

M362 result grade 3

M359

M359 what a disaster! Oh boy. I do consider my commercial SQL strong but obviously not strong enough. I thought the TMA's undid me on this one. I thought. I tackled the first couple of TMA's without spending any real time on the materials and got woeful marks. From this start it was really tough to get anything better than a Grade 3 so I was in a real low gear for the exam revision. Bombed the exam as well though. Double trouble. Ouch! So didn't even scrape the Grade 3. Very poor! Lesson learnt here though. Always put a huge amount of work into the first TMA, you can always ease off later if you're lucky enough to be thraping them!

M359 result grade 4

 

Booo!

I quite liked the idea, when this OU campaign began, of getting a first. Now though. I'll be happy with a pass. I may have lost a first but I have gained the utmost respect for anyone with a first. Those guys are giants and I salute them all.

In brighter news. Officially three years down. Three years to go.

Permalink Add your comment
Share post

Inflammable means Flammable?! What a DBMS.

Visible to anyone in the world
Edited by Mitchell Cooper, Tuesday, 7 Sept 2010, 18:12

So, I was getting down and dirty with some MS SQL today.

Loving it - standard. Aside from some basic string manipulation which I begrudgingly decided to leave out from the client code the procedure was quite straight-forward. Anyway, I wanted to determine the last character of a string and came across some odd LEN behaviour illustrated as follows:

Len of beard script

Returns:

Expected LEN

Right?

 

Wrong! You get:

SQL Results

So LEN ignores trailing spaces. I know it says as much, and very clearly, in the documentation but who would have expected that...?

Permalink Add your comment
Share post

I Me Minard

Visible to anyone in the world
Edited by Mitchell Cooper, Tuesday, 7 Sept 2010, 18:13

So my exams are over for the year and this is my first weekend of no OU work. Real nice. The exams went well – I hope – no real problems except I was horrified to see a question in the M359 (Relational Databases) exam regarding views and inserting records into views. Ooof! And I was dismayed that the invigilators spent all their time looking down with their heads buried in paper work. It took an absolute age to get their attention for extra paper and string. Not good...

Spirits remain high though so I thought I’d squirt out a positive note about the OU (having knocked out a couple of negatives ones). It goes way back to my first OU year and M150 (Computing and Information).

To illustrate the importance of symbolic representations and how complex data can be elegantly presented the course introduced a map created by Charles Joseph Minard. The map charts Napoleon’s less than successful 1812 wrangle with Russia. The map is notable because it shows a wealth of information including the army’s direction, location, density, size and the outside temperature during the retreat.

Minards map of Napoleon in Russia 1812

Any developer who has had to create a user interface for some prickly information will know what a battle it is to simplify complex data input or to display complex business information. Especially if you’re unlucky in MI building a report with time on the Y axis, cholesterol level on the X axis, grouped by animal type and hair colour for the first pancake day of each decade etc... Every time I encounter a tricky bit of UI design I always think of this map and its ambition. Simply, whatever design I end up with I always know that Minard would have done it with less controls, less labels and exposed more information.

So thanks to the OU for showing us this map.

 

Permalink Add your comment
Share post

Snot and Bother for M359

Visible to anyone in the world
Edited by Mitchell Cooper, Tuesday, 7 Sept 2010, 18:14

So, I'm busy revising for my M359 (Relational Database) exam. Due to take place in the morning and I've come across some material in Block 4 which illustrates an issue I have with some aspects of the course material, that is, the choice of real world examples

In the OU material good coding best practice and coding concepts seem to appear as disparate ideas, whereas, in a commercial setting it's much more likely that a competent developer will command both in equal measure.

Often, in the course material, I have read about a system or IT approach whilst being told to ignore the usage because it would not occur like this in a real setting. The scenario can then change and rather than the example evolving naturally, like a real business/system, it can't, because we're stuck with a limited abstraction, so instead we are told to simply reverse out some of the functionality and see what happens when we take a different approach. It's an economical way to create a fresh point but I think there are more natural progressions of systems in real business. As an IT professional when the course is concerned with concepts I'm familiar with I don't find it hard to extract the point being made whilst ignoring the implementation but I fear for my skills in enforcing a distinction on those areas of material which I find less comfortable.

The example I came across today is regarding check constraints (They ensure only data of a certain type in admitted into a database either based on other records in the database or the values of the data being inserted). Here is the example given in Block 4 of M359:

a check constraint

I cannot think of a worse example of using a check constraint. This is business logic which should be miles away from the database. Not only is this logic in the database layer it is also coupled with the table definition. Double trouble!

If we want to change the minimum age of a customer we now have to drop this constraint and re-build it but first we've got to find the logic in the first place. A check constraint: the last place I'd look. This is doubly bad because if we attempt to add a twelve year old customer to the system we would expect a nice message to the user along the lines: “Customer too young. You know the rules!”. Instead the database code throws a horrible database exception. We now must either return the exception's message to the user, which would be mind boggling to the average user, or display a generic message along on the lines "The database has sustained a lethal internal injury, sorry you are finished here." So now we have a bewildered user who keeps getting a scary error message every time they add this user.

It is not until we get to Block 5 that we encounter:

...

Constraints are a design choice

...

So the amount of logic we have in our database is a design choice but what are the repercussions of, for example, enforcing a minimum customer age as a check constraint? I personally think this is a bad design choice so the approach needed justifying - all the way to the front end. If there is a code sample you wouldn’t expect to find it in a production environment it should be introduced to the student surrounded with barb wire and dunked in dung.

 

Permalink Add your comment
Share post

M329 TMA1 DB Question GRrrr

Visible to anyone in the world
Edited by Mitchell Cooper, Tuesday, 7 Sept 2010, 18:14

So, this question bugged the hell out of me:

M359 TMA1 2009

So, let's assume we all know that a tuple is a row and we also know this grid represents a table, and its data in a database. What isn't meaningful about the third row?... I stared and stared. Think think think (pooh). I couldn't see anything wrong with it. After a few minutes I decided I couldn't spend any longer on it. One mark and all that.

And then it dawned on me. The question's all about the order records are stored in a database. Of course! clustered index aside, record order is never known in a relational database. Sure, every time we run SELECT TOP 5 * FROM myTable - without an ORDER BY clause - we can guess the records returned but we should in no way expect it.

The answer then is something like: The order of records in a table can not be guaranteed. Each record is identified by its key, not its order...

So why didn't I like the question? Here it is: The question asks "...about the third tuple..." which surely means we're talking about a problem with the row above. To me this would be clearer if it had been "...about a tuple..." because we're not interested about this particular instance of a tuple. Or maybe even "...about the ninth tuple..." would have been better because at least this way we would have known it's nothing to do with the values above it. Grrrrr over and out.

Permalink 1 comment (latest comment by Perry Mc Daid, Thursday, 17 Sept 2009, 17:46)
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 79507