<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="Street"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="address"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="State"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink=blue>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Well. I think WC3 would point you towards
a XML style representation of SQL Querying and XML row sets, using schema
validation to assert the correctness of requests sent and data received.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Mediated through alterable rules is really
the trick. This can mean so many things. There must be constraints on the alterable
rules that all sides know about. Have you looked at Expert Engines?<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
delphi-bounces@ns3.123.co.nz [mailto:delphi-bounces@ns3.123.co.nz] <b><span
style='font-weight:bold'>On Behalf Of </span></b>Paul A Norman<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, 7 June 2006 1:36
p.m.<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">NZ
Borland Developers Group - <st1:place w:st="on">Delphi</st1:place> List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [DUG] Stored
procedures and business logic</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>opps Sorry,<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color="#000066" face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:#000066'>This will let me have
any dataset within reason on the client side</span></font><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'> </span></font><o:p></o:p></p>
</div>
<p><font size=2 color=black face=Arial><span style='font-size:10.0pt;
font-family:Arial;color:black'>should be . . .</span></font><o:p></o:p></p>
<div>
<p class=MsoNormal><font size=2 color=black face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:black'>This will let me have any dataset within
reason on the </span></font><font size=2 color="#660000" face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:#660000'> server</span></font><font
size=2 color=black face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:black'> side</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br>
<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><span class=gmailquote><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>On 07/06/06, <b><span style='font-weight:bold'>Paul A
Norman</span></b> <<a href="mailto:paul.a.norman@gmail.com">paul.a.norman@gmail.com</a>>
wrote:</span></font></span> <o:p></o:p></p>
<div>
<blockquote style='margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt'>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>"To me it is non sensical to put
business logic/rules/objects whatever the term you want to use, in the
database. "</span></font><o:p></o:p></p>
</div>
</blockquote>
</div>
<div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I have come to completely agree with that.
I believe that may be true for the conceptual reasons I posted before. </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>What needs to be stored is an abstraction
of the rules (XMLed?), and I suspect that needs to be designed to check a
central registry to see if there are any <u>carefully </u>conceived revisions.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>What I am thinking of is abstraction of
the application's data needs client side, and implementation of a server side
abstraction, and a common set of rules for the two abstraction <em><i><font
face=Arial><span style='font-family:Arial'>interfaces</span></font></i></em>
for want of a better word, to operate and do their
stuff under.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=black face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:black'>Clinet interface</span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'> <-> </span></font><font size=2 color=black face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:black'>client side data
abstraction </span></font><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'><- </span></font><strong><b><font
size=2 color="#003300" face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:#003300'>mediated through alterable rules</span></font></b></strong><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'> - > </span></font><font size=2 color="#663300"
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:#663300'>server side
data abstraction</span></font><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'> <-> </span></font><font
size=2 color="#663300" face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:#663300'>server database storage</span></font><font size=2
color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'> </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color="#000066" face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:#000066'>This will let me have
any dataset within reason on the client side. </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color="#000066" face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:#000066'>It seems simillar to
aspects of the VM concept.</span></font> <o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color="#000066" face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:#000066'>Is there a
recomendation (e.g. WC3) any where on the format for </span></font><font
size=2 color="#663300" face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:#663300'>"</span></font><font size=2 color="#003300"
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:#003300'>mediated
through alterable rules"</span></font><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><font
size=2 color="#000066" face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:#000066'>nothing has jumped oput at me yet. How is the Java one
mentioned earlier done - is that standards based? </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I am facing the begining of the
development of a larger application at the moment that has got me really
focussed to be very careful on all of this before I get too deeply into
it. </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Some of the folk who are using it may be
on linux and on flavours not conducive to Kylix.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Hence on the Windows environment I am
looking at leveraging Delphi with the php(for)<st1:place w:st="on">Delphi</st1:place>
approach and relying on straight PHP under linux. This may mean that Windows
users will end up with better interfaces (possible more advanced features), but
I can use common "business logic" etc through PHP <strong><b><font
face=Arial><span style='font-family:Arial'>with <st1:place w:st="on">Delphi</st1:place>
able to easily write new modules for PHP</span></font></b></strong>.</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Further the database will be
distributed in that it is to enbale "nodes" of datasets (holding
wider info) to intersect when they are available on line. </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I've looked at many Open Source projects
and learned a lot from them, but not quite found something that is going to
keep all my people happy (either as is or readily alterable). </span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>So I am left with ascertaining this
befoire I leap off into it. I </span></font><font size=2 color="#000066"
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:#000066'>s
there a recomendation (e.g. WC3) any where on the format for</span></font><font
size=2 color="#663300" face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:#663300'> "</span></font><font size=2 color="#003300"
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:#003300'>mediated
through alterable rules"</span></font><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy'> </span></font><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Paul<br>
<br>
<o:p></o:p></span></font></p>
</div>
</div>
<div><span id="q_10bac0e408bf1e27_3">
<div>
<p class=MsoNormal><span class=gmailquote><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>On 07/06/06, <b><span style='font-weight:bold'>James
Sugrue</span></b> <<a href="mailto:jamessugrue@xtra.co.nz" target="_blank">jamessugrue@xtra.co.nz
</a>> wrote:</span></font></span> <o:p></o:p></p>
<div>
<div vlink=blue link=blue>
<div>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'>Anyone struggling with the concepts of n-tier apps and how to
put in to practice could do worse than watch the following webcast series </span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'> </span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'><a
href="http://www.microsoft.com/events/series/modernsoftdev.mspx" target="_blank">http://www.microsoft.com/events/series/modernsoftdev.mspx</a></span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'> </span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'>while it focuses on .NET the principals can be applied to any
language/platform.</span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'> </span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'>To me it is non sensical to put business logic/rules/objects
whatever the term you want to use, in the database. One of the major points of
n-tier design is to allow change of one component of an app without effecting
the rest. What happens to your business rules if your client decides to change
to another database vendor or decides that they want to run disconnected so you
need to use XML? Which is another reason incidentally why a lot of people are
using web services in there middle tier…. </span></font><o:p></o:p></p>
<p><font size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:
Arial;color:navy'> </span></font><o:p></o:p></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>
<hr size=2 width="100%" align=center>
</span></font></div>
<p><b><font size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
font-weight:bold'>From:</span></font></b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'> <a
href="mailto:delphi-bounces@ns3.123.co.nz" target="_blank">delphi-bounces@ns3.123.co.nz</a>
[mailto:<a href="mailto:delphi-bounces@ns3.123.co.nz" target="_blank">delphi-bounces@ns3.123.co.nz</a>]
<b><span style='font-weight:bold'>On Behalf Of </span></b>Paul A Norman<br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, 7 June 2006 10:48
a.m.<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">NZ
Borland Developers Group - <st1:place w:st="on">Delphi</st1:place> List</st1:PersonName>
</span></font><o:p></o:p></p>
</div>
<div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [DUG] Stored
procedures and business logic<o:p></o:p></span></font></p>
</div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>I'm
coming in late on this thread having really valued following the
discussion.<o:p></o:p></span></font></p>
</div>
</div>
<div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Much of
the difficulty in this area focusses around the simple thought that wrong
things may be attempted on the db. And that the DB should do some of the
thinking for the application. So much of the logic applied server side is
designed to sort that out. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Is there
any appeal to objective philosophical logic that points to any overall approach
that spares us the intellectual burden of having to trouble shoot problems
and that perhaps should not exist or matters that need to be solved
serverside? <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Knuth and
other early logicticians propose what became simply termed the
"rubbish in rubbish out" principle. It seems that in flow dynamics it
is better to sort rubbish out before it goes "down stream", so that
you avoid having to send anything "up stream" calling for changes. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Many people
of that era thinking through this stuff held the thought that
each isloatible unit should have its own integrity. Hance Knuth's <st1:State
w:st="on"><st1:place w:st="on">TeX</st1:place></st1:State> approach in page
layout which is in its own way, the storage and qualifying of data. The format
of <st1:State w:st="on"><st1:place w:st="on">TeX</st1:place></st1:State>
assumes though that the 'user' has already pre-processed the actual data
and it is warrantable for deployment. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>So I have
been thinking alot about this stuff from the view that each level of the
process should only be passing 'data' on to the next that is in all senses pure
and appropriate. Now people will immeadiatley say that can not work for
multi-development-client applications utilising a common database. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>To that I
would make the suggestion of a server abstraction layer which
requires that an application must send a verifying "key" that asserts
that the post has the integrity required by the standard set for the process.
Not just a password alone, the purpose being to focuss the developer to
implement internally all necessary requirements prior to posting. These
requirements can available following the Java strategy pointed out
earlier. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Perhaps
then logic and checks db side should only be as minimal as possible
- essential enough to ensure the basic integrity of the db is actually
maintained. <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Would
this perhaps effectively build applications which were to a high degree
abstractable from the underlying database in use?<o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Paul<o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><br>
<br>
<o:p></o:p></span></font></p>
</div>
<div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>On
07/06/06, <b><span style='font-weight:bold'>Neven MacEwan</span></b> <<a
href="mailto:neven@mwk.co.nz" target="_blank"> neven@mwk.co.nz</a>> wrote: <o:p></o:p></span></font></p>
<p style='margin-bottom:12.0pt'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Kurt<br>
<br>
I have to agree with Kyley that clearly the definition of a business<br>
rule is in dispute. This reminds me that a few years ago I tried to find <br>
a definition of a 'business object' and only suceeded in finding what it<br>
wasn't, namely a row of data in a RDB. Also by your definition you could<br>
implement all business rules in the RDB, which you can't! for example a <br>
business may have well defined rules for resolving a many-to-many<br>
relationship (The most common implementation of this is an open item<br>
transaction ledger) but the best the RDB can you is enforce RI.<br>
<br>
I call the rules that protected the data DI (Data Integrity) this covers <br>
RI, Constraints, Calculated Columns (Intra Row and Aggregated) you can<br>
include State Checking (ie we cannot edit this record as it is locked).<br>
But in my experience as much as you put in the DB you cannot implement a <br>
business there IMHO<br>
<br>
Neven<br>
<br>
<br>
<br>
<br>
kurt wrote:<br>
> Neven MacEwan wrote:<br>
>> All the constraint/ri ui code can a) be extracted out of the DB or b)<br>
>> be autogenerated from metadata <br>
>><br>
>> > Where does referential integrity end and business
logic begin anyway?<br>
><br>
> - a database is a collection of constraints<br>
> - a business rule is a constraint<br>
><br>
>> firstly I make the distinction in the respect that a change in <br>
>> business rules should not alter your ri, the difference is breaking ri<br>
>> would result in "what the sh#t is this", breaking business
rules<br>
>> results in "should we be allowing this sh#t" <br>
><br>
><br>
> I don't see the difference : referential integrity is one<br>
> (the most common) way of implementing business rules.<br>
><br>
> "unique index on client ID" is a simple RI statement, <br>
> that enforces the rule that client ID's are unique within<br>
> that set of data, no?<br>
><br>
><br>
>> Its basically the same mismatch that exists between an OO system and a<br>
>> Relational Database, it all goes away if you accept/assume that a row <br>
>> of a table is a class instance persisted, the question is should you?<br>
><br>
> Nope. Class = Type ;)<br>
><br>
><br>
> Cheers, Kurt.<br>
> _______________________________________________<br>
> <st1:place w:st="on">Delphi</st1:place> mailing list <br>
> <a href="mailto:Delphi@ns3.123.co.nz" target="_blank">Delphi@ns3.123.co.nz</a><br>
> <a href="http://ns3.123.co.nz/mailman/listinfo/delphi" target="_blank">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>
><br>
><br>
<br>
--<br>
Neven MacEwan ( B.E. E&E)<br>
Ph. 09 620 1356 Mob. 027 4749 062<br>
<br>
New Address Details<br>
===================<br>
MWK Computer Systems<br>
<st1:Street w:st="on"><st1:address w:st="on">1 Taumata Rd</st1:address></st1:Street><br>
<st1:place w:st="on">Sandringham</st1:place><br>
<st1:City w:st="on"><st1:place w:st="on">Auckland</st1:place></st1:City><br>
<br>
Ph 620 1356<br>
Fx 620 1336<br>
<br>
<br>
_______________________________________________ <br>
<st1:place w:st="on">Delphi</st1:place> mailing list<br>
<a href="mailto:Delphi@ns3.123.co.nz" target="_blank">Delphi@ns3.123.co.nz</a><br>
<a href="http://ns3.123.co.nz/mailman/listinfo/delphi" target="_blank">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>
<br>
<o:p></o:p></span></font></p>
</div>
<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</div>
</div>
</div>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
_______________________________________________<br>
<st1:place w:st="on">Delphi</st1:place> mailing list<br>
<a href="mailto:Delphi@ns3.123.co.nz" target="_blank">Delphi@ns3.123.co.nz </a><br>
<a href="http://ns3.123.co.nz/mailman/listinfo/delphi" target="_blank">http://ns3.123.co.nz/mailman/listinfo/delphi</a><br>
<br>
<o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><br>
<br>
<o:p></o:p></span></font></p>
</div>
</div>
</span>
<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>
</div>
</body>
</html>