Legacy databases...
-
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul Watson -
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonSounds like the time is ripe to ask for an increase :-D The worst DB experience I've ever had (although it's using the term DB loosely) was when I was learning C. You know, the old blue Borland dos compiler X| . Oh man, I had to build this stock taking DB, which used text files. No wonder I love SQL Server so much! :cool:
Deploying a web application without understanding security is roughly equivalent to driving a car without seatbelts - down a slippery road, over a monstrous chasm, with no brakes, and the throttle jammed on full.
Hacking Exposed - Web Applications. Joel Scambray & Mike Shema
-
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonPaul Watson wrote: Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... The horror! I remember during my last job, we had some trx file which ran this way. Occasionally, 2 users would update different items simultaneously, causing a collision, and the "sequence number" would be incorrectly incremented. Man, this caused havoc one day because each new update caused a trx error, until we figured out what was going on. After that it was an easy fix, but we still went in manually to make the change on case-by-case. X| Accck!!! thank goodness, I'm out of there! :cool: BW "I'm coming with you! I got you fired, it's the least I can do. Well, the least I could do is absolutely nothing, but I'll go you one better and come along!" - Homer J. Simpson
-
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonWhy not upgrade it while you're in there. I recommend Paradox. ;P "When in danger, fear, or doubt, run in circles, scream and shout!" - Lorelei and Lapis Lazuli Long
-
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonI once worked on a project with a large database (> 150, > 10 Gigs) with no relationships. They had them at the start, but the code was so badly written they disabled the constraint and the relationships. Then, they had a guy spending all of his day fixing the errors in the database. :rolleyes: Michel It is a lovely language, but it takes a very long time to say anything in it, because we do not say anything in it, unless it is worth taking a very long time to say, and to listen to.
- TreeBeard -
Why not upgrade it while you're in there. I recommend Paradox. ;P "When in danger, fear, or doubt, run in circles, scream and shout!" - Lorelei and Lapis Lazuli Long
Roger Wright wrote: Why not upgrade it while you're in there. I recommend Paradox. LOL, that would be a step up. Actually what you suggest is the most irritating part of the whole project. The client has a bricks and mortar shop plus an online shop. The online shop was the first to be computerised (no duh) and that was 5 years ago. Back then some company made the dB and made it badly. Over the years the client has been dropping pennies into the project, asking for small upgrades here and there. So we could never justify re-doing the database, and instead had to patch on bits and pieces until eventually we had a monstrosity. Begining of this year the client asked for a back-end Order Management System which they could use on their POS tills. I recommended we re-do the website at the same time and get rid of the old database and implement a new one. But no, they did not want to pay for that. So we built this brand new OMS on top of a cranky 5 year old database. 2 months later they say "hey, can we re-do our website now?" I nearly exploded. Once again I valiantly but stupidly recommended we ditch the database, re-do the website and update the OMS so that it used the new database. But they were not willing to pay for the updates to the only 2 month old OMS. Aaaaaarrrgghhhh! So now we have two very new code bases only months apart running on a 5 year old database. Talk about bad planning. Still, we did it and things are ok.
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul Watson -
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonYou kids don't know you're born. You want to try fixing a flat file database with long values pointing to the next record postion in the file - after a bug has not updated the previous pointer and zero'd the next pointer. I spent some of my formative programming years with a hex-editor repatching customers files after somebody else's code had corrupted the database. :-D Michael Life’s not a song. Life isn’t bliss. Life is just this. It’s living. -- Buffy the Vampire Slayer: Once more, with feeling
-
Roger Wright wrote: Why not upgrade it while you're in there. I recommend Paradox. LOL, that would be a step up. Actually what you suggest is the most irritating part of the whole project. The client has a bricks and mortar shop plus an online shop. The online shop was the first to be computerised (no duh) and that was 5 years ago. Back then some company made the dB and made it badly. Over the years the client has been dropping pennies into the project, asking for small upgrades here and there. So we could never justify re-doing the database, and instead had to patch on bits and pieces until eventually we had a monstrosity. Begining of this year the client asked for a back-end Order Management System which they could use on their POS tills. I recommended we re-do the website at the same time and get rid of the old database and implement a new one. But no, they did not want to pay for that. So we built this brand new OMS on top of a cranky 5 year old database. 2 months later they say "hey, can we re-do our website now?" I nearly exploded. Once again I valiantly but stupidly recommended we ditch the database, re-do the website and update the OMS so that it used the new database. But they were not willing to pay for the updates to the only 2 month old OMS. Aaaaaarrrgghhhh! So now we have two very new code bases only months apart running on a 5 year old database. Talk about bad planning. Still, we did it and things are ok.
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonSounds awful, Paul!:-D I think I'd be inclined to upgrade the damned thing on my own, knowing that the same customer will be back for yet another round of changes. Any company has slow times, and it could be a filler project. The frustration of working with the current system has a cost associated with it, too. My last employer ran the company on a 10 year old piece of software that cost them >$200,000, along with support fees of several $thousand each year. It all sat on top a DOS variant that was current in 1981. I tried repeatedly to get them to upgrade to anything - UNIX, WIndows, Linux - I wasn't picky. But they refused to spend the money, and every year it became more expensive, and personally frustrating for me to maintain the beast. As poor a programmer as I am, I could have written a better system in a year's time, but they refused to consider it. Someday I may yet do it, just for the pleasure of waving it under their noses!:-D "When in danger, fear, or doubt, run in circles, scream and shout!" - Lorelei and Lapis Lazuli Long
-
... are a b with an itch to work with. No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... Get this: When adding a new record to a table I have to consult a Sequences table to get the last ID and then increment it for the new record... X| This is what happens when a database is not planned, is not built by a DBA and grows over a period of 5 years with varied design thrusts and different teams. :-D
Paul Watson
Bluegrass
Cape Town, South AfricaRay Cassick wrote:
Well I am not female, not gay and I am not Paul WatsonPaul Watson wrote: No relationships. No primary keys. No identity seeds. Virtually all fields allow nulls (but not all, be consistent damnit!.) Many unused fields, some only a character in difference to a used field... You forgot to add, that the database file just happens to be on magnetic tape. Now that's a database. Too many years ago, I worked on a stock allocation system, where basically you had to figure how many items from inventory would be allocated to an open order. All of the data came from flat files stored on mag tape. A requirement for being an operator in those days, was being able to run from the console to the tape library, find a tape, skip over to the half a dozen readers, mount the tape and return back to the console to restart the program. If you could do this in under 30 seconds, you were given the job :) Chris Meech