• Mark (unregistered) in reply to Herby
    Herby:
    Having "2" for the 21st century may be a holdover to when the university was founded. They might have used "0" for the century the university was founded (in the 1800's), and "1" for last century (1900's).

    I guess I can't be sure, but I'm going to go out on a limb and suggest that the semester numbering scheme probably doesn't predate their use of computers to keep these records.

    In fact, I bet someone came up with it in the 1990's and patted themselves on the back for finding a way to avoid Y2K problems without adding both leading digits back in. (Of course, they've invented a weird Y2K9C bug in the process, but that won't be an issue for a while...

  • Tanuki (unregistered) in reply to Phyzz

    Is it a some kind of an universal rule that courses enrollment managers must must suck?

  • (cs) in reply to Tanuki
    Tanuki:
    Is it a some kind of an universal rule that courses enrollment managers must must suck?
    Yes. They are all apparently written by students as class projects, or by teachers trying to learn the subject material.
  • Solitario (unregistered)

    The joy of going to a small university. I just had to tell my professor which classes I intended to attend, and they all had a description. Only when I passed the exam I would see the code of the course on my credits report (with the same nice description). As far as I can remember the codes were just 6 digit sequential codes.

    PS. TRWTF is that we lost for the third time in the World Championship finals.

  • rysto32 (unregistered) in reply to Markp
    Markp:
    I thought this explained Quest fairly well until I saw the term format was just slightly different.
    I never worked on Quest, but I did work for CSCF for a term and I actually can explain how they number the terms. The first three digits are:

    current_year - 1900

    The last digit is the month in which the term starts. This scheme may not make much sense until you realize that the 1997 Winter term was numbered 971.

  • silent d (unregistered)

    I don't see a problem with having the students look up a course number, but how about letting them choose from a list of human readable semesters, e.g. "Fall 2009", "Spring 2010", rather than forcing them to deal with whatever cryptic numbering scheme is used by the database back-end?

  • (cs) in reply to FuBar
    FuBar:
    da Doctah:
    It's not as WTF as those deranged systems where the day comes before the month.
    Deranged?? Excuse me, but what makes sense is either least-significant to most-significant or vice versa, i.e. 05-JUN-2010 or 2010-JUN-05. What's deranged is 6/5/10, which messes up the order of significance. Who thought that one up??

    day-month-year only makes sense if you also reverse the order of the digits in each section. And alphanumeric months only makes sense if your calendar runs April, August, December, February, January, July, June, March, May, November, October, September.

  • Dan (unregistered) in reply to DaveyDaveDave

    How many centuries back do their records go? Likewise, how far ahead can you look. Put me down for summer courses in the 31'st and a half century.

  • Dave (unregistered) in reply to Markp
    Markp:
    I thought this explained Quest fairly well until I saw the term format was just slightly different.
    Thanks for the link; being curious, I tried it, and got this:
    Here is the response to your query:Your selection was:

    Level: Undergraduate , Term: 1109 , Subject: ADMGT , Course Number:

    Sorry, but your query had no matches.

    Does that mean I can't go to University? Damn those funding cut-backs.

  • Time Warp (unregistered) in reply to da Doctah

    I think it's at this point when I hope others can see that, just sometimes, because a computer makes something the easiest way to do something, doesn't make it the right way for actual people at all.

  • Mike (unregistered)

    [QUOTE]The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on)[QUOTE]

    TRWTF. This is the kind of crap we did before we had computers. What's wrong with "2009" being represented as "2009"?

  • FuBar (unregistered) in reply to da Doctah
    da Doctah:
    FuBar:
    da Doctah:
    It's not as WTF as those deranged systems where the day comes before the month.
    Deranged?? Excuse me, but what makes sense is either least-significant to most-significant or vice versa, i.e. 05-JUN-2010 or 2010-JUN-05. What's deranged is 6/5/10, which messes up the order of significance. Who thought that one up??
    day-month-year only makes sense if you also reverse the order of the digits in each section. And alphanumeric months only makes sense if your calendar runs April, August, December, February, January, July, June, March, May, November, October, September.
    You are aware, aren't you, that how the computer stores the date is what affects collation order. How it's displayed to meat does not affect the collation order. I'm beginning to suspect you're not really a doctor. Or at least not a PhD in computer science.

    BTW, using month/day/year is something pretty much restricted to the U.S. The rest of the world (at least those who use this calendar) prefers the more logical approach to displaying dates.

  • Bobby S (unregistered) in reply to Nome de Plume
    Nome de Plume:
    DaveyDaveDave:
    Barrett Jacobsen:
    What application is that in the screenshot?

    SQL Developer

    The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on) and the last digit denotes the month the term begins

    Surely this has to TRWTF? Also, do you mean the first digit denotes the century, or the millennium, neither really makes any sense, of course, but just out of curiosity...

    It's only a WTF to tell students that the 4-digit code means those things. As long as they enter a number and get a course name confirmation, it works fine.

    Back in 1994, my university created a touch-tone phone automated course sign-up. Students used a four or five digit course number to enroll via the phone's numeric keypad. The system responded with a voice recording. That was way better than waiting in lines!

    My Uni did the same. While it was good on some counts to have a touch-tone entry system, it was pretty lame on others. It was a pretty primitive system (by todays standards) and the course numbers were long (being a real university with 1000's of courses). To get it correct was tricky, and to get it wrong fairly easy ... and then correcting mistakes was a real hassle. Combined with knowledge that that some courses are very popular, so there was a real benefit to being fast at getting classes assigned.

    I remember programming my USR modem with AT codes to enter in the tones for me. That way I could listen in and program the system using the keyboard and not have to try to read the course numbers, hold the phone, listen to prompts and key in stupid sequences by hand. Hey this was also before speaker-phones.

    A fun hack that let me go to the campus pub early.

  • Bobby S (unregistered) in reply to silent d
    silent d:
    I don't see a problem with having the students look up a course number, but how about letting them choose from a list of human readable semesters, e.g. "Fall 2009", "Spring 2010", rather than forcing them to deal with whatever cryptic numbering scheme is used by the database back-end?

    Regardless, many of those codes are also used by the 'meat' as someone else so affectionately put it. The 'meat' uses them allow their own wet-ware to decode the information without requiring a computer to be present. Scary but true.

  • Luke (unregistered)

    Current legacy system that had the same bloody stupid idea (creating new set of 60 tables per client): 7900 tables and counting.

    The MySQL command line client tries to index all columns etc. for autocompletion (unless you use the right startup option), which sends the server into a few minutes of 100% CPU usage.

    Of course, changing the database structure is a right PITA.

    Luckily we've just completed the replacement in sane way, and in a few weeks I might get to have a ceremonial burning of code -- possibly after submitting to the Daily WTF.

  • (cs)

    I think the fact that the number of tables was growing on its own should have been a major hint to this horrible design. No real surprises...

  • (cs) in reply to FuBar
    FuBar:
    You are aware, aren't you, that how the computer stores the date is what affects collation order. How it's displayed to meat does not affect the collation order. I'm beginning to suspect you're not really a doctor. Or at least not a PhD in computer science.

    Never said I was. But I was my department's head Y2K amelioration expert, and if your [issuer redacted] credit card hasn't been improperly rejected any time in the past ten years, it's because I knew what I was doing.

    If the date's stored internally as a binary integer representing days or seconds past some standard epoch, displaying it with the month first is no more WTF than displaying it with the handle facing outward.

    BTW, using month/day/year is something pretty much restricted to the U.S. The rest of the world (at least those who use this calendar) prefers the more logical approach to displaying dates.

    By "more logical", I assume you mean ISO-8601. The all-numeric ISO-8601.

  • (cs) in reply to FuBar
    FuBar:
    BTW, using month/day/year is something pretty much restricted to the U.S. The rest of the world (at least those who use this calendar) prefers the more logical approach to displaying dates.

    "This is America. Learn the rules."

  • (cs)

    TRWTF is Mark Bowytz being unable to properly HTMLEncode the <week> tags in the article.

  • Niall L (unregistered)

    So the semester id represents the start date of a course instance? Theres a little nagging feeling that I have that suggests that there's a better data type for dates than number. Still all beauracracies like numerical that mean something so that's probably a best practice.

  • Jimmy Jones (unregistered) in reply to DaveyDaveDave
    DaveyDaveDave:
    The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on) and the last digit denotes the month the term begins

    Surely this has to TRWTF? Also, do you mean the first digit denotes the century, or the millennium, neither really makes any sense, of course, but just out of curiosity...

    This. Is disk space really so limited that they have to 'make things tricky for new students' by obfuscating the year? Why not just type 2010xx where xx is the semester.

  • Jimmy Jones (unregistered) in reply to ThomasP
    ThomasP:
    It's not the worst numbering scheme I've ever seen... how would you have done it?

    How about just using the four digit year...?

  • Bosshog (unregistered) in reply to ThomasP
    It's not the worst numbering scheme I've ever seen... how would you have done it?
    I would use something totally madcap like "200809" for Fall 2008.

    Crazy I know, but then we'd be Year 3000 compliant, and could schedule those Christmas Cake baking courses we always wanted.

    But no, you saved 2 bytes and the children have to make do with sponge.

  • Bosshog (unregistered) in reply to Bobby S
    Back in 1994, my university created a touch-tone phone automated course sign-up. Students used a four or five digit course number to enroll via the phone's numeric keypad. The system responded with a voice recording. That was way better than waiting in lines!
    I remember programming my USR modem with AT codes to enter in the tones for me. A fun hack that let me go to the campus pub early.

    This is an awesome hack - good work sir!

    Though I have to say that the concept of "enrolling on courses" at University is not one with which I am familiar. Maybe it's a UK / US thing, or maybe my university is a bit 'different'.

    At my Uni, once you signed up to the compsci degree, you were presented with a smorgasbord of lecture courses, which you could either go to or skip as you saw fit.

    The only limit to the number of people at the lecture was the size of the hall (and they were never full). In fact, you could go to lectures that were not on your course (maths was handy).. it wasn't discouraged.

    Needless to say, I just spent most of my time in the pub, and got a Desmond -- which shows the system works! ;)

  • (cs) in reply to Bosshog
    Bosshog:
    Though I have to say that the concept of "enrolling on courses" at University is not one with which I am familiar. Maybe it's a UK / US thing, or maybe my university is a bit 'different'.

    At my Uni, once you signed up to the compsci degree, you were presented with a smorgasbord of lecture courses, which you could either go to or skip as you saw fit.

    That's pretty much how my University did things too. And that was Cambridge, so I don't think it's a UK thing either.

    (But skipping too many lectures in Engineering would lead to a Richard or worse.)

    The whole major/minor thing is one of the major differences between the US and the UK regarding courses. UK Universities don't do it. (Not any I've heard of, anyway.)

  • EngleBart (unregistered) in reply to JamesQMurphy

    My question is, how did they code the year 2000 which was the last year of the 20th century?

    100? or 200?

    It might explain why I had to repeat a whole year of classes.

    "We have no record of you attending any classes in 2000. The credits you received in 1900 have expired and can not be applied to your degree!"

    P.S. Thank you for the copies of the cancelled checks and report cards, but we can not accept pictures of documents on wooden tables at this time.

  • Patrick (unregistered) in reply to Markp
    Markp:
    Callin:
    DaveyDaveDave:
    The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on) and the last digit denotes the month the term begins

    Surely this has to TRWTF? Also, do you mean the first digit denotes the century, or the millennium, neither really makes any sense, of course, but just out of curiosity...

    2 = 21st century 3 = 22nd century

    I suppose it works. But TRWTF is making it confusing just to cut one digit from the storage when this same database is piling on tables.

    As has been said, it's not for storage but because it's also user-facing (at the very least, to admins, but sadly, usually to students as well). It's really not that difficult if you also remember that the 1/6/9 is probably because their terms start in January/June/September.

    It's really quite simple to translate, say, September 2029 into 2299. The century may be confusing but how often do you expect students to have to remember, oh wait...is it next century or this century? Just remember that all terms start with 2 and ignore the digit.

    I'm thinking it was written by students, but the admins had no backup plans in case they failed. Miserably.

  • EngleBart (unregistered) in reply to Bobby S

    Touch Tone Phone Registration Pranks

    They implemented a similar system to replace the "wait in line for hours" system on my campus in 1986.

    The first phone number shared the same prefix as the dorm rooms. One of my buddies had a phone number that was only a single digit off. The first semester, they did not have enough phone lines allocated and you would get a busy signal for 30-40 attempts.

    Needless to say, my buddy's phone would get about 5-10 registration calls per day. He was getting so sick of it that he implemented his own "Voice Recognition Registration System". He would walk them through the whole process by making them repeat themselves over and over. Before hanging up, he would usually tell them "I am sorry, there has been a problem saving your registration, please hang up and try again in 30 minutes."

    He would make them rap sing the course numbers and "after each entry say "p-p-p-pound key." Of course this was all recorded for posterity. If he is reading this (he was a CompSci major), he needs to post them out on the internet somewhere.

  • EngleBart (unregistered)

    This also reminds me of a sports league registration system where the IT consultant must have had a huge hand in league rules.

    It breaks down the divisions by year of birth. No crazy September 1st cut off (or some other day) calculations.

    All children born in a certain year play in the same division.

    It must have greatly simplified the software used to run the league. I consider it to be beautiful! sniff

  • Marc (unregistered) in reply to DaveyDaveDave
    DaveyDaveDave:
    Barrett Jacobsen:
    What application is that in the screenshot?

    SQL Developer

    The first digit denotes the century (2 for the 21st century), the second and third digits are the specific year (08 for 2008, 09 for 2009, and so on) and the last digit denotes the month the term begins

    Surely this has to TRWTF?

    Agreed. Storing several bits of information in a single field is always a no-no. The convoluted syntax makes the data less human-readable, for starters; but also, if a user wants to filter by year or by month, this will require string-processing, either done by the query or the application that uses the results. There are two problems with query-time string processing. First of all, the processing itself will reduce performance. But more importantly, it prevents indexing of the table.

    As a result, having several bits of information in a single field increases complexity, increases maintenance costs, and will result in piss-poor performance.

    See also "Growing Better Software" page 59, paragraph 2.

  • Detritus (unregistered) in reply to powerlord
    powerlord:
    Oh come on, everyone knows the real WTF is using Oracle.

    Although I suppose the screenshot of Oracle SQLDeveloper could have been part of Alex's anonymization.

    Snort yeh, right. ITT: everyone considers all RDBMS other than their own preference to be rubbish.

  • Department Of Redundancy Department (unregistered) in reply to NoAstronomer
    NoAstronomer:
    Barrett Jacobsen:
    What application is that in the screenshot?

    As per powerlord's comment, that's Oracle's SQLDeveloper. A free download from Oracle. You can also connect to MS-SQL and other databases.

    I, too, would like to re-iterate the initial comment that it's Oracle SQLDeveloper.

  • ███████████████ (unregistered)

    █████████████████████████████████████████████████████████████████████████████████████████████████████████

    ██████████████████████████████ ███████████████████████████████████████████████████

    █████████

    █████████████████████

  • Andrew (unregistered)

    A DBA using SQL Developer?? <shudder>

  • TheRealMe (unregistered)

    I think I went to the same uni because I remember registering for courses in 1993/94, and it was this crappy telephone system that was like ALWAYS busy, so having a modem that would incessantly redial was rather handy.

    Fast forward a few years - yeah, the WTF article here is definitely PeopleSoft or some variant, because my uni uses a very similar date coding system and it was about as penetrable as a brick wall until they condescended to explain it.

    I wonder how many CompSci people at the uni would laugh at the SQL WTF in this article. :P

  • nasch (unregistered) in reply to Markp
    Markp:
    It's really quite simple to translate, say, September 2029 into 2299. The century may be confusing but how often do you expect students to have to remember, oh wait...is it next century or this century? Just remember that all terms start with 2 and ignore the digit.

    If you have a meaningful identifier and the easiest way to use it is to ignore part of it, that's already a WTF.

  • (cs) in reply to nasch
    nasch:
    Markp:
    It's really quite simple to translate, say, September 2029 into 2299. The century may be confusing but how often do you expect students to have to remember, oh wait...is it next century or this century? Just remember that all terms start with 2 and ignore the digit.

    If you have a meaningful identifier and the easiest way to use it is to ignore part of it, that's already a WTF.

    What a phenomenally naïve thing to say. I may understand the need for 10+ digit phone numbers, but do you really think I independently memorize the country code and area code for EVERY single number? No! I remember the last 7 digits (regionally, often only the last 4) and only remember digits 2-4 if it's an exception to the norm. I've NEVER had to memorize an international number. Does that mean the country code doesn't have meaning?

    The identifier might have meaning without it having meaning to the user. A user in the 20th century doesn't care that the term starts with a 1, and a user in the 21st century doesn't care that it starts with a 2, but the server cares about the difference between them.

  • Omnomynous (unregistered)

    I'm not sure █ is a valid character in a table name,k,mni b

  • Nostalga (unregistered) in reply to Bellinghman
    Bellinghman:
    Bosshog:
    Though I have to say that the concept of "enrolling on courses" at University is not one with which I am familiar. Maybe it's a UK / US thing, or maybe my university is a bit 'different'.

    At my Uni, once you signed up to the compsci degree, you were presented with a smorgasbord of lecture courses, which you could either go to or skip as you saw fit.

    That's pretty much how my University did things too. And that was Cambridge, so I don't think it's a UK thing either.

    (But skipping too many lectures in Engineering would lead to a Richard or worse.)

    The whole major/minor thing is one of the major differences between the US and the UK regarding courses. UK Universities don't do it. (Not any I've heard of, anyway.)

    I have not seen the lower classes of degree referred to as 'Desmond' or 'Richard' for quite some time. Thank you for the nostalga trip. We always called the lowest degree a 'Douglas', rather than a 'Richard', but then I didn't go to Cambridge.

    I was always diappointed that the higher classes of degree did not have similar nicknames. I suppose on this forum the highest degree is the 'Frist', but I was never able to think of a suitable moniker for a 2.1 degree.

    Any ideas?

  • Bosshog (unregistered) in reply to Bellinghman
    Bellinghman:
    And that was Cambridge
    Ah, yeah, that would be the one :)
    (But skipping too many lectures in Engineering would lead to a Richard or worse.)
    Bridges made of jelly? Camouflaged network cables? Robot rubber ducks? Gaffer-tape spider webs? Call in the Cambridge engineers!
  • Bosshog (unregistered) in reply to Bosshog
    Bosshog:
    Bridges made of jelly? Camouflaged network cables? Robot rubber ducks? Gaffer-tape spider webs? Call in the Cambridge engineers!
    Ah, and I totally forgot about the biscuit-tin with special features when you opened it - it was full of smoke and light, and played "the Final Countdown"... happy happy days :)
  • Pete (unregistered)

    Weird I just ran into a similar thing with a piece of software that does additional support assessments for lots of colleges. It creates a new Access 1.0 database for every single person that takes an assessment. I looked up access 1.0 that is around 1993 and you can tell by the 16 colour interface.

  • Geert (unregistered)

    Reminds me of a client complaining about the maximum number of columns that can be stored in a MS Access table (which is 255 columns). Turned out that he added ~15 columns for each year in his huge administration table, and when entering the year 2010, he was not able to add any more columns to his table. It took a whole day and a lot of convincing to normalize his database...

  • Nostalgia too (unregistered) in reply to Nostalga
    Nostalga:
    I have not seen the lower classes of degree referred to as 'Desmond' or 'Richard' for quite some time. Thank you for the nostalga trip. We always called the lowest degree a 'Douglas', rather than a 'Richard', but then I didn't go to Cambridge.

    I was never able to think of a suitable moniker for a 2.1 degree.

    It was Desmond for us, too. (And that was in a redbrick: Manchester, late 80's/early 90's.)

    And it was "15" for a 2(i). William G Stewart FTW!

  • BSDpwns (unregistered) in reply to ThomasP

    ...simple.

    CourseID is a properly, indexed, pk with an auto-incremementing number; even a guid if you wanted. Now, here's the simplicity part: Use a column to store the start date...whoooaoaoaohfoahoahoahjaohf OMGSJDFLJ CLARITY FOR THE WIN!

    Now, you can higher summer dumb @55 students to take your place when you go on vacation.

  • Anonywut (unregistered) in reply to Time Warp
    silent d:
    I don't see a problem with having the students look up a course number, but how about letting them choose from a list of human readable semesters, e.g. "Fall 2009", "Spring 2010", rather than forcing them to deal with whatever cryptic numbering scheme is used by the database back-end?
    Time Warp:
    I think it's at this point when I hope others can see that, just sometimes, because a computer makes something the easiest way to do something, doesn't make it the right way for actual people at all.

    As far as I'm concerned, this is TRWTF.

    CAPTCHA: saepius -- one who would hide back-end data details from front-end users!

  • Nostalga (unregistered) in reply to Nostalgia too
    Nostalgia too:
    It was Desmond for us, too. (And that was in a redbrick: Manchester, late 80's/early 90's.)

    And it was "15" for a 2(i). William G Stewart FTW!

    I went to Brunel University in the mid 80's

    I use the Internet every day, and find it a very quick way to find answers to technical questions, and yet I never think to Google (or Wikipedia) for answers to silly trivia such as this. Yet it was there all the time.

    http://en.wikipedia.org/wiki/British_undergraduate_degree_classification#Undergraduate_degree_honours_slang

    I must be getting old. Get off my lawn.

    Oh yes, captcha: erat. Is that supposed to be funny?

  • Bubak (unregistered)

    I can imagine spliting records into several tables for performance reasons.

  • (cs) in reply to Bubak
    Bubak:
    I can imagine spliting records into several tables for performance reasons.
    Maybe ten years ago. With today's DBMSs, you can get all of the performance benefits of splitting without actually splitting it at a schema level. I had an earlier post that also went through the math that if this was done for performance reasons, then it was probably done wrong.
  • acgrillet (unregistered) in reply to Mike

    If database design was that simple, none of us would have day jobs!

Leave a comment on “Database Abnormalization 101”

Log In or post as a guest

Replying to comment #:

« Return to Article