Relationships & Primary Keys

I could be wrong but I don't think namliam was suggesting that Jet's RI was flawed based on regional settings but rather that one shouldn't rely on it to cover up sloppy coding & general laziness.

With that framed, I have to say I disagree.

From a client's POV, I don't really give a hoot whether the developer I hire is brilliant enough to re-write RI in code. I want my application yesterday and for a good price. I wouldn't pay a developer to work extra hours so he could roll out his own RI. If it happened that two different developers billed me quite differently because one developer went the lazy way and used Jet's RI while other wrote his own RI, it's no-brainer which developer I'll ask to do for next project.

From a developer's POV, I would sooner run to a codebase that was old, used many times, developed and supported by many other developer before I write my own code. It's simply me being pragmatic; Even if I was a genius coder, there's going to be chances I'll have introduced bugs and errors in my code, and all I have is "well, it should work, I think.". If it breaks, then I better as hell have adequate documentaiton to know what the hell broke. Jet's RI fits all the criteria I listed (old, re-used many times, developed & supported by several other developers) that I never think twice about using Jet's RI. Same can be said about bound forms. I can certainly write a fancy-pant unbound form, but if I can get away with same thing on bound form with much less code, then the end product is much likely to be less buggy, maintainable and scalable which is a big win for the client (see the previous paragraph).


Now, what about the claim such as "But, but Jet throws all those weird doohickey error messages and it won't let you do stuff you know it's legal to do!" My response is that's where the laziness shift. I could be lazy and just write my own code so I know exactly what it's doing or take time to understand the Jet's architecture and design within the limitations. Almost always, we can find ways that works and use it to suppress what would be otherwise confusing errors.

It's also a question of swimming downstream. You certainly can swim upstream but don't be disappointed if at the end of day, you're only a few feet upstream from where you started out.
 
one problem i do have is managing a distibuted database

lets say i set it up with relationships, but over time, i add a few extra tables, and extra fields, and need to change the relationships

now i can send the users a new front end

i tried to get a startup routine to automatically add new fields into the backend, but had some issues with that - i just coudnt get certain field properties set as i wanted them - so now i get the users (the designated data manager) to add fields/indexes directly

but i think users would struggle to maintain relationships, and i cant see a way to automate that - so i dont bother.

yes, i lose the benefits of enforced referential integrity, but i cant see an easy alternative

FWIW, I'd have a master development copy which is also unsplit for me to add new tables/fields/whatever. It's simpler also because the script would just concentrate on truncating & reloading the tables (or maybe just insert the missing records) from production backend to the development copy so I have a current snapshot of production data. When it's time to roll out new version, split the master development copy & replace the backend & move the data into new production backend. Push front end.

Granted, it's not a one-click affair, but that's expected of any complex system, I would think. An alternative is to migrate to a RDBMS backend where you can maintain a production and development database in same place and automate the edits.
 
Mailman, RI should indeed be enforced by code. However, when you are in a Rapid Application Development environment, the answer to "rolling your own RI" is decidedly NO for version 1.
How often have we all released the perfect project at version 1?
Always version 1 of the app/db needs to be done yesterday...

When cutting corners, getting things done fast, yes anything goes. Long(er) term though...

I really don't see why namliam is so down on them. I would like to see an example of how a regional setting could lead to RI making a mistake that would not also occur in code.
My biast (if you want to call it that) doesnt go against RI in particular but rather against self thinking code in general.

I.e. Why use "option explicit" because we want to declare the variables though not "explicitly" needed... Most of us will turn it on 100% and declare all variables, just because it is good to do.

Simularly you shouldnt do
Dim x as String
x = Now()

As that will do an implicit conversion for you which can, note CAN, but ineffitably will cause a problem someplace.
Software should do what it is told, not what it thinks is good to do.

With that framed, I have to say I disagree.

From a client's POV, I don't really give a hoot whether the developer I hire is brilliant enough to re-write RI in code. I want my application yesterday and for a good price. I wouldn't pay a developer to work extra hours so he could roll out his own RI. If it happened that two different developers billed me quite differently because one developer went the lazy way and used Jet's RI while other wrote his own RI, it's no-brainer which developer I'll ask to do for next project.
Again it is not the RI in particular it is a developer's mindset...
Would you as a customer rather pay 10k now and 10k next year or pay 15k now?

Yes I know most customers will rather pay the 20k total over the 15k, which in itself (IMHO) is sad. People take the easy way out only to discover they need more later.

Less is more and more is less :(

The general problem with this approach is the difference between the developer that will give a customer what he wants vs the developer that gives what you need.
The average customer doesnt have a clue of the possibilities out there. Plus they talk in their own "language". In developer terms the average customer will say A, mean B and want C. Paying 10k for something you want now, only to discover in 2 months you need to spend the other 10k again... is not ideal... These are hypothetical situations offcourse, but reflect my years of experience where many times I adviced a client to go one way and spend some more $$ now and not worry about the future. Only to have them say No and then come back 3 months later "gee I wish I had listened"

Then now there is the 80-20 rule and all kinds of exceptions... bla bla...

FWIW, I'd have a master development copy which is also unsplit for me to add new tables/fields/whatever.
This in itself again is not good.

You can do things with code to local tables that you cannot do to linked tables.
Also your import stuff should not be needed when you have a linked backend. With a linked backend all you do is swap out develop to prod backend and you are up to date without any import or data swapping what so ever.
 
Namliam is an optimist. They say A, mean 3 and want @ but actually need #. :D

This is what you and I know, I am talking in the customers language they do not understand the strange characters "3@#" and are happy they know the ABCs :eek:
 

Users who are viewing this thread

Back
Top Bottom