|
|
|
SSC-Addicted
      
Group: General Forum Members
Last Login: 2 days ago @ 11:14 AM
Points: 484,
Visits: 351
|
|
>> separating the front and back end development. They are two sides of the same coin, and should be done by the same person. <<
No. The database guy has totally different skills and responsibility. Tiered architecure is a great idea and so is tiered skill sets.
The app developer will slant the DB design toward his application and not make it general. The app developer does not want to load external data (new ZIP code files, etc.), track industry standards (plan migration path from 10-digit to 13-digit UPC codes, SOX rules, Data warehouse loads, etc.)
The DB guy does not care about porting screen to a Blackberry display. He does not want to talk about coding up a new report for the end of the year, etc.
The great shame is that app and DB do not share a data dictionary so they both understand the data the same way.
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Monday, March 08, 2010 12:11 PM
Points: 1,018,
Visits: 286
|
|
99% agree with Joe here. I can always tell when a database has been coded by an application developer(s) they are universally terrible. Keep them separate and design the database FIRST. Treat the application as the presentation layer for data that it is, rather than treating the database as a storage mechanism for the application. I also agree that it's a problem that the app and DB don't share the data dictionary, but as long as applications are built using hierarchical data constructs (OO) it will always be that way. The real problem is that most of the time when the "impedance mismatch" is invoked, the database is assumed to be at fault when it is actually the programming languages that use the demonstrably inferior data constructs. Sorry Andy, but I can't resist... Here's where I disagree with Joe. Identities are fine for some things. Obviously they don't work so well when you need to ensure gapless sequences etc... And I just laugh (cry) when I see a database that has an identity on every stinking table. But when you need a system generated surrogate key, why not? Nothing else will perform as well or be so convienient (at least in the SQL Server world). I do wish MS would implement sequences though... There is nothing "non-relational" about identities, proprietary and non portable...yes, but since the RM does not proscribe them and does not prescribe how surrogate keys must be generated saying they are "non-relational" is hyperbole. As for using surrogate keys for code tables, I generally don't like the idea. Sure it allows you to redefine the code without making a bunch of updates, but I don't view that as being a real positive in most cases. As for the negative, it forces you to do a lot of otherwise unnecessary joins, hurting overall performance. 100% agree that statuses are NOT entities per se, they are attributes whose values can and should be constrained by a FK but that doesn't make them entities. Thinking of codes as entities leads one to use MUCK tables.
/*****************
If most people are not willing to see the difficulty, this is mainly because, consciously or unconsciously, they assume that it will be they who will settle these questions for the others, and because they are convinced of their own capacity to do this. -Friedrich August von Hayek
*****************/
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Wednesday, March 03, 2010 5:25 AM
Points: 107,
Visits: 35
|
|
I guess I hold differently. When you have more than one person working on a single function, then you have communication issues. When I develop sw and do both the front and back ends, there're no mapping issues, for example.
Actually, ideally, to me, the same person gets the specs from the end user(s), writes the documentation/manuals, does the front end and back ends, testing, etc. This way, I optimize for people who understand the business; after all, without the business, there's no show (Liberace).
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Wednesday, March 03, 2010 5:25 AM
Points: 107,
Visits: 35
|
|
Sorry if I wasn't clear. The data model is the heart of any application, whatever data store is used. That should be designed and understood before any development is done.
And if application developers design terrible databases, they should be trained how to design better databases, not fob off the design to someone else. People can learn and do more than one thing, of course (:=).
|
|
|
|
|
Ten Centuries
      
Group: General Forum Members
Last Login: Monday, March 08, 2010 12:11 PM
Points: 1,018,
Visits: 286
|
|
The problem is that application development and database design require two totally different skillsets and mindsets. I've never met anyone who could effectively do both. I've met a bunch of people who THINK they can do both, but reality is very different.
/*****************
If most people are not willing to see the difficulty, this is mainly because, consciously or unconsciously, they assume that it will be they who will settle these questions for the others, and because they are convinced of their own capacity to do this. -Friedrich August von Hayek
*****************/
|
|
|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: 2 days ago @ 5:27 PM
Points: 969,
Visits: 376
|
|
|
|
|
|
SSC Veteran
      
Group: General Forum Members
Last Login: Friday, September 04, 2009 8:09 AM
Points: 249,
Visits: 61
|
|
The purpose of the data dictionary is to perform the communication. If the application developer doesn't understand it then it's time to ask the database developer for clarification. If nothing else, it serves as a focal point for the application and database developers to work together and make sure everything is laid out properly.
Bryant E. Byrd, BSSE MCDBA MCAD SQL Server DBA bryant{at}mindfair.com
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Wednesday, March 03, 2010 5:25 AM
Points: 107,
Visits: 35
|
|
"I've never met anyone who could effectively do both." Well, I'm going to be immodest here and say that I do both sides of the coin fairly well, and I expect that the developers who work with/for me do as well. I need people who learn the tools needed to do the job, whether they're front end, back end, scripting, OO, whatever. I resent like heck the time and money wasted "mapping" an OO hierarchy to a relational db structure. Makes no sense to me.
|
|
|
|
|
SSC Rookie
      
Group: General Forum Members
Last Login: Sunday, March 14, 2010 8:56 PM
Points: 41,
Visits: 50
|
|
DRI Transition Constraints (http://www.dbazine.com/ofinterest/oi-articles/celko35) - Are the way to go! I've used this concept for years and everyone gets it from BAs to BI developers. It's beauty for me is that systems never stand still, and as sure as eggs are eggs, someone going to change it and then all you need is a another row in a table (i.e. no 'coding'). They are also create for populating drop down lists for valid transitions.
|
|
|
|
|
SSC-Enthusiastic
      
Group: General Forum Members
Last Login: Tuesday, March 16, 2010 1:48 PM
Points: 138,
Visits: 107
|
|
Apart from creation dates, I tend to use default constraints for bit flags, like this: Active bit NOT NULL DEFAULT 1 When used in this way, a new record begins life as an active record. Later, when the record is ready to be deleted by the audit process, the flag gets set to 0.
|
|
|
|