NYCPHP Meetup

NYPHP.org

[nycphp-talk] Some comments on the XML Talk

Tim Gales tgales at tgaconnect.com
Sat Nov 3 18:58:18 EDT 2007


Elliotte Harold wrote:
> bz-gmort at beezifies.com wrote:
> 
>> What you seem to be saying here is "I can add a record type whenever I 
>> need it and call it whatever I want".
>>
>> So in a hospital, a doctor decides for some reason he needs to track 
>> toe size of the patient over treatment.  So he adds in a toe-size tag
>> <toe-size>3</toe-size>
>>
>> And records that with every visit.
>>
> 
> Doctors wouldn't do that. (Well noted XML guru Jonathan Borden, M.D. 
> might but most doctors wouldn't.) Instead they'd fill out a form just 
> like they do today.
> 
> The difference is that when the form doesn't let them include the 
> information they need, they can ask the devs to expand the form, and the 
> devs can do that without breaking all their existing databases. 

Adding a 'toe' attribute to a table is *not* refactoring
read '2.3 What Database Refactorings Aren’t' at:
 
http://www.agiledata.org/essays/databaseRefactoring.html#StepVerifyDatabaseRefactoringRequired 



> if the 
> devs are really good, they'll have figured out how to organize the forms 
> to allow doctors to expand it without realizing that's what they're doing.
> 
> Certainly SQL databases can be evolved, but it's really hard to do. 

SQL databases are not characteristically hard to change.
Things like sprinkling your business logic around in different
places in your application make systems hard to change --
like when you have data validation in one form and date range
checking in another process.

If you manage to get all your business logic in one place
(preferably in the database), your system will look more
like Figure 1. in '3. Why Database Refactoring is Hard'
than in Figure 2.

Scott Ambler is saying that if your data is pathologically
coupled to your source code, you will have a lot more
difficulty refactoring.

He is *not* saying relational models are hard to change.

He mentions specifically:
. Your application source code
. Other application source code
. Data load source code
. Data extract source code
(among others)

Look at the two figures at the above link.

[snip]

-- 

T. Gales & Associates
'Helping People Connect with Technology'

http://www.tgaconnect.com



More information about the talk mailing list