Kathi Kellenberger (5/19/2008)
You know, it really depends on the shop -- how job duties are divided. In small shops, sometimes the developer and DBA are the same person.
The best practice would be for developers to ask the DBA to create the new objects and restrict the rights of the developers.
well, sure everything depends. I understand your point.
In my environment there is a change control system in place, developers create scripts, that are tested, including table creation. Then those scripts are passed to people who are not experienced DBA's, but put things into a test and then production environment. They do not have the full knowledge of a DBA.
Of course, when in doubts the developer comes and asks a DBA for help, but in my environment there is only one DBA who normally has a lot of his own work apart from DBA stuff to do and there are too many developers, so a DBA creating objects could be a small bottleneck to the development.
Also in a test environment I think it is better and quicker for the developer to create the objects, so that he knows how to do it, changes the structure anytime he wants to until a final version is ready, then creates the scripts and this way he also takes part and shares the responsibility for the consistency in the structure of the database. After all he is the one who works as the designer and builds the application.
Apart from that if only a DBA is to create objects, any mistakes are blamed only on a DBA and a developer will tend to say - "I did not create that table, it was the DBA".