one table database?

  • Follow


I have a simple tracking application that seems to only require one 
table with fields that can be updated and tracked.  So far I can see no 
reason for any other tables, because even the status fields are binary 
(not done/done, yes / no, etc.).

It seams this shouldn't require a relational database, but why recreate 
the wheel writing all the data manipulation functions when MySQL has 
already done the legwork?

I guess I could satisfy my conscience by creating a second table to 
archive completed items, though I could just as easily move archived 
items to a flat file.

Anyone have any thoughts on single table databases?

-- 
Bill
0
Reply nospam278 (83) 10/13/2009 1:38:59 PM

William Gill: 

> Anyone have any thoughts on single table databases?

Just go ahead if you wish.

From your description, it's not clear what the situation is, and 
whether or not you already normalized. What does your data model look 
like? How many entities do you have, and what relationships exist?

-- 
Erick
0
Reply Erick 10/13/2009 1:42:28 PM


Erick T. Barkhuis wrote:
> From your description, it's not clear what the situation is, and 
> whether or not you already normalized. What does your data model look 
> like? How many entities do you have, and what relationships exist?
> 
Yes it is normalized with one deliberate violation (trantype).  There is 
no customer table, or any need for one, so custname is not a lookup or 
foreign key.

Here's the CREATE

CREATE TABLE  donations (
   ID int(10) unsigned zerofill NOT NULL auto_increment,
   trantype enum('CASH','CHECK','CREDIT') default 'CASH',
   custname VARCHAR(45),
   amount float NOT NULL,
   trandate date NOT NULL,
   mailed date NOT NULL,
   fundsCleared date NOT NULL,
   complete date NOT NULL,
   PRIMARY KEY  (ID)
)

'mailed' is used to track thank you letters.

'fundsCleared' is to track when credit or checks are deposited.

'complete' lets them know the thank you has been sent and the funds have 
cleared.  I could eliminate it in favor of testing for both 'mailed' and 
'fundsCleared' having valid dates.

At present 'complete' with dates older than n days are simply deleted, 
but could be moved into an archive.

-- 
Bill
0
Reply nospam278 (83) 10/13/2009 5:01:21 PM

On Oct 13, 1:01=A0pm, William Gill <nos...@domain.invalid> wrote:
> Erick T. Barkhuis wrote:
> > From your description, it's not clear what the situation is, and
> > whether or not you already normalized. What does your data model look
> > like? How many entities do you have, and what relationships exist?
>
> Yes it is normalized with one deliberate violation (trantype). =A0There i=
s
> no customer table, or any need for one, so custname is not a lookup or
> foreign key.

You never want to track the history of a particular donor, know what
they donated, or send them a year-end statement?

0
Reply lawpoop (267) 10/13/2009 5:19:45 PM

William Gill:
> Erick T. Barkhuis wrote:
> > From your description, it's not clear what the situation is, and 
> > whether or not you already normalized. What does your data model look 
> > like? How many entities do you have, and what relationships exist?
> > 
> Yes it is normalized with one deliberate violation (trantype).  There is 
> no customer table, or any need for one, so custname is not a lookup or 
> foreign key.

So, no customers donate twice (or if they do, you don't have to make 
sure that this can be reckognized)?
OK...in that case, why do you have doubts? It is not mandatory to have 
more than one table in a database. 
As you said, you could as well save every record in a sequential file, 
but if you need filtering, I think it's a good idea to make use of 
'prefab' database queries.


-- 
Erick
0
Reply Erick 10/13/2009 5:25:46 PM

lawpoop wrote:
> You never want to track the history of a particular donor, know what
> they donated, or send them a year-end statement?
Not at this time.  If that changes they'll have to go to something more 
sophisticated.  All they want is to be able to do a couple simple 
reports like totals, average clearing time on non cash, frequency and 
impact of funds that don't clear, and to be sure thank yous go out in a 
timely manner.

-- 
Bill
0
Reply nospam278 (83) 10/13/2009 5:38:42 PM

Erick T. Barkhuis wrote:
> So, no customers donate twice (or if they do, you don't have to make 
> sure that this can be reckognized)?
Not at this time.

> OK...in that case, why do you have doubts? It is not mandatory to have 
> more than one table in a database. 
It just seemed wrongheaded :-)

> As you said, you could as well save every record in a sequential file, 
> but if you need filtering, I think it's a good idea to make use of 
> 'prefab' database queries.
My rational exactly, "why recreate the wheel?"

-- 
Bill
0
Reply nospam278 (83) 10/13/2009 5:43:18 PM

On Oct 13, 1:38=A0pm, William Gill <nos...@domain.invalid> wrote:
> lawpoop wrote:
> > You never want to track the history of a particular donor, know what
> > they donated, or send them a year-end statement?
>
> Not at this time. =A0If that changes they'll have to go to something more
> sophisticated.

I've been in this situation before. It might seem like a big time-
savings to go with a single table, instead of two or three, but it
almost immediately presents a whole host of problems ( clients expect
a bunch of implicit functionality which they are never able to
articulate beforehand ).

If that changes, and it will soon, you will have a mess trying to
chunk out the data into proper tables. Doing it right from the outset,
where it's very easy to do, will save you much consternation later. I
can't fault you for choosing a "simpler" one-table database ( which is
actually a more complex mess of data ) -- I've had to re-teach myself
this lesson by doing things the hard way many times ;)

Also, what do you mean by re-inventing the wheel? What specifically
are you referring to?

0
Reply lawpoop (267) 10/13/2009 6:33:08 PM

lawpoop:

> Also, what do you mean by re-inventing the wheel? What specifically
> are you referring to?

Although I'm not the OP, I think it's quite obvious.
If he used a sequential file (CSV type), he would have to
- use array- or CSV application functions to filter on separate fields
- use a custom function for sorting data
- write a custom program if he wanted to add a field or change the 
field order/type in order to reorganize the existing data

With a mySQL table and tools like phpMyAdmin, he can manipulate his 
data and file structure more easily.


-- 
Erick
0
Reply Erick 10/13/2009 7:34:55 PM

Erick T. Barkhuis wrote:
> lawpoop:
> 
>> Also, what do you mean by re-inventing the wheel? What specifically
>> are you referring to?
> 
> Although I'm not the OP, I think it's quite obvious.
> If he used a sequential file (CSV type), he would have to
> - use array- or CSV application functions to filter on separate fields
> - use a custom function for sorting data
> - write a custom program if he wanted to add a field or change the 
> field order/type in order to reorganize the existing data
.... or selecting transactions over n days old that haven't been 
answered, or completed, and so on, and so on.

> 
> With a mySQL table and tools like phpMyAdmin, he can manipulate his 
> data and file structure more easily.
.... and if, as suggested elsewhere, the client's needs evolve adding 
additional fields and tables isn't a major project.


-- 
Bill
0
Reply nospam278 (83) 10/13/2009 9:00:02 PM

"William Gill" <nospam@domain.invalid> wrote in message 
news:zT5Bm.56773$bP1.46142@newsfe24.iad...
> Erick T. Barkhuis wrote:
>> lawpoop:
>>
>>> Also, what do you mean by re-inventing the wheel? What 
>>> specifically
>>> are you referring to?
>>
>> Although I'm not the OP, I think it's quite obvious.
>> If he used a sequential file (CSV type), he would have to
>> - use array- or CSV application functions to filter on separate 
>> fields
>> - use a custom function for sorting data
>> - write a custom program if he wanted to add a field or change the 
>> field order/type in order to reorganize the existing data
> ... or selecting transactions over n days old that haven't been 
> answered, or completed, and so on, and so on.
>
>>
>> With a mySQL table and tools like phpMyAdmin, he can manipulate his 
>> data and file structure more easily.
> ... and if, as suggested elsewhere, the client's needs evolve adding 
> additional fields and tables isn't a major project.
>
>
> -- 
> Bill

You can just say that you have a relational database with some virtual 
tables and a 0:n relationships...
Or does this sound too much like politics? ;-)

I wouldnt even think twice of putting this into a database. So many 
advantages.


Richard 


0
Reply Richard 10/13/2009 10:18:00 PM

Richard wrote:

> You can just say that you have a relational database with some virtual 
> tables and a 0:n relationships...
> Or does this sound too much like politics? ;-)
> 
> I wouldnt even think twice of putting this into a database. So many 
> advantages.
I won't get into the politics or theology.

There is a saying that when the only tool you have is a hammer, 
everything looks like a nail.  I was afraid I might be guilty of the 
MySQL version.  :-)

Thanks for confirming it's not a tunnel vision issue.


-- 
Bill
0
Reply nospam278 (83) 10/14/2009 1:04:47 PM

William Gill wrote:

> I have a simple tracking application that seems to only require one
> table with fields that can be updated and tracked.  So far I can see no
> reason for any other tables, because even the status fields are binary
> (not done/done, yes / no, etc.).
> 
> It seams this shouldn't require a relational database, but why recreate
> the wheel writing all the data manipulation functions when MySQL has
> already done the legwork?

For something that seems rather simple, if you don't need intensive
concurrent acces why don't your choose sqlite ?

http://www.sqlite.org/whentouse.html

"Situations Where SQLite Works Well : 

Replacement for ad hoc disk files

Many programs use fopen(), fread(), and fwrite() to create and manage files
of data in home-grown formats. SQLite works particularly well as a
replacement for these ad hoc data files."

0
Reply alarch (10) 10/14/2009 1:15:07 PM

On Oct 13, 5:00=A0pm, William Gill <nos...@domain.invalid> wrote:

> ... and if, as suggested elsewhere, the client's needs evolve adding
> additional fields and tables isn't a major project.

Simply adding a field or a table isn't a major project, but splitting
out the design you posted into 'donors' and 'donations' will be a
nightmare. I guess you'll be trying to do it by name, which will never
be spelled consistently. I note that there's only one field for name
-- is that last name first, or last name last? What about titles?

Trying to identify the 'same' name in that single field, spelled any
way the data entry person felt like at that moment, is not
automateable ( no script or query will be able to match "O'Donnell,
Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
You'll have to compare every record to every other record *manually*.
Imagine how long this will take if there's more than a few dozen
donations.

And you know what isn't very difficult? Just setting up
'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
'donations' from the get-go.

0
Reply lawpoop (267) 10/14/2009 2:34:34 PM

lawpoop wrote:
> Simply adding a field or a table isn't a major project, but splitting
> out the design you posted into 'donors' and 'donations' will be a
> nightmare. I guess you'll be trying to do it by name, which will never
> be spelled consistently. I note that there's only one field for name
> -- is that last name first, or last name last? What about titles?
> 
> Trying to identify the 'same' name in that single field, spelled any
> way the data entry person felt like at that moment, is not
> automateable ( no script or query will be able to match "O'Donnell,
> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
> You'll have to compare every record to every other record *manually*.
> Imagine how long this will take if there's more than a few dozen
> donations.
> 
> And you know what isn't very difficult? Just setting up
> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
> 'donations' from the get-go.
The original question was about a single table db.  You suggestions on 
improving the fields in that table are worth implementing (though 
renaming 'amount' to 'donations' doesn't seem to buy much).  It might 
even be a good idea to add a couple address related fields to make 
sending the thank you notes a little easier. :-) However I don't see 
anything in their application that warrants additional tables.  They 
aren't going to maintain a donor list.  They just want to be sure they 
thank John Doe for his donation whether it is the same John Doe they 
thanked a month ago or another John Doe.


-- 
Bill
0
Reply nospam278 (83) 10/14/2009 3:59:21 PM

Alarch wrote:
> William Gill wrote:
> 
>> I have a simple tracking application that seems to only require one
>> table with fields that can be updated and tracked.  So far I can see no
>> reason for any other tables, because even the status fields are binary
>> (not done/done, yes / no, etc.).
>>
>> It seams this shouldn't require a relational database, but why recreate
>> the wheel writing all the data manipulation functions when MySQL has
>> already done the legwork?
> 
> For something that seems rather simple, if you don't need intensive
> concurrent acces why don't your choose sqlite ?
> 
> http://www.sqlite.org/whentouse.html
> 
> "Situations Where SQLite Works Well : 
> 
> Replacement for ad hoc disk files
> 
> Many programs use fopen(), fread(), and fwrite() to create and manage files
> of data in home-grown formats. SQLite works particularly well as a
> replacement for these ad hoc data files."
> 
Actually I am looking into SQLite, but it adds a whole new learning 
curve. :-)

-- 
Bill
0
Reply nospam278 (83) 10/14/2009 4:02:03 PM

On 10/14/2009 09:29 PM, William Gill wrote:
> lawpoop wrote:
>> Simply adding a field or a table isn't a major project, but splitting
>> out the design you posted into 'donors' and 'donations' will be a
>> nightmare. I guess you'll be trying to do it by name, which will never
>> be spelled consistently. I note that there's only one field for name
>> -- is that last name first, or last name last? What about titles?
>>
>> Trying to identify the 'same' name in that single field, spelled any
>> way the data entry person felt like at that moment, is not
>> automateable ( no script or query will be able to match "O'Donnell,
>> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
>> You'll have to compare every record to every other record *manually*.
>> Imagine how long this will take if there's more than a few dozen
>> donations.
>>
>> And you know what isn't very difficult? Just setting up
>> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
>> 'donations' from the get-go.
> The original question was about a single table db.  You suggestions on
> improving the fields in that table are worth implementing (though
> renaming 'amount' to 'donations' doesn't seem to buy much).  It might
> even be a good idea to add a couple address related fields to make
> sending the thank you notes a little easier. :-) However I don't see
> anything in their application that warrants additional tables.  They
> aren't going to maintain a donor list.  They just want to be sure they
> thank John Doe for his donation whether it is the same John Doe they
> thanked a month ago or another John Doe.

That's sad on their part; I for one would love to contact, send
greetings and, or calls for raising more funds if that NGO and, or
Religious organization needs some more for yet another great cause,
possibly by email, snail mail and, or phone.

-- 
Balwinder S "bdheeman" Dheeman        Registered Linux User: #229709
Anu'z Linux@HOME (Unix Shoppe)        Machines: #168573, 170593, 259192
Chandigarh, UT, 160062, India         Plan9, T2, Arch/Debian/FreeBSD/XP
Home: http://werc.homelinux.net/      Visit: http://counter.li.org/
0
Reply bsd.sanspam (639) 10/14/2009 4:51:44 PM

On Oct 14, 11:59=A0am, William Gill <nos...@domain.invalid> wrote:

> The original question was about a single table db. =A0... However I don't=
 see
> anything in their application that warrants additional tables.

User specs shouldn't include things like "Have 10 tables" or "have 1
table". It's not in their design specs where you find the reason to
create an additional table, it's in relational theory itself. The
reality you are modeling is one donor makes many donations, not that
each donation has a unique donor. If you have a unique donor for each
donation ( which is what you described in your CREATE TABLE ), you are
making an inaccurate model of the situation.

Now, if the users came to you and said "We have a situation where a
person can only make a single donation or our organization, ever",
then yes, that would be a reason to have a single table, from a
relational point of view ;)
0
Reply lawpoop (267) 10/14/2009 5:43:32 PM

lawpoop:
> On Oct 14, 11:59�am, William Gill <nos...@domain.invalid> wrote:
> 
> > The original question was about a single table db. �... However I don't see
> > anything in their application that warrants additional tables.
> 
> User specs shouldn't include things like "Have 10 tables" or "have 1
> table". It's not in their design specs where you find the reason to
> create an additional table, it's in relational theory itself. The
> reality you are modeling is one donor makes many donations, not that
> each donation has a unique donor. If you have a unique donor for each
> donation ( which is what you described in your CREATE TABLE ), you are
> making an inaccurate model of the situation.

I believe this is too simply put.
After all, you (and most application developers) won't have any problem 
with defining 'date of birth' as an attribute of ClubMember. The 
'reality' is, that on one date, more than one ClubMember is born. It's 
a one-to-many phenomenon. Now, you still won't make DateOfBirth an 
entity in your Data Model, are you?

It is a misconception, that the 'reality' has a certain structure, that 
developers must find and project into a data model. A structure 
(entities and relationships) is _defined_ by the analist, based upon 
the processes that are taking place and the information requirements 
that exist. Most importantly, it's the _output_ of the system that 
dictates, which structure elements (entities) are to be defined, and 
what relationships (of all existing ones) are to be selected for the 
Data Model. A Data Model is _always_ a simplified projection of the 
reality, and the requirements lead you to what to keep, and what to 
ignore. In other words: the same 'reality' can lead to different Data 
Models, depending on how the application is to be used.

====

That said, I was also surprised, that the OP insisted that Donor will 
not ever become an entity of importance ("and if it would, then it's no 
big deal to introduce the entity"). I agree with you, that introducing 
this entity (creating this table) afterwards would become a pain in the 
ass. The data conversion would be non-trivial.

====

In summary:
- the 'reality' does not dictate a separate table 'Donor', because the 
developer and the project customer decide what the reality looks like.
- in this specific case, I would rather be safe than sorry, and define 
the Donor entity (and thus a second table), anyway.
 

-- 
Erick
0
Reply Erick 10/14/2009 6:33:05 PM

On Oct 14, 2:33=A0pm, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
wrote:

>
> In summary:
> - the 'reality' does not dictate a separate table 'Donor', because the
> developer and the project customer decide what the reality looks like.
> - in this specific case, I would rather be safe than sorry, and define
> the Donor entity (and thus a second table), anyway.

Erick, you bring up a lot of good points.

I want to believe that there is a better 'relational' answer of why
you have one date per donation and not a separate table, but I don't
know what it is. My intuition is telling me something like, "I would
never want to query the table of dates by itself" -- because it's not
the set of all dates, it's the set of all donation dates ( a subset of
all dates ) -- it doesn't exist independently of donations, so there
is a one-to-one relation... or something like that.

Anywho, then how would you go about convincing a novice that `donors`
and `donations` is the right way to go? What is the safety here, and
where could the sorry arise? Your argument is that the output dictates
the database structure. Well, the OP has outlined the output, and the
Single Table meets the criteria. For what reason, then, would you make
two tables?

I can agree that the donor as an entity may never become of
importance, but if it does, there is a big mess in the Single Table,
and it's hard to clean up. I've been there before.

0
Reply lawpoop (267) 10/14/2009 7:54:33 PM

Erick T. Barkhuis wrote:
> lawpoop:
>> User specs shouldn't include things like "Have 10 tables" or "have 1
>> table". It's not in their design specs where you find the reason to
>> create an additional table, it's in relational theory itself. The
>> reality you are modeling is one donor makes many donations, not that
>> each donation has a unique donor. If you have a unique donor for each
>> donation ( which is what you described in your CREATE TABLE ), you are
>> making an inaccurate model of the situation.
> 
> I believe this is too simply put.
> After all, you (and most application developers) won't have any problem 
> with defining 'date of birth' as an attribute of ClubMember. The 
> 'reality' is, that on one date, more than one ClubMember is born. It's 
> a one-to-many phenomenon. Now, you still won't make DateOfBirth an 
> entity in your Data Model, are you?
> 
> It is a misconception, that the 'reality' has a certain structure, that 
> developers must find and project into a data model. A structure 
> (entities and relationships) is _defined_ by the analist, based upon 
> the processes that are taking place and the information requirements 
> that exist. Most importantly, it's the _output_ of the system that 
> dictates, which structure elements (entities) are to be defined, and 
> what relationships (of all existing ones) are to be selected for the 
> Data Model. A Data Model is _always_ a simplified projection of the 
> reality, and the requirements lead you to what to keep, and what to 
> ignore. In other words: the same 'reality' can lead to different Data 
> Models, depending on how the application is to be used.
> 
> ====
> 
> That said, I was also surprised, that the OP insisted that Donor will 
> not ever become an entity of importance ("and if it would, then it's no 
> big deal to introduce the entity"). I agree with you, that introducing 
> this entity (creating this table) afterwards would become a pain in the 
> ass. The data conversion would be non-trivial.
> 
> ====
> 
> In summary:
> - the 'reality' does not dictate a separate table 'Donor', because the 
> developer and the project customer decide what the reality looks like.
> - in this specific case, I would rather be safe than sorry, and define 
> the Donor entity (and thus a second table), anyway.
Before this gets too far afield.  I appreciate everything discussed thus
far, and considered many, if not all points mentioned.

The customer spec did not decide the number of tables.  Why should they
care I don't charge by the table.  Come to think of it I don't charge
them period.  Their spec was quite simple.  "We need a simple way of
tracking that we acknowledge each donation in a timely manner, and
knowing that checks or charges have cleared in a timely manner."  From 
that I did a preliminary design and was surprised that if I used a 
database (to take advantage of available functionality) I only needed
one table.  This struck me as interesting, ergo I posted.  Unfortunately
when I whipped up a poor example CREATE for purposes of this thread it 
may have misled everyone.

As stated and planned the only entity is a donation.  To elaborate, they
didn't want to track (or harass) donors, only insure every donation was 
deposited and acknowledged in a timely manner.  So from the standpoint 
of their needs; John Doe making a donation on Jan. 23 is one entity, 
when he donates again in March it's another entity (same John Doe or not).


-- 
Bill


0
Reply nospam278 (83) 10/14/2009 8:55:44 PM

William Gill wrote:

> Alarch wrote:
 
>> For something that seems rather simple, if you don't need intensive
>> concurrent acces why don't your choose sqlite ?
>> 
>> http://www.sqlite.org/whentouse.html
>> 
>> "Situations Where SQLite Works Well :
>> 
>> Replacement for ad hoc disk files
>> 
>> Many programs use fopen(), fread(), and fwrite() to create and manage
>> files of data in home-grown formats. SQLite works particularly well as a
>> replacement for these ad hoc data files."
>> 
> Actually I am looking into SQLite, but it adds a whole new learning
> curve. :-)

Not exactly, SQLite understand a very standard SQL, has implemented the most
important SQL features, and sqlite connexion functions are present in
TCL/Tk, Php, Python, Perl, and of course C/C++ and I suppose a lot of other
languages. If you are able to write a program using MySQL, you can easily
write a program for SQLite, the learning curve is not very important. But
we are on a MySQL list, so I stop here with this subject ! ;-D

0
Reply alarch (10) 10/14/2009 10:59:57 PM

William Gill wrote:
> Erick T. Barkhuis wrote:
>> lawpoop:
>>> User specs shouldn't include things like "Have 10 tables" or "have 1
>>> table". It's not in their design specs where you find the reason to
>>> create an additional table, it's in relational theory itself. The
>>> reality you are modeling is one donor makes many donations, not that
>>> each donation has a unique donor. If you have a unique donor for each
>>> donation ( which is what you described in your CREATE TABLE ), you are
>>> making an inaccurate model of the situation.
>>
>> I believe this is too simply put.
>> After all, you (and most application developers) won't have any 
>> problem with defining 'date of birth' as an attribute of ClubMember. 
>> The 'reality' is, that on one date, more than one ClubMember is born. 
>> It's a one-to-many phenomenon. Now, you still won't make DateOfBirth 
>> an entity in your Data Model, are you?
>>
>> It is a misconception, that the 'reality' has a certain structure, 
>> that developers must find and project into a data model. A structure 
>> (entities and relationships) is _defined_ by the analist, based upon 
>> the processes that are taking place and the information requirements 
>> that exist. Most importantly, it's the _output_ of the system that 
>> dictates, which structure elements (entities) are to be defined, and 
>> what relationships (of all existing ones) are to be selected for the 
>> Data Model. A Data Model is _always_ a simplified projection of the 
>> reality, and the requirements lead you to what to keep, and what to 
>> ignore. In other words: the same 'reality' can lead to different Data 
>> Models, depending on how the application is to be used.
>>
>> ====
>>
>> That said, I was also surprised, that the OP insisted that Donor will 
>> not ever become an entity of importance ("and if it would, then it's 
>> no big deal to introduce the entity"). I agree with you, that 
>> introducing this entity (creating this table) afterwards would become 
>> a pain in the ass. The data conversion would be non-trivial.
>>
>> ====
>>
>> In summary:
>> - the 'reality' does not dictate a separate table 'Donor', because the 
>> developer and the project customer decide what the reality looks like.
>> - in this specific case, I would rather be safe than sorry, and define 
>> the Donor entity (and thus a second table), anyway.
> Before this gets too far afield.  I appreciate everything discussed thus
> far, and considered many, if not all points mentioned.
> 
> The customer spec did not decide the number of tables.  Why should they
> care I don't charge by the table.  Come to think of it I don't charge
> them period.  Their spec was quite simple.  "We need a simple way of
> tracking that we acknowledge each donation in a timely manner, and
> knowing that checks or charges have cleared in a timely manner."  From 
> that I did a preliminary design and was surprised that if I used a 
> database (to take advantage of available functionality) I only needed
> one table.  This struck me as interesting, ergo I posted.  Unfortunately
> when I whipped up a poor example CREATE for purposes of this thread it 
> may have misled everyone.
> 
> As stated and planned the only entity is a donation.  To elaborate, they
> didn't want to track (or harass) donors, only insure every donation was 
> deposited and acknowledged in a timely manner.  So from the standpoint 
> of their needs; John Doe making a donation on Jan. 23 is one entity, 
> when he donates again in March it's another entity (same John Doe or not).
> 
> 

That's a dangerous assumption to make.  From my perspective, the 
client's requirements are insufficiently defined.  I'd be asking more 
questions before starting to design anything.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/15/2009 1:06:24 AM

Jerry Stuckle wrote:
> That's a dangerous assumption to make.  From my perspective, the 
> client's requirements are insufficiently defined.  I'd be asking more 
> questions before starting to design anything.
If this was a corporate, paying client I would have expended a great 
deal of time and effort defining and refining their requirements before 
doing anything else, but as it is even if I have to start all over from 
scratch it's no big deal.  This is an exception to my normal operating 
parameters.  I donate a couple hours, and they get away from keeping 
track on scraps and post-its.


-- 
Bill
0
Reply nospam278 (83) 10/15/2009 1:27:27 AM

William Gill wrote:
> Jerry Stuckle wrote:
>> That's a dangerous assumption to make.  From my perspective, the 
>> client's requirements are insufficiently defined.  I'd be asking more 
>> questions before starting to design anything.
> If this was a corporate, paying client I would have expended a great 
> deal of time and effort defining and refining their requirements before 
> doing anything else, but as it is even if I have to start all over from 
> scratch it's no big deal.  This is an exception to my normal operating 
> parameters.  I donate a couple hours, and they get away from keeping 
> track on scraps and post-its.
> 
> 

I handle my pro bono clients the same way I handle paying corporate 
clients.  I get the information up front and do it right the first time 
(at least until the requirements change).  It saves a lot of time in the 
long run.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/15/2009 1:43:37 AM

lawpoop: 
> On Oct 14, 2:33�pm, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
> wrote:
> 
> >
> > In summary:
> > - the 'reality' does not dictate a separate table 'Donor', because the
> > developer and the project customer decide what the reality looks like.
> > - in this specific case, I would rather be safe than sorry, and define
> > the Donor entity (and thus a second table), anyway.
> 
> I want to believe that there is a better 'relational' answer of why
> you have one date per donation and not a separate table, but I don't
> know what it is. My intuition is telling me something like, "I would
> never want to query the table of dates by itself" -- because it's not
> the set of all dates, it's the set of all donation dates ( a subset of
> all dates ) -- it doesn't exist independently of donations, so there
> is a one-to-one relation... or something like that.

That's fair enough. 
I think it would be equally fair to say that an entity Date doesn't 
have any attributes. That holds, as long as you really don't want any 
attributes. However, if you want to know what Donations were done on 
Easter Sunday, or on Mother's Day, it is a different issue. Then all of 
a sudden, one might consider Date an entity, worth having its own table.


> Anywho, then how would you go about convincing a novice that `donors`
> and `donations` is the right way to go? What is the safety here, and
> where could the sorry arise? Your argument is that the output dictates
> the database structure. Well, the OP has outlined the output, and the
> Single Table meets the criteria. For what reason, then, would you make
> two tables?

Exactly for the same reasons you would do so:
1. You expect that, like in many organizations, the requirements will 
expand, and business managers will _expect_ that they can come back 
after a year, and say "We have a database, don't we? Let's have a list 
of our Donors, and...." or "How many Donors offer us money more than 
once a year?". These people will look bewildered if the programmer 
replies: "won't be possible...you never mentioned that as a 
requirement, and now, it's too late."
2. For more experienced developers, it's just the gut feeling: we are 
talking about people donating money...that sounds like at least two 
entities.

> 
> I can agree that the donor as an entity may never become of
> importance, but if it does, there is a big mess in the Single Table,
> and it's hard to clean up. I've been there before.

We agree on that.
However, I can understand William as well. All they want to have is a 
list of donations and make sure the thankyou note gets out. Who are we 
to second guess how that organization is run? The organization and 
William will, together, know best what they need.

On one hand, I think ICT developers are smart people who can offer 
bright suggestions....on the other hand, I'm afreed they go too far 
once in a while (at least I do) by telling the business people:
- how to run their business
- what they Really (Have To) Want. :-)



-- 
Erick
0
Reply Erick 10/15/2009 6:08:52 AM

On Wed, 14 Oct 2009 21:43:37 -0400, Jerry Stuckle wrote:
> William Gill wrote:
>> Jerry Stuckle wrote:
>>> That's a dangerous assumption to make.  From my perspective, the 
>>> client's requirements are insufficiently defined.  I'd be asking more 
>>> questions before starting to design anything.
>> If this was a corporate, paying client I would have expended a great 
>> deal of time and effort defining and refining their requirements before 
>> doing anything else, but as it is even if I have to start all over from 
>> scratch it's no big deal.  This is an exception to my normal operating 
>> parameters.  I donate a couple hours, and they get away from keeping 
>> track on scraps and post-its.
>> 
>> 
>
> I handle my pro bono clients the same way I handle paying corporate 
> clients.  I get the information up front and do it right the first time 
> (at least until the requirements change).  It saves a lot of time in the 
> long run.

Because, oddly, the ones getting the work for free don't tend to
value the time spent on the job as much as those paying for each
precious hour... An aquaintence won't talk to free "client" on the
phone or answer their emails. He meets them in a restaurant, with the
understanding that the client picks up the check every time.

-- 
Yes, Java is so bulletproofed that to a C programmer it feels like being in a
straightjacket, but it's a really comfy and warm straightjacket, and the world
would be a safer place if everyone was straightjacketed most of the time.
			    -- Mark 'Kamikaze' Hughes
0
Reply hellsop (941) 10/15/2009 12:19:39 PM

On Thu, 15 Oct 2009 08:08:52 +0200, Erick T  Barkhuis wrote:
> That's fair enough. 
> I think it would be equally fair to say that an entity Date doesn't 
> have any attributes. That holds, as long as you really don't want any 
> attributes. However, if you want to know what Donations were done on 
> Easter Sunday, or on Mother's Day, it is a different issue. Then all of 
> a sudden, one might consider Date an entity, worth having its own table.

That's pretty much the whole point: whether some kind of data are
are mere attributes of other data or are entities on their own depends
entirely on what you want to DO with them.

Comparably, more what I do commonly is addresses: often DB designers
will think an address is an attribute of a person. That's where they
get their mail. But where they get their mail may be different from
where they live (like they have a postal service box instead of home
delivery), and different from where they work. And they'll work for
organizations that may have several buildings scattered around the city,
so many people working for the same organization will get mail at any of
several offices (often with individual routing codes then joining to
that common address), or prefer to get mail deliver to their home or
post box, but couriered mail never goes to post boxes, etc, etc. Which
ends up meaning that the database has a table for ORG, that has an 1:n
relationship with PERSON, which has a routing column and a n:n
relationship (with attributes of "preferred") with ADDRESS (that has a
purely descriptive type and flags for "courierable"), and ORG also has
n:n relationship with ADDRESS. It's far more complicate than people
expect thinking about "addresses" but that's what's necessary to model
the data in ways that's useful to the client. Phone number is almost as
bad, once you start looking at how many can be used to reach a given
person, and how likely it is that a more than one person may share a
number, who gets charged for the call, permissions to call, etc.. 

-- 
Yes, Java is so bulletproofed that to a C programmer it feels like being in a
straightjacket, but it's a really comfy and warm straightjacket, and the world
would be a safer place if everyone was straightjacketed most of the time.
			    -- Mark 'Kamikaze' Hughes
0
Reply hellsop (941) 10/15/2009 12:58:28 PM

Jerry Stuckle wrote:
> I handle my pro bono clients the same way I handle paying corporate 
> clients.  I get the information up front and do it right the first time 
> (at least until the requirements change).  It saves a lot of time in the 
> long run.
As a rule so do I.  However, "right" is often situational.  When I see 
someone struggling with scraps of paper and offer a simple solution, I 
don't tell them "In order for this to work "right" I need to do a 
complete analysis and you have to change a lot of how you operate." 
It's one thing to use the tools and skill set available to improve a 
process, and quite another to think a fairly small voluntary group is 
going to be able to operate like a multi-national corporation (even if 
they think they are).

Bottom line, I hear and appreciate everything discussed here, but the 
situational's will dictate the actual implementation.  I could go point 
by point and say "That's a good point, but that's not the case here." 
but that would appear argumentative, or defensive, and might put off 
valued input in the future.

I posted to foster a semi-philosophical discussion, and have appreciated 
the entire exchange.  However, I don't want this to descend into a 
"religious" discussion that holds that there is only one "right way" and 
all that don't follow it are infidels. :-)

One Usenet problem is striking a balance when pointing out something the 
a poster might not have considered.  Pointing it out can easily offend 
because the recipient may think "I know that, what kind of nit wit do 
you think I am."  On the other hand they might just as likely say "Oops, 
I missed that."  Conversely, someone offering advice, can easily assume 
the questioner doesn't know, or hasn't already considered a (valid) 
point, or worse just isn't listening.  It's simply not possible to 
condense a lifetime of experience (i.e. management experience in a 
multi-national corporation) or all the situational details into a Usenet 
post, so we muddle along.  In this case, I oversimplified requirements, 
and would have regretted the oversight.  However the final complexity 
will in no way approximate a "normal" business implementation.


-- 
Bill
0
Reply nospam278 (83) 10/15/2009 2:46:36 PM

Erick T. Barkhuis wrote:
> lawpoop: 
>> On Oct 14, 2:33 pm, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
>> wrote:
>>
>>> In summary:
>>> - the 'reality' does not dictate a separate table 'Donor', because the
>>> developer and the project customer decide what the reality looks like.
>>> - in this specific case, I would rather be safe than sorry, and define
>>> the Donor entity (and thus a second table), anyway.
>> I want to believe that there is a better 'relational' answer of why
>> you have one date per donation and not a separate table, but I don't
>> know what it is. My intuition is telling me something like, "I would
>> never want to query the table of dates by itself" -- because it's not
>> the set of all dates, it's the set of all donation dates ( a subset of
>> all dates ) -- it doesn't exist independently of donations, so there
>> is a one-to-one relation... or something like that.
> 
> That's fair enough. 
> I think it would be equally fair to say that an entity Date doesn't 
> have any attributes. That holds, as long as you really don't want any 
> attributes. However, if you want to know what Donations were done on 
> Easter Sunday, or on Mother's Day, it is a different issue. Then all of 
> a sudden, one might consider Date an entity, worth having its own table.
I might consider an additional table, then again I might consider a 
SELECT if date = Easter.

Even if I consider a Holiday table and Easter and Mother's Day as 
entities, I have to take into account that they fall on different days 
each year.  Does that argue a date is an attribute of both tables, and 
select when it is found in both?


-- 
Bill
0
Reply nospam278 (83) 10/15/2009 3:19:26 PM

Peter H. Coffin wrote:
> On Wed, 14 Oct 2009 21:43:37 -0400, Jerry Stuckle wrote:
>> William Gill wrote:
>>> Jerry Stuckle wrote:
>>>> That's a dangerous assumption to make.  From my perspective, the 
>>>> client's requirements are insufficiently defined.  I'd be asking more 
>>>> questions before starting to design anything.
>>> If this was a corporate, paying client I would have expended a great 
>>> deal of time and effort defining and refining their requirements before 
>>> doing anything else, but as it is even if I have to start all over from 
>>> scratch it's no big deal.  This is an exception to my normal operating 
>>> parameters.  I donate a couple hours, and they get away from keeping 
>>> track on scraps and post-its.
>>>
>>>
>> I handle my pro bono clients the same way I handle paying corporate 
>> clients.  I get the information up front and do it right the first time 
>> (at least until the requirements change).  It saves a lot of time in the 
>> long run.
> 
> Because, oddly, the ones getting the work for free don't tend to
> value the time spent on the job as much as those paying for each
> precious hour... An aquaintence won't talk to free "client" on the
> phone or answer their emails. He meets them in a restaurant, with the
> understanding that the client picks up the check every time.
> 

Overall, I would say that's true.  There are exceptions, but those are 
rather rare.

I like your acquaintance's idea - some people want to bug you several 
times a day over the smallest things :)

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/15/2009 3:29:42 PM

On Oct 15, 10:46=A0am, William Gill <nos...@domain.invalid> wrote:

> I posted to foster a semi-philosophical discussion, and have appreciated
> the entire exchange. =A0However, I don't want this to descend into a
> "religious" discussion that holds that there is only one "right way" and
> all that don't follow it are infidels. :-)

Thank you for letting us use your scenario to have a civil,
philosophical discussion! I know I drove you pretty hard, but you kept
your cool. :)

0
Reply lawpoop (267) 10/15/2009 4:17:55 PM

William Gill:
> Erick T. Barkhuis wrote:

> > ... However, if you want to know what Donations were done on 
> > Easter Sunday, or on Mother's Day, it is a different issue. Then all of 
> > a sudden, one might consider Date an entity, worth having its own table.

> I might consider an additional table, then again I might consider a 
> SELECT if date = Easter.
> 
> Even if I consider a Holiday table and Easter and Mother's Day as 
> entities, 

Hold on. That sounds strange.
Before we go into any what-ifs, or enter data modeling discussions: are 
you familiar with data modeling and terms like entities, cardinality, 
etc.?

From this:
> I have to take into account that they fall on different days 
> each year.  Does that argue a date is an attribute of both tables, and 
> select when it is found in both?
....frankly, I believe you are not quite into the topic.
Shouldn't we rather leave it as is? I think you've got several useful 
answers to your initial question, and my impression is, that you are 
very well capable of making up your own mind about the proper solution, 
now. 

-- 
Erick
0
Reply Erick 10/15/2009 5:02:37 PM

Erick T. Barkhuis wrote:
> William Gill:
>> Erick T. Barkhuis wrote:
> 
>>> ... However, if you want to know what Donations were done on 
>>> Easter Sunday, or on Mother's Day, it is a different issue. Then all of 
>>> a sudden, one might consider Date an entity, worth having its own table.
> 
>> I might consider an additional table, then again I might consider a 
>> SELECT if date = Easter.
>>
>> Even if I consider a Holiday table and Easter and Mother's Day as 
>> entities, 
> 
> Hold on. That sounds strange.
> Before we go into any what-ifs, or enter data modeling discussions: are 
> you familiar with data modeling and terms like entities, cardinality, 
> etc.?
Not an expert but I have a working familiarity.

> 
> From this:
>> I have to take into account that they fall on different days 
>> each year.  Does that argue a date is an attribute of both tables, and 
>> select when it is found in both?
> ...frankly, I believe you are not quite into the topic.
> Shouldn't we rather leave it as is? I think you've got several useful 
> answers to your initial question, and my impression is, that you are 
> very well capable of making up your own mind about the proper solution, 
> now. 
> 
Apologies, you are correct I have gotten enough to resolve the initial 
post which was more a curiosity, than a problem. I had never designed 
(in my relatively limited experience) a database that didn't require 
more than one table before.

I was responding here to the proposition that once you distinguish one 
date from another by naming some dates that changes dates from an 
attribute to an entity.  I was simply proposing that I saw no need that 
queries couldn't fill.

At the risk of using improper terminology.  In the original app a date 
only exists as an attribute of a donation.  That means that if no 
donation was made, no thank-you mailed, no funds cleared, or record 
completed on a specific date, it does not exist.  It doesn't mean Sunday 
May 10, 2009 never happened, it means it doesn't exist in this 
application.  Calling May 10, 2009 Mother's Day doesn't seem to change 
that.  Where am I wrong?

-- 
Bill
0
Reply nospam278 (83) 10/15/2009 5:50:20 PM

William Gill:

> At the risk of using improper terminology.  In the original app a date 
> only exists as an attribute of a donation.  That means that if no 
> donation was made, no thank-you mailed, no funds cleared, or record 
> completed on a specific date, it does not exist.  It doesn't mean Sunday 
> May 10, 2009 never happened, it means it doesn't exist in this 
> application.  Calling May 10, 2009 Mother's Day doesn't seem to change 
> that.  Where am I wrong?

I think your perception of what an entity is, is not fully correct.
An entity is not a collection of all possible values of some 'object', 
but it's the definition of the object itself.

Simply put: if there's anything you want to store information about 
(any object that plays a role in your model of the world), it's an 
entity. So, a CalenderDate _can_ become an entity, as soon as you want 
to keep track of several of them, and assign them attributes. 

An example: if you have a radio station which has a few dozens 
transmission days a year, you have the entity TransmissionDay, possible 
with the date as Primary Key, and several attributes. Also, you will 
have another entity, called DJ, with all available diskjockeys 
(attributes: name, sex, voice pitch, etc.)
In this example, not every date on the calendar will become a record. 
Neither will every DJ on the World be entered in this table of 
diskjockeys. Still, TransmissionDay and DJ are entities.


In your case, if you want to have attributes for certain days, Date can 
become an entity in your ER Model. Attributes may be:
- specialDay  (e.g. "Easter" or "MothersDay")
- sunRise (e.g. 05:15am)
- todaysMotto (e.g. "<your favorite motto>")

-- 
Erick
0
Reply Erick 10/15/2009 6:24:37 PM

Erick T. Barkhuis:

> I think your perception of what an entity is, is not fully correct.
> An entity is not a collection of all possible values of some 'object', 
> but it's the definition of the object itself.

For the OO developers here: I am using the word 'object' loosely, as 
you may understand. 

-- 
[just to avoid confusion]
0
Reply Erick 10/15/2009 6:28:20 PM

Erick T. Barkhuis wrote:
> An entity is not a collection of all possible values of some 'object', 
> but it's the definition of the object itself.
> 
> Simply put: if there's anything you want to store information about 
> (any object that plays a role in your model of the world), it's an 
> entity. So, a CalenderDate _can_ become an entity, as soon as you want 
> to keep track of several of them, and assign them attributes. 
I may not have been as clear, but yes I understand what an entity is.

What I don't understand is your statement "However, if you want to know 
what Donations were done on Easter Sunday, or on Mother's Day, it is a 
different issue. Then all of a sudden, one might consider Date an 
entity, worth having its own table."

How is that any different than wanting to know what donations were done 
on May 10, 2009. Unless you are saying that by defining an entity 
Holiday (with a name attribute, and a date attribute) I wouldn't need to 
know Mother's Day was May 10, 2009.

In theory I can agree one might consider Holiday, not Date, an entity, 
worth having its own table.  In reality, I see the Holiday entity effort 
work than it is worth.

Am I missing something?

-- 
Bill
0
Reply nospam278 (83) 10/15/2009 7:29:12 PM

William Gill wrote:
I should clean my glasses more often.  I missed "So, a CalenderDate 
_can_ become an entity, as soon as you want to keep track of several of 
them, and assign them attributes. "

I think we are in agreement.


-- 
Bill
0
Reply nospam278 (83) 10/15/2009 7:35:56 PM

Erick T. Barkhuis wrote:
> I think your perception of what an entity is, is not fully correct.
> An entity is not a collection of all possible values of some 'object', 
> but it's the definition of the object itself.

I said "Even if I consider a Holiday table and Easter and Mother's Day 
as entities..."

I meant "Even if I consider a Holiday table and Easter and Mother's Day 
as instances of Holiday..."


-- 
Bill
0
Reply nospam278 (83) 10/15/2009 7:44:17 PM

William Gill:

> What I don't understand is your statement "However, if you want to know 
> what Donations were done on Easter Sunday, or on Mother's Day, it is a 
> different issue. Then all of a sudden, one might consider Date an 
> entity, worth having its own table."
> 
> How is that any different than wanting to know what donations were done 
> on May 10, 2009. 


Table: MyDates
- thedate     DATE (PK) NOT NULL
- holiday     ENUM(Easter,Thankg,Xmas) 
- shortnote   VARCHAR(80)


If you want to select all donations made on March 10, 2007, you don't 
need a table MyDates, since it's sufficient to have this date as an 
attribute of Donations.

However, if you want all Donations made three days around any Holiday 
date, you may want to decide to consider MyDate an entity, keep the 
dates in a separate table, and mark those dates as holiday as 
appropriate. That way, it will be much easier to project this 'reality' 
and search for the required periodes of time around holidays.


-- 
Erick
0
Reply Erick 10/15/2009 7:46:32 PM

William Gill:
> Erick T. Barkhuis wrote:
> > I think your perception of what an entity is, is not fully correct.
> > An entity is not a collection of all possible values of some 'object', 
> > but it's the definition of the object itself.
> 
> I said "Even if I consider a Holiday table and Easter and Mother's Day 
> as entities..."
> 
> I meant "Even if I consider a Holiday table and Easter and Mother's Day 
> as instances of Holiday..."

We're on different tracks, Bill. 
I didn't consider Holiday an entity. Holiday will be an attribute of 
Date. Not the other way around.

[Although, in fact, your approach may be appropriate in certain 
'realities'. I'm not saying it's wrong, just different from what I had 
in mind.]
0
Reply Erick 10/15/2009 7:48:59 PM

Erick T. Barkhuis wrote:
> We're on different tracks, Bill. 
> I didn't consider Holiday an entity. Holiday will be an attribute of 
> Date. Not the other way around.
> 
> [Although, in fact, your approach may be appropriate in certain 
> 'realities'. I'm not saying it's wrong, just different from what I had 
> in mind.]

Table: MyDates
- thedate     DATE (PK) NOT NULL
- holiday     ENUM(Easter,Thankg,Xmas)
- shortnote   VARCHAR(80)

    vise

Table: Holidays
- thedate     DATE (PK) NOT NULL
- name        VARCHAR(20)
- shortnote   VARCHAR(80)

    or

Table: ClosedDays
- thedate     DATE (PK) NOT NULL
- name        VARCHAR(20)
- shortnote   VARCHAR(80)


I see, but now am curious about your approach.  Isn't enumerating 
holidays a little awkward and limiting?  On first pass MyDates seems to 
be limited to holidays?

I guess Holidays.name could be a pointer to a lookup table

- FK_HolidayNames TINYINT(4) NOT NULL



-- 
Bill
0
Reply nospam278 (83) 10/15/2009 8:33:19 PM

William Gill wrote:
> Erick T. Barkhuis wrote:
>> From your description, it's not clear what the situation is, and 
>> whether or not you already normalized. What does your data model look 
>> like? How many entities do you have, and what relationships exist?
>>
> Yes it is normalized with one deliberate violation (trantype).  There is 
> no customer table, or any need for one, so custname is not a lookup or 
> foreign key.
> 
> Here's the CREATE
> 
> CREATE TABLE  donations (
>   ID int(10) unsigned zerofill NOT NULL auto_increment,
>   trantype enum('CASH','CHECK','CREDIT') default 'CASH',
>   custname VARCHAR(45),
>   amount float NOT NULL,
>   trandate date NOT NULL,
>   mailed date NOT NULL,
>   fundsCleared date NOT NULL,
>   complete date NOT NULL,
>   PRIMARY KEY  (ID)
> )
> 
> 'mailed' is used to track thank you letters.
> 
> 'fundsCleared' is to track when credit or checks are deposited.
> 
> 'complete' lets them know the thank you has been sent and the funds have 
> cleared.  I could eliminate it in favor of testing for both 'mailed' and 
> 'fundsCleared' having valid dates.
> 
> At present 'complete' with dates older than n days are simply deleted, 
> but could be moved into an archive.
> 

How would you handle it if the same customer makes more than one 
donation?  In this scenario, you could combine the custname and trandate 
into a single unique key.  However, what if he makes a pledge in the 
morning and when he gets home his wife wants him to up the pledge, so he 
makes another one?

I think if best to separate the customer info from the tranaction info. 
  That would allow for a one to many relationship.  You would have at 
least two tables then.
0
Reply sheldonlg 10/15/2009 8:44:33 PM

lawpoop wrote:
> On Oct 13, 5:00 pm, William Gill <nos...@domain.invalid> wrote:
> 
>> ... and if, as suggested elsewhere, the client's needs evolve adding
>> additional fields and tables isn't a major project.
> 
> Simply adding a field or a table isn't a major project, but splitting
> out the design you posted into 'donors' and 'donations' will be a
> nightmare. I guess you'll be trying to do it by name, which will never
> be spelled consistently. I note that there's only one field for name
> -- is that last name first, or last name last? What about titles?
> 
> Trying to identify the 'same' name in that single field, spelled any
> way the data entry person felt like at that moment, is not
> automateable ( no script or query will be able to match "O'Donnell,
> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
> You'll have to compare every record to every other record *manually*.
> Imagine how long this will take if there's more than a few dozen
> donations.
> 
> And you know what isn't very difficult? Just setting up
> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
> 'donations' from the get-go.
> 

Amen.
0
Reply sheldonlg 10/15/2009 8:48:36 PM

William Gill:
> Erick T. Barkhuis wrote:

> Table: MyDates
> - thedate     DATE (PK) NOT NULL
> - holiday     ENUM(Easter,Thankg,Xmas)
> - shortnote   VARCHAR(80)
> 

> I see, but now am curious about your approach.  Isn't enumerating 
> holidays a little awkward and limiting?  On first pass MyDates seems to 
> be limited to holidays?
> 
> I guess Holidays.name could be a pointer to a lookup table
> 
> - FK_HolidayNames TINYINT(4) NOT NULL

Bill, although I mentioned this 'table' as example, I was really 
talking about data analysis, not technical design. The discussion was 
about entities, remember?

Now that we have entered a what-if, we are down to trying to find 
entities for our assumed reality. Any guess would be a good one, as 
long as we don't use terms like 'enumerating', 'pointer' and 'lookup'.

So...assume your Holiday is an entity. We also have Donor and Donation.
How would you suggest their relationships?

-- 
Erick
0
Reply Erick 10/16/2009 4:42:29 AM

>> ... and if, as suggested elsewhere, the client's needs evolve adding
>> additional fields and tables isn't a major project.
>
>Simply adding a field or a table isn't a major project, but splitting
>out the design you posted into 'donors' and 'donations' will be a
>nightmare. I guess you'll be trying to do it by name, which will never
>be spelled consistently. I note that there's only one field for name
>-- is that last name first, or last name last? What about titles?

Even *having* a table for 'donors' as well as 'donations' can be a
problem.  You are about to enter a donation.  Which donor do you
associate with it?  You have the donor's name:  John Smith.  Your
user interface takes that, says that there are 23 close matches to
that name, including John M. Smith, and John Smythe, and offers you
a choice of those or adding a new donor.  If the database doesn't
prohibit it, you also have nine separate 'John Smith' entries.
However, your database cannot prohibit the existence of nine separate
people named 'John Smith' (no middle initial), three of whom have
the same address and phone number, and do not use suffixes.  On
what basis do you make a choice?

The organization's privacy policy says it will not track addresses,
phone numbers, birth dates, nor hand out donor numbers.  Most
donations arrive by mail so you don't get to ask questions.  And
if you have direct contact with the donor, you're not supposed to
ask nosy questions.  Accept the donation, thank the person, and
unless the donor asks questions, don't engage in further conversation.
The last thing the organization wants is a long line of donors
waiting impatiently behind one who is being forced to repeatedly
spell "1387 Suppercalifragilisticexpalidocious Avenue" because he
speaks in a thick accent.

>Trying to identify the 'same' name in that single field, spelled any
>way the data entry person felt like at that moment, is not
>automateable ( no script or query will be able to match "O'Donnell,
>Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
>You'll have to compare every record to every other record *manually*.
>Imagine how long this will take if there's more than a few dozen
>donations.

You're simply pushing the problem back on the data entry person.

>And you know what isn't very difficult? Just setting up
>'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
>'donations' from the get-go.

Yes, that *IS* very difficult for the data entry person, unless
he simply creates a new donor entry for every donation.

0
Reply gordonb.08yc0 (1) 10/16/2009 6:58:32 AM

Gordon Burditt: 

> Even *having* a table for 'donors' as well as 'donations' can be a
> problem.  You are about to enter a donation.  Which donor do you
> associate with it? 

You are absolutely right. That is a problem.
But...it's a general problem, that occurs at every web shop (for 
instance). Double entries occur all the time, and that's why companies 
like SAP have modules that try to eliminate them, which isn't easy.


> You have the donor's name:  John Smith.  Your
> user interface takes that, says that there are 23 close matches to
> that name, including John M. Smith, and John Smythe, and offers you
> a choice of those or adding a new donor.  If the database doesn't
> prohibit it, you also have nine separate 'John Smith' entries.
> However, your database cannot prohibit the existence of nine separate
> people named 'John Smith'  [...]

All very true.
But are you now saying, that modeling a Donor (or Customer in similar 
applications) shouldn't be done?

If you agree that there _is_ an entity Donor, then other ways have to 
be found to eliminate duplications as much as possible. Your user 
interface description is one. Checking on e-mail addresses might be 
another. Or you could supply "account user IDs" and offer Donors to go 
through that login-procedure to donate (as web shops often do).
This won't prevent all duplicates, but improves the process.

-- 
Erick

"I plead contemporary insanity."
0
Reply Erick 10/16/2009 7:07:05 AM

>> Even *having* a table for 'donors' as well as 'donations' can be a
>> problem.  You are about to enter a donation.  Which donor do you
>> associate with it? 
>
>You are absolutely right. That is a problem.
>But...it's a general problem, that occurs at every web shop (for 
>instance). Double entries occur all the time, and that's why companies 
>like SAP have modules that try to eliminate them, which isn't easy.
>
>
>> You have the donor's name:  John Smith.  Your
>> user interface takes that, says that there are 23 close matches to
>> that name, including John M. Smith, and John Smythe, and offers you
>> a choice of those or adding a new donor.  If the database doesn't
>> prohibit it, you also have nine separate 'John Smith' entries.
>> However, your database cannot prohibit the existence of nine separate
>> people named 'John Smith'  [...]
>
>All very true.
>But are you now saying, that modeling a Donor (or Customer in similar 
>applications) shouldn't be done?

If the organization says there isn't a need to track donors, then
maybe it shouldn't be done if it causes problems (particularly
issues with their privacy policy).  Their data entry person might
be instructed to choose "add new donor" for every donation, since
your program is asking him an unanswerable question.

>If you agree that there _is_ an entity Donor, then other ways have to 
>be found to eliminate duplications as much as possible. Your user 

Which seem to involve adding more disambiguating information to the
database (which takes time and effort to maintain), which the
organization has promised NOT to track, and in any case, they claim
they don't need the information, so there's no reason to bother
entering it correctly.

>interface description is one. Checking on e-mail addresses might be 
>another. Or you could supply "account user IDs" and offer Donors to go 
>through that login-procedure to donate (as web shops often do).

The privacy policy says that donor's *NAMES* are the only personal
information kept (beyond, say, the week for a check or debit card
transaction to clear), and they cannot make donors remember account
numbers.

>This won't prevent all duplicates, but improves the process.

"Improvement" is in the eye of the beholder.  If the organization is
seen to violate their own privacy policy, there may well be no donations
to track.

0
Reply gordonb.gr2yq (1) 10/16/2009 7:28:21 AM

Gordon Burditt: 

> The privacy policy says that donor's *NAMES* are the only personal
> information kept (beyond, say, the week for a check or debit card
> transaction to clear),

Then how do they send thankyou notes?

-- 
Erick
0
Reply Erick 10/16/2009 8:33:01 AM

>> The privacy policy says that donor's *NAMES* are the only personal
>> information kept (beyond, say, the week for a check or debit card
>> transaction to clear),
>
>Then how do they send thankyou notes?

Remember the qualifier in parentheses.  You don't have to keep the
address any longer than it takes to mail the note.  That shouldn't
take a week unless this organization is getting flooded with
donations, in which case they can hire someone to handle some of
the work.  The address would be useless for disambiguating which
John Smith made this donation, since the address for older donations
isn't kept, but it could be still be used to send a note.

It is possible to copy a return address from an envelope onto a
thankyou note (with, if necessary, a quill pen) without having it
also get registered in a database.  Some donations can't have a
note sent for lack of return address (cash in a collection plate is
one obvious example).

There are a number of other questions I have about the OP's schema,
but NOT about having a donor table or not.  How do you track whether
a donation by check has cleared?  You need to somehow associate a
bounced check with a particular donation.  Some kind of transaction
ID assigned by the bank?  Same applies to debit cards.  I think
this could be taken care of by other fields in the single table,
without adding another table.
  
0
Reply gordonb.2fo20 (1) 10/16/2009 9:44:48 AM

Gordon Burditt: 
> >> The privacy policy says that donor's *NAMES* are the only personal
> >> information kept (beyond, say, the week for a check or debit card
> >> transaction to clear),
> >
> >Then how do they send thankyou notes?
> 
> Remember the qualifier in parentheses.  You don't have to keep the
> address any longer than it takes to mail the note.  That shouldn't
> take a week unless this organization is getting flooded with
> donations, in which case they can hire someone to handle some of
> the work. 

I understand what you're saying, Gordon. And it makes sense.
There's just this one _reason_ why they are keeping these data in their 
database: they want to track, afterwards, whether or not all thankyou 
notes have gone out in a timely manner.

I'm picturing this: at the end of a month, in which 200 donations have 
been made, someone gets into that database and produces a list. To his 
surprise, he notices, that 20 donors have not been sent a thankyou note.
Now what?
If those notes need to be sent immediately, they need to have the 
contact data. They also need to know how many times a thankyou note is 
missing for this person...or at least that would be nice.

Now, if that's all not necessary, why would the organization keep track 
of the donor names? They could as will leave them out, too.


[It's not the creation and sending of the notes what the database is 
for, but tracking the process and finding notes that have never been 
written]



> It is possible to copy a return address from an envelope onto a
> thankyou note (with, if necessary, a quill pen) without having it
> also get registered in a database. 

This part confuses me. Are you saying that the addresses are to be kept 
on the envelopes, in big boxes, instead of keeping them in a database? 
Apart from the physical medium, what's the difference? And what would 
be the advantage of keeping them on old, used paper?

> 
> There are a number of other questions I have about the OP's schema [...]

So do I, but I'm not going to second-guess without knowing more about 
their processes.

-- 
Erick
0
Reply Erick 10/16/2009 10:13:15 AM

Gordon Burditt wrote:
>>> ... and if, as suggested elsewhere, the client's needs evolve adding
>>> additional fields and tables isn't a major project.
>> Simply adding a field or a table isn't a major project, but splitting
>> out the design you posted into 'donors' and 'donations' will be a
>> nightmare. I guess you'll be trying to do it by name, which will never
>> be spelled consistently. I note that there's only one field for name
>> -- is that last name first, or last name last? What about titles?
> 
> Even *having* a table for 'donors' as well as 'donations' can be a
> problem.  You are about to enter a donation.  Which donor do you
> associate with it?  You have the donor's name:  John Smith.  Your
> user interface takes that, says that there are 23 close matches to
> that name, including John M. Smith, and John Smythe, and offers you
> a choice of those or adding a new donor.  If the database doesn't
> prohibit it, you also have nine separate 'John Smith' entries.
> However, your database cannot prohibit the existence of nine separate
> people named 'John Smith' (no middle initial), three of whom have
> the same address and phone number, and do not use suffixes.  On
> what basis do you make a choice?
> 
> The organization's privacy policy says it will not track addresses,
> phone numbers, birth dates, nor hand out donor numbers.  Most
> donations arrive by mail so you don't get to ask questions.  And
> if you have direct contact with the donor, you're not supposed to
> ask nosy questions.  Accept the donation, thank the person, and
> unless the donor asks questions, don't engage in further conversation.
> The last thing the organization wants is a long line of donors
> waiting impatiently behind one who is being forced to repeatedly
> spell "1387 Suppercalifragilisticexpalidocious Avenue" because he
> speaks in a thick accent.
> 
>> Trying to identify the 'same' name in that single field, spelled any
>> way the data entry person felt like at that moment, is not
>> automateable ( no script or query will be able to match "O'Donnell,
>> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
>> You'll have to compare every record to every other record *manually*.
>> Imagine how long this will take if there's more than a few dozen
>> donations.
> 
> You're simply pushing the problem back on the data entry person.
> 
>> And you know what isn't very difficult? Just setting up
>> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
>> 'donations' from the get-go.
> 
> Yes, that *IS* very difficult for the data entry person, unless
> he simply creates a new donor entry for every donation.
> 

Most organizations will provide receipts.  Receipts are required for 
larger donations for tax purposes, and any donations will be 
investigated during an audit.

Keeping the donors straight is a problem in any system.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/16/2009 11:55:19 AM

Erick T. Barkhuis wrote:
> Gordon Burditt: 
>>>> The privacy policy says that donor's *NAMES* are the only personal
>>>> information kept (beyond, say, the week for a check or debit card
>>>> transaction to clear),
>>> Then how do they send thankyou notes?
>> Remember the qualifier in parentheses.  You don't have to keep the
>> address any longer than it takes to mail the note.  That shouldn't
>> take a week unless this organization is getting flooded with
>> donations, in which case they can hire someone to handle some of
>> the work. 
> 
> I understand what you're saying, Gordon. And it makes sense.
> There's just this one _reason_ why they are keeping these data in their 
> database: they want to track, afterwards, whether or not all thankyou 
> notes have gone out in a timely manner.
> 
> I'm picturing this: at the end of a month, in which 200 donations have 
> been made, someone gets into that database and produces a list. To his 
> surprise, he notices, that 20 donors have not been sent a thankyou note.
> Now what?
> If those notes need to be sent immediately, they need to have the 
> contact data. They also need to know how many times a thankyou note is 
> missing for this person...or at least that would be nice.
> 
> Now, if that's all not necessary, why would the organization keep track 
> of the donor names? They could as will leave them out, too.
> 
> 
> [It's not the creation and sending of the notes what the database is 
> for, but tracking the process and finding notes that have never been 
> written]

Suppose Jim Jones makes a donation, says his address is 123 Main (his 
work address).  That information is entered in a field and later used to 
address a thank you.  A week later he donates again as James Jones at 
987 Elm (his home address).  That's where the second thank you goes. 
The organization can track both transactions (real world transaction 
not database transaction) for timely and complete processing.

Mr. Jones can tell where the information to address the thank you came 
from.  But if he receives two solicitations, One addressed to Jim and 
one to James he knows he had been entered into a dreaded database 
somewhere.

Not a perfect example, but if procedurally the organization never 
actively initiates contact, but only acknowledges transactions donors 
initiated (with each donation) doesn't that eliminate the concern about 
duplicates, and at least mitigate spelling and typing mistakes?

As for analyzing if and how often thankyou notes are missing for an 
individual, wouldn't a reasonably competent person get a clear enough 
picture by looking at the list of all unanswered donations over x days 
old?  That is, assuming the list isn't an overwhelming report.  In which 
case the problem is a management issue, not a database issue.


-- 
Bill
0
Reply nospam278 (83) 10/16/2009 1:04:48 PM

William Gill:
> Erick T. Barkhuis wrote:

> > [It's not the creation and sending of the notes what the database is 
> > for, but tracking the process and finding notes that have never been 
> > written]
> 
> Suppose Jim Jones makes a donation, says his address is 123 Main (his 
> work address).  That information is entered in a field 

I thought you only entered the name, not the address.

> ...and later used to address a thank you.  A week later he donates 
> again as James Jones at 987 Elm (his home address). 

Sounds like a different person to me.

> That's where the second thank you goes. 
> The organization can track both transactions (real world transaction 
> not database transaction) for timely and complete processing.

Certainly.

> 
> Mr. Jones can tell where the information to address the thank you came 
> from.  But if he receives two solicitations, One addressed to Jim and 
> one to James he knows he had been entered into a dreaded database 
> somewhere.

Why? Didn't he present himself as two different persons?
 
> Not a perfect example, but if procedurally the organization never 
> actively initiates contact, but only acknowledges transactions donors 
> initiated (with each donation) doesn't that eliminate the concern about 
> duplicates, and at least mitigate spelling and typing mistakes?

It may. But then why do you track at all, keeping the names? Once you 
know what thankyou notes were NOT sent, what is the organization going 
to do with that knowledge?

> 
> As for analyzing if and how often thankyou notes are missing for an 
> individual, wouldn't a reasonably competent person get a clear enough 
> picture by looking at the list of all unanswered donations over x days 
> old?  That is, assuming the list isn't an overwhelming report.  In which 
> case the problem is a management issue, not a database issue.

Probably true. But that doesn't have anything to do with whether or not 
the information is stored in a database, right?.
Remember, you were the one who wanted to use a database, anyway. In 
that case, why not create a database in such a way that this 
information is not to be compiled from a carton box full of paperwork 
anymore?

-- 
Erick
[who hates to see parents calling their new born twins "Jim and Joe", or 
"Mickey and Minney". That's not funny, it's stupid]
0
Reply Erick 10/16/2009 1:28:05 PM

On Oct 15, 2:24=A0pm, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
wrote:

> I think your perception of what an entity is, is not fully correct.
> An entity is not a collection of all possible values of some 'object',
> but it's the definition of the object itself.
>
> Simply put: if there's anything you want to store information about
> (any object that plays a role in your model of the world), it's an
> entity. So, a CalenderDate _can_ become an entity, as soon as you want
> to keep track of several of them, and assign them attributes.


Is there a more formal definition of an entity in the RDB domain? I
looked on wikipedia and it talked about entity in terms of classes,
but not RDBs. Is this a concept from relational theory itself, or from
diagramming relations?

0
Reply lawpoop (267) 10/16/2009 1:57:12 PM

lawpoop:

> Is there a more formal definition of an entity in the RDB domain? I
> looked on wikipedia and it talked about entity in terms of classes,
> but not RDBs. Is this a concept from relational theory itself, or from
> diagramming relations?

It has nothing to do with relational databases. An ER Diagram can be 
implemented in a hierarchical database (IMS, for instance) as well.
That's why you create an ER Model first, and then decide how to 
implement it.

http://en.wikipedia.org/wiki/Data_modeling (Paragraph "Entity 
relationship diagrams")
http://en.wikipedia.org/wiki/Entity-relationship_model


On the other hand, UML models are based on objects, not entities. Here, 
more complex relationships are modeled, like aggregation, inheritance 
and composition.

http://en.wikipedia.org/wiki/Unified_Modeling_Language#Modeling



For requirements analysis, I always use ER diagrams, because they are, 
in my opinion, quite understandable for business employees in a 
project. Object models are more complex and often too abstract to 
discuss in a general project team.


-- 
Erick
0
Reply Erick 10/16/2009 2:25:23 PM

Erick T. Barkhuis wrote:
> William Gill:
>> Erick T. Barkhuis wrote:
> 
>>> [It's not the creation and sending of the notes what the database is 
>>> for, but tracking the process and finding notes that have never been 
>>> written]
>> Suppose Jim Jones makes a donation, says his address is 123 Main (his 
>> work address).  That information is entered in a field 
> 
> I thought you only entered the name, not the address.
An oversight, later corrected, in my example.

> 
>> ...and later used to address a thank you.  A week later he donates 
>> again as James Jones at 987 Elm (his home address). 
> 
> Sounds like a different person to me.
 From the standpoint of the application it is.

> 
>> That's where the second thank you goes. 
>> The organization can track both transactions (real world transaction 
>> not database transaction) for timely and complete processing.
> 
> Certainly.
> 
>> Mr. Jones can tell where the information to address the thank you came 
>> from.  But if he receives two solicitations, One addressed to Jim and 
>> one to James he knows he had been entered into a dreaded database 
>> somewhere.
> 
> Why? Didn't he present himself as two different persons?
Yes, and if he's like me he can tell what generated each piece of mail. 
  Now if he starts getting junk mail for both of these people, he knows 
two things.  Someone sold his address, and who that someone is.

He may not make the connection, and suspect that he's in a database when 
he receives the two thankyou's, but once anyone initiates any contact 
that is not a response to a donation, he will be sure.

>> Not a perfect example, but if procedurally the organization never 
>> actively initiates contact, but only acknowledges transactions donors 
>> initiated (with each donation) doesn't that eliminate the concern about 
>> duplicates, and at least mitigate spelling and typing mistakes?
> 
> It may. But then why do you track at all, keeping the names? Once you 
> know what thankyou notes were NOT sent, what is the organization going 
> to do with that knowledge?
Thats the point we track each donation, not each donor.

If a thankyou is NOT sent, there is still a pending record containing 
(hopefully) enough information to send one. It is kept in a field on a 
pending transaction (real world not db), and has no life/meaning to us 
outside of that one transaction.

Erick, I am probably throwing you off by trying to address other posters 
who are still thinking donor is, or should be an entity (thus their 
concern about duplicates, misspelling, etc.).  Probably bad Usenet form 
on my part.  I read the thread sequentially and sometimes give a 
cumulative response where it seems most appropriate, like a discussion.

> 
>> As for analyzing if and how often thankyou notes are missing for an 
>> individual, wouldn't a reasonably competent person get a clear enough 
>> picture by looking at the list of all unanswered donations over x days 
>> old?  That is, assuming the list isn't an overwhelming report.  In which 
>> case the problem is a management issue, not a database issue.
> 
> Probably true. But that doesn't have anything to do with whether or not 
> the information is stored in a database, right?.
> Remember, you were the one who wanted to use a database, anyway. In 
> that case, why not create a database in such a way that this 
> information is not to be compiled from a carton box full of paperwork 
> anymore?
Which is what I'm doing.  In most cases it would be more sophisticated 
(and probably will end up that way here too), then the subject of this 
thread would not apply.  However, when I proposed (to them) an 
electronic "carton box full of paperwork" to replace their actual one I 
was surprised to see I needed only one entity.

Remember It could have been a text file, but I would have had to code 
all the date comparison, sorting, filtering algorithms, and such from 
scratch.

It would have been a database either way.  After all a text file of 
individual records is a database, just not a very good one.

-- 
Bill
0
Reply nospam278 (83) 10/16/2009 4:54:13 PM

Erick T. Barkhuis wrote:
> Now that we have entered a what-if, we are down to trying to find 
> entities for our assumed reality. Any guess would be a good one, as 
> long as we don't use terms like 'enumerating', 'pointer' and 'lookup'.
Before I get into it, let me explain.  I was a successful manager in 
part because I was able to bring people from a variety of disciplines 
together and have them communicate.  That meant I didn't have to be an 
authority in every discipline, just reasonably familiar with the 
concepts.  It meant having to referee and insure exchanges don't get 
bogged down by minor syntactical errors.  Everyone had to loosen up, and 
object only when something was semantically incorrect enough to be 
wrong.  Also as a teacher I would be more bound to insuring I used 
syntactically exact terminology, but as a student some latitude is 
needed during concept formation.

To me defining a field ENUM(value1,value2,value3) is enumerating the 
field.  And isn't a foreign key field just a "pointer" to instance of 
another entity?

I think I get your point, don't confuse the mechanics with the concept. 
  I don't think I do, but will watch out.

> 
> So...assume your Holiday is an entity. We also have Donor and Donation.
> How would you suggest their relationships?
A Donor makes a Donation, and Donation has a Donor.  As far as I can see 
Holiday can give additional meaning to some dates in a Donation.  I'm 
not sure what the proper way express that, or even if that's what you mean.


-- 
Bill
0
Reply nospam278 (83) 10/16/2009 5:26:41 PM

William Gill:

> I think I get your point, don't confuse the mechanics with the concept. 
>   I don't think I do, but will watch out.

It's OK. I think we understand each other.

> > So...assume your Holiday is an entity. We also have Donor and Donation.
> > How would you suggest their relationships?

> A Donor makes a Donation, and Donation has a Donor.  As far as I can see 
> Holiday can give additional meaning to some dates in a Donation.  I'm 
> not sure what the proper way express that, or even if that's what you mean.

Errm...you're replying to a relatively 'older' post in this thread. I 
think we have passed this station already.

You're going to put the whole bunch of donations into a single table, 
and that's fine. Several here have had a gut feeling, that sooner or 
later, omitting a Donor table may fire backwards. But...that's just a 
gut feeling and a loose prediction.

I sincerely hope that you won't have to have Donor overviews in the 
future. But if you do, you will probably not be able to construct the 
needed Donor table afterwards without having a hard time 'reshuffling' 
your pile of donations.


-- 
Erick
[Really curious to know how things will be a year from now]
0
Reply Erick 10/16/2009 5:36:21 PM

>>>> ... and if, as suggested elsewhere, the client's needs evolve adding
>>>> additional fields and tables isn't a major project.
>>> Simply adding a field or a table isn't a major project, but splitting
>>> out the design you posted into 'donors' and 'donations' will be a
>>> nightmare. I guess you'll be trying to do it by name, which will never
>>> be spelled consistently. I note that there's only one field for name
>>> -- is that last name first, or last name last? What about titles?
>> 
>> Even *having* a table for 'donors' as well as 'donations' can be a
>> problem.  You are about to enter a donation.  Which donor do you
>> associate with it?  You have the donor's name:  John Smith.  Your
>> user interface takes that, says that there are 23 close matches to
>> that name, including John M. Smith, and John Smythe, and offers you
>> a choice of those or adding a new donor.  If the database doesn't
>> prohibit it, you also have nine separate 'John Smith' entries.
>> However, your database cannot prohibit the existence of nine separate
>> people named 'John Smith' (no middle initial), three of whom have
>> the same address and phone number, and do not use suffixes.  On
>> what basis do you make a choice?
>> 
>> The organization's privacy policy says it will not track addresses,
>> phone numbers, birth dates, nor hand out donor numbers.  Most
>> donations arrive by mail so you don't get to ask questions.  And
>> if you have direct contact with the donor, you're not supposed to
>> ask nosy questions.  Accept the donation, thank the person, and
>> unless the donor asks questions, don't engage in further conversation.
>> The last thing the organization wants is a long line of donors
>> waiting impatiently behind one who is being forced to repeatedly
>> spell "1387 Suppercalifragilisticexpalidocious Avenue" because he
>> speaks in a thick accent.
>> 
>>> Trying to identify the 'same' name in that single field, spelled any
>>> way the data entry person felt like at that moment, is not
>>> automateable ( no script or query will be able to match "O'Donnell,
>>> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
>>> You'll have to compare every record to every other record *manually*.
>>> Imagine how long this will take if there's more than a few dozen
>>> donations.
>> 
>> You're simply pushing the problem back on the data entry person.
>> 
>>> And you know what isn't very difficult? Just setting up
>>> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
>>> 'donations' from the get-go.
>> 
>> Yes, that *IS* very difficult for the data entry person, unless
>> he simply creates a new donor entry for every donation.
>> 
>
>Most organizations will provide receipts.  

An organization can't provide year-end receipts if their privacy
policy says they will only keep *NAMES* beyond the time needed for
a transaction to complete.

Since the OP says that donor tracking isn't necessary, I'm going to
take him at his word.  That probably means that donations aren't
tax-deductible.

>Receipts are required for 
>larger donations for tax purposes, and any donations will be 
>investigated during an audit.
>
>Keeping the donors straight is a problem in any system.

So how do you do that, especially if most donations are *BY MAIL*
and you can't (by policy as well as practicality) ask for additional
details?  Or maybe they're in envelopes dropped in a collection
plate, by people who may not have brought a writing instrument with
them to fill out the form.  You can put blanks on a donation form
but that doesn't mean they get filled in (or even that the form is
used).  And with a privacy policy of keeping *NAMES* only beyond
the time necessary for the transaction to complete, you can't use
addresses, phone numbers, or credit/debit card numbers to disambiguate
duplicate donor names.

Do you think donor disamgiguation, something the organization says
is not important, is more important than a stated privacy policy?

0
Reply gordonb.0uxsy (1) 10/16/2009 5:50:52 PM

On Oct 16, 10:25=A0am, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
wrote:
> lawpoop:
>
> > Is there a more formal definition of an entity in the RDB domain? I
> > looked on wikipedia and it talked about entity in terms of classes,
> > but not RDBs. Is this a concept from relational theory itself, or from
> > diagramming relations?
>
> It has nothing to do with relational databases. An ER Diagram can be
> implemented in a hierarchical database (IMS, for instance) as well.
> That's why you create an ER Model first, and then decide how to
> implement it.
>
> http://en.wikipedia.org/wiki/Data_modeling(Paragraph "Entity
> relationship diagrams")http://en.wikipedia.org/wiki/Entity-relationship_m=
odel

I'm familiar with the concept, but to my dismay, the wikipedia article
is no more formal than my current understanding. ( "Entities can be
thought of as nouns. Examples: a computer, an employee, a song, a
mathematical theorem. Entities are represented as rectangles." So an
entity is a rectangle? The article does mention a 1976 paper by Peter
Chen -- maybe a formal definition is there. )

I guess I was thinking that there was a formal logical or mathematical
definition that would help one say "In this model, the date is an
entity, and belongs in its own table, because it meets criteria
x,y,z". By what criteria is a 'thing', such as a date,  an attribute
in one system, while being an entity in another? Without a formal
definition, it seems to me that it would come down to design
preference, an almost wholly subjective reckoning. The data architect
as an artist, I suppose.

I know that relational databases have a formal algebraic definition,
and over in comp.databases.theory, people get caught up all the time
mixing up terminology such as relation, tuple, etc. I was thinking
there was a kind of formality one could use when applying this nice
algebra to your real-world data modeling needs, but now it seems that
it's not so. Is designing relational databases nothing more than an
intuitive ( in the most common-sense, logical sense of the word )
associating of human concept to relational algebra system, much like
class-based programming intuitively associates human concepts to
complex constructions of boolean algebra?

I'm not saying that it's a wholely subjective, like abstract art or
anything like that, but is the only criteria for validity or
correctness a consideration of the outcome?


0
Reply lawpoop (267) 10/16/2009 8:16:34 PM

Gordon Burditt wrote:
>>>>> ... and if, as suggested elsewhere, the client's needs evolve adding
>>>>> additional fields and tables isn't a major project.
>>>> Simply adding a field or a table isn't a major project, but splitting
>>>> out the design you posted into 'donors' and 'donations' will be a
>>>> nightmare. I guess you'll be trying to do it by name, which will never
>>>> be spelled consistently. I note that there's only one field for name
>>>> -- is that last name first, or last name last? What about titles?
>>> Even *having* a table for 'donors' as well as 'donations' can be a
>>> problem.  You are about to enter a donation.  Which donor do you
>>> associate with it?  You have the donor's name:  John Smith.  Your
>>> user interface takes that, says that there are 23 close matches to
>>> that name, including John M. Smith, and John Smythe, and offers you
>>> a choice of those or adding a new donor.  If the database doesn't
>>> prohibit it, you also have nine separate 'John Smith' entries.
>>> However, your database cannot prohibit the existence of nine separate
>>> people named 'John Smith' (no middle initial), three of whom have
>>> the same address and phone number, and do not use suffixes.  On
>>> what basis do you make a choice?
>>>
>>> The organization's privacy policy says it will not track addresses,
>>> phone numbers, birth dates, nor hand out donor numbers.  Most
>>> donations arrive by mail so you don't get to ask questions.  And
>>> if you have direct contact with the donor, you're not supposed to
>>> ask nosy questions.  Accept the donation, thank the person, and
>>> unless the donor asks questions, don't engage in further conversation.
>>> The last thing the organization wants is a long line of donors
>>> waiting impatiently behind one who is being forced to repeatedly
>>> spell "1387 Suppercalifragilisticexpalidocious Avenue" because he
>>> speaks in a thick accent.
>>>
>>>> Trying to identify the 'same' name in that single field, spelled any
>>>> way the data entry person felt like at that moment, is not
>>>> automateable ( no script or query will be able to match "O'Donnell,
>>>> Patrick" to "patrik odonnel" or "Dr. Amir Rashid" to "Rasheed Amer" ).
>>>> You'll have to compare every record to every other record *manually*.
>>>> Imagine how long this will take if there's more than a few dozen
>>>> donations.
>>> You're simply pushing the problem back on the data entry person.
>>>
>>>> And you know what isn't very difficult? Just setting up
>>>> 'donors'  ( with `last_name`, `first_name`, `title`, etc ) and
>>>> 'donations' from the get-go.
>>> Yes, that *IS* very difficult for the data entry person, unless
>>> he simply creates a new donor entry for every donation.
>>>
>> Most organizations will provide receipts.  
> 
> An organization can't provide year-end receipts if their privacy
> policy says they will only keep *NAMES* beyond the time needed for
> a transaction to complete.
> 

Receipts do not have to be issued at year-end.  They can be issued when 
the donation is made.

> Since the OP says that donor tracking isn't necessary, I'm going to
> take him at his word.  That probably means that donations aren't
> tax-deductible.
>

That would be an invalid assumption.  Just because they don't currently 
track donors does not mean the donations are not tax deductible.

>> Receipts are required for 
>> larger donations for tax purposes, and any donations will be 
>> investigated during an audit.
>>
>> Keeping the donors straight is a problem in any system.
> 
> So how do you do that, especially if most donations are *BY MAIL*
> and you can't (by policy as well as practicality) ask for additional
> details?  Or maybe they're in envelopes dropped in a collection
> plate, by people who may not have brought a writing instrument with
> them to fill out the form.  You can put blanks on a donation form
> but that doesn't mean they get filled in (or even that the form is
> used).  And with a privacy policy of keeping *NAMES* only beyond
> the time necessary for the transaction to complete, you can't use
> addresses, phone numbers, or credit/debit card numbers to disambiguate
> duplicate donor names.
>

Many ways.  For instance, the addresses on the checks.  If paying by 
credit card, the account holder's address would be another.

Of course, if they don't provide the information, they don't get a 
receipt - but they are the ones who lose the tax deduction.

> Do you think donor disamgiguation, something the organization says
> is not important, is more important than a stated privacy policy?
> 

I think keeping track of donations is important for any organization, as 
in the case of a tax audit (either of the donor or the organization 
itself).  Additionally, many states have requirements as to what records 
must be kept.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/17/2009 1:23:26 AM

>> So how do you do that, especially if most donations are *BY MAIL*
>> and you can't (by policy as well as practicality) ask for additional
>> details?  Or maybe they're in envelopes dropped in a collection
>> plate, by people who may not have brought a writing instrument with
>> them to fill out the form.  You can put blanks on a donation form
>> but that doesn't mean they get filled in (or even that the form is
>> used).  And with a privacy policy of keeping *NAMES* only beyond
>> the time necessary for the transaction to complete, you can't use
>> addresses, phone numbers, or credit/debit card numbers to disambiguate
>> duplicate donor names.
>>
>
>Many ways.  For instance, the addresses on the checks.  If paying by 
>credit card, the account holder's address would be another.

The privacy policy says you can't hold on to addresses for longer than
it takes to process the transaction, so unless you get two donations
within a week, you can't use that information to figure out which of
several same-named donors it came from.  

Those addresses could be used for immediate (not year-end) thank-you
notes / receipts.

>Of course, if they don't provide the information, they don't get a 
>receipt - but they are the ones who lose the tax deduction.
0
Reply gordonb.0laam (1) 10/17/2009 5:30:31 AM

Gordon Burditt:
> >> So how do you do that, 
> >
> >Many ways.  For instance, the addresses on the checks.  If paying by 
> >credit card, the account holder's address would be another.
> 
> The privacy policy says ...

Gordon, you keep riding on that privacy police. Are you sure that:
a) Bill's organization has such policy, and
b) if so, that's what that policy says?


-- 
Erick
0
Reply Erick 10/17/2009 6:51:43 AM

lawpoop:
> On Oct 16, 10:25�am, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
> wrote:
> > lawpoop:
> >
> > > Is there a more formal definition of an entity in the RDB domain?

> > http://en.wikipedia.org/wiki/Data_modeling(Paragraph "Entity
> > relationship diagrams")http://en.wikipedia.org/wiki/Entity-relationship_model
> 
> I'm familiar with the concept, 

Oh, I'm sorry. I must have misunderstood the question. Upon rereading, 
you were quite clear.

> but to my dismay, the wikipedia article
> is no more formal than my current understanding. ( "Entities can be
> thought of as nouns. Examples: a computer, an employee, a song, a
> mathematical theorem. Entities are represented as rectangles." So an
> entity is a rectangle? The article does mention a 1976 paper by Peter
> Chen -- maybe a formal definition is there. )...
> 
> I'm not saying that it's a wholely subjective, like abstract art or
> anything like that, but is the only criteria for validity or
> correctness a consideration of the outcome?

It's all VooDoo, lawpoop! :-)
No, really, I haven't ever seen a formal definition of when something 
has to be named an entity. Neither have I seen a theoretical approach 
on how to formalize or even automate the process of defining a Data 
Model.

The Peter Chen article is here:
http://csc.lsu.edu/news/erd.pdf
In paragraph 2.2, he explains what entities and "entity sets" are. In 
fact, the wording in the Wikipedia is practically the same as Peter 
Chen's wording. Sounds like he, too, wants the "Human Mind" to dictate 
what is, and what is not, an entity in any given situation.

Could a data analist, while constructing a Data Model, perhaps best be 
compared with an architect, whose work can't be automated, either?


-- 
Erick
0
Reply Erick 10/17/2009 7:34:34 AM

Gordon Burditt wrote:
>>> So how do you do that, especially if most donations are *BY MAIL*
>>> and you can't (by policy as well as practicality) ask for additional
>>> details?  Or maybe they're in envelopes dropped in a collection
>>> plate, by people who may not have brought a writing instrument with
>>> them to fill out the form.  You can put blanks on a donation form
>>> but that doesn't mean they get filled in (or even that the form is
>>> used).  And with a privacy policy of keeping *NAMES* only beyond
>>> the time necessary for the transaction to complete, you can't use
>>> addresses, phone numbers, or credit/debit card numbers to disambiguate
>>> duplicate donor names.
>>>
>> Many ways.  For instance, the addresses on the checks.  If paying by 
>> credit card, the account holder's address would be another.
> 
> The privacy policy says you can't hold on to addresses for longer than
> it takes to process the transaction, so unless you get two donations
> within a week, you can't use that information to figure out which of
> several same-named donors it came from.  
> 
> Those addresses could be used for immediate (not year-end) thank-you
> notes / receipts.
> 

Who's privacy policy?  The original op indicated they were using pieces 
of paper for information.  Doesn't sound like they had anything to even 
have a privacy policy about.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/17/2009 1:19:20 PM

>> >> So how do you do that, 
>> >
>> >Many ways.  For instance, the addresses on the checks.  If paying by 
>> >credit card, the account holder's address would be another.
>> 
>> The privacy policy says ...
>
>Gordon, you keep riding on that privacy police. Are you sure that:

*POLICE*?  I didn't say anything about *police*.  Policy, yes, police, no.

>a) Bill's organization has such policy, and
>b) if so, that's what that policy says?

I'm not talking specifically about the original poster's problem.
I don't know *why* Bill said that donor tracking is unnecessary,
but he did say that.  He did not say it was because of a specific
policy.  I'm asking about a hypothetical situation that might or
might not match Bill's.  The hypothetical situation is that the
reason why donor tracking is unwanted is that a promise was made
to donors that no personal information other than their name would
be kept longer than the time needed to complete the transaction.  
That means any thank you notes/receipts have to be sent quickly
and the address/email address forgotten after that.

I do know of certain organizations that might *not* want to do donor
tracking by policy.  The Ku Klux Klan, various paramilitary groups,
and religions thought of by the government as "cults" might not
want their supporters tracked by governments or news reporters.
The "legalize drugs" political movement does not want a donor's
list used as a DEA raid target list.  Battered women's shelters
don't want their former grateful clients (some of them might be
married to police officers or government officials) tracked down
by records.

No, I'm not saying that Bill's organization has anything to do with
any of the above.

On USENET, and hopefully not with his paying clients, Jerry seems
intent on substituting what he thinks the requirements ought to be
for what the stated requirements are (if he reads the stated
requirements at all).  Donor tracking requires ongoing effort and
may involve asking unanswerable questions of the clerk opening the
mail and entering donations, like *which* John Smith?  It also 
requires entering more information to allow answering questions
like that, such as addresses, email addresses, phone numbers, etc.,
and keeping that up to date.  This effort the organization might
not want to make, for, in their opinion, no useful result.


0
Reply gordonb.eodid (1) 10/19/2009 4:33:40 AM

Gordon Burditt: 
> >> >> So how do you do that, 
> >> >
> >> >Many ways.  For instance, the addresses on the checks.  If paying by 
> >> >credit card, the account holder's address would be another.
> >> 
> >> The privacy policy says ...
> >
> >Gordon, you keep riding on that privacy police. Are you sure that:
> 
> *POLICE*?  I didn't say anything about *police*.  Policy, yes, police, no.

Sigh.
Yes, you're right, Gordon. You're right. I made an obvious typo. I 
spelled the word correctly after that.

You've got to agree: for someone, whose native tongue is not English, I 
still manage to put most characters in the proper place, most of the 
time.

> 
> >a) Bill's organization has such policy, and
> >b) if so, that's what that policy says?
> 
> I'm not talking specifically about the original poster's problem.

It appeared so, though.

> I don't know *why* Bill said that donor tracking is unnecessary,
> but he did say that. 

So, did you ask?

> The hypothetical situation is that the
> reason why donor tracking is unwanted is that a promise was made
> to donors that no personal information other than their name would
> be kept longer than the time needed to complete the transaction.  
> That means any thank you notes/receipts have to be sent quickly
> and the address/email address forgotten after that.

But that's not the case, since they want to track what thankyou notes 
had been forgotten.

> 
> I do know of certain organizations that might *not* want to do donor
> tracking by policy.  The Ku Klux Klan, various paramilitary groups,
> and religions thought of by the government as "cults" might not
> want their supporters tracked by governments or news reporters.

They are not likely to be a donor for organziations that send thankyou 
notes, anyway.

> The "legalize drugs" political movement does not want a donor's
> list used as a DEA raid target list.  Battered women's shelters
> don't want their former grateful clients (some of them might be
> married to police officers or government officials) tracked down
> by records.

They won't even give their identity, when sending a donation.


-- 
Erick
0
Reply Erick 10/19/2009 5:56:05 AM

Gordon Burditt wrote:
>>>>> So how do you do that, 
>>>> Many ways.  For instance, the addresses on the checks.  If paying by 
>>>> credit card, the account holder's address would be another.
>>> The privacy policy says ...
>> Gordon, you keep riding on that privacy police. Are you sure that:
> 
> *POLICE*?  I didn't say anything about *police*.  Policy, yes, police, no.
> 
>> a) Bill's organization has such policy, and
>> b) if so, that's what that policy says?
> 
> I'm not talking specifically about the original poster's problem.
> I don't know *why* Bill said that donor tracking is unnecessary,
> but he did say that.  He did not say it was because of a specific
> policy.  I'm asking about a hypothetical situation that might or
> might not match Bill's.  The hypothetical situation is that the
> reason why donor tracking is unwanted is that a promise was made
> to donors that no personal information other than their name would
> be kept longer than the time needed to complete the transaction.  
> That means any thank you notes/receipts have to be sent quickly
> and the address/email address forgotten after that.
> 
> I do know of certain organizations that might *not* want to do donor
> tracking by policy.  The Ku Klux Klan, various paramilitary groups,
> and religions thought of by the government as "cults" might not
> want their supporters tracked by governments or news reporters.
> The "legalize drugs" political movement does not want a donor's
> list used as a DEA raid target list.  Battered women's shelters
> don't want their former grateful clients (some of them might be
> married to police officers or government officials) tracked down
> by records.
> 
> No, I'm not saying that Bill's organization has anything to do with
> any of the above.
> 
> On USENET, and hopefully not with his paying clients, Jerry seems
> intent on substituting what he thinks the requirements ought to be
> for what the stated requirements are (if he reads the stated
> requirements at all).  Donor tracking requires ongoing effort and
> may involve asking unanswerable questions of the clerk opening the
> mail and entering donations, like *which* John Smith?  It also 
> requires entering more information to allow answering questions
> like that, such as addresses, email addresses, phone numbers, etc.,
> and keeping that up to date.  This effort the organization might
> not want to make, for, in their opinion, no useful result.
> 
> 

No, I'm not substituting what I think the requirements ought to be.  But 
after over 40 years of programming, the first thing I know is that 
requirements change.  The next thing I can do is make some pretty 
educated guesses as to where those changes will lead.  And when doing 
that, I look at how I can accommodate those changes with no increase in 
cost to the client now.

Once they have a database, wanting to track by donor would be a common 
addition.  Splitting the database across two tables instead of one isn't 
going to cost anything extra now - but would cost significantly more 
later.

This is one of the reasons I get recurring business.  I think ahead.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/19/2009 10:55:55 AM

On Mon, 19 Oct 2009 06:55:55 -0400, Jerry Stuckle wrote:
> No, I'm not substituting what I think the requirements ought to be.  But 
> after over 40 years of programming, the first thing I know is that 
> requirements change.  The next thing I can do is make some pretty 
> educated guesses as to where those changes will lead.  And when doing 
> that, I look at how I can accommodate those changes with no increase in 
> cost to the client now.

Totally agree. Substituting "cost to the client" with "work on my part",
since I'm unfortunately not in a position where those go hand-in-hand...

> Once they have a database, wanting to track by donor would be a common 
> addition.  Splitting the database across two tables instead of one isn't 
> going to cost anything extra now - but would cost significantly more 
> later.

And, in the world of the doner, the difference between "we don't retain
the address" and "we don't contact you again unless you tell us it's
okay" is both moot and confusing. 

-- 
2. My ventilation ducts will be too small to crawl through.
                --Peter Anspach's list of things to do as an Evil Overlord
0
Reply hellsop (941) 10/19/2009 12:59:28 PM

Erick T. Barkhuis wrote:
> Sigh.
> Yes, you're right, Gordon. You're right. I made an obvious typo. I 
> spelled the word correctly after that.
Erick,
Unfortunately many of us are getting tired of all kinds of "societal 
know it all's" dictating how things "should" be done.  The common 
colloquialism is to refer to the insinuators as "police", PC Police, or 
Etiquette Police, and so on.

I'm sure Gordon was reacting to the thought of being lumped in with the 
social police state.

As you can see, the resulting hypersensitivity is why people react so 
negatively when they think their name and address may end up in a list 
or database somewhere, and why conversely an organization might 
proactively shun such tracking mechanisms.  They feel that thee 
possibility of scaring away potential donors outweighs maintaining a 
donor list. Besides the logistics and current lack of sophistication of 
the collection mechanisms is incompatible with the requisite data 
collection.  In this case think of the name and address information 
being placed on a mailing label that is kept by the organization until 
it is placed on the acknowledgment envelope.  It is maintained by the 
organization only as long as needed then returned it to the owner. 
That's why minor spelling errors, differentiating between Jim and James, 
or one Smith from another is irrelevant.


-- 
Bill
0
Reply nospam278 (83) 10/19/2009 1:10:19 PM

Gordon Burditt wrote:
> On USENET, and hopefully not with his paying clients, Jerry seems
> intent on substituting what he thinks the requirements ought to be
> for what the stated requirements are (if he reads the stated
> requirements at all).  Donor tracking requires ongoing effort and
> may involve asking unanswerable questions of the clerk opening the
> mail and entering donations, like *which* John Smith?  It also 
> requires entering more information to allow answering questions
> like that, such as addresses, email addresses, phone numbers, etc.,
> and keeping that up to date.  This effort the organization might
> not want to make, for, in their opinion, no useful result.
Jerry and others me asked the same questions I had already asked myself. 
  I appreciated his question, and he accepted that it was a considered, 
deliberate decision.

It isn't possible, or desirable to publish here the entire user spec or 
all the situational details involved, so some assumptions need to be 
made.  When that causes someone to wonder if something has been 
overlooked, it's appropriate to ask.  It is even permissible to 
editorialize a little.  I don't know how Jerry is in client meetings, 
nor do I care.  I have been in enough meetings where some participants 
tried to dictate the needs of others, but I don't equate a newsgroup 
with those situations. There are lots of things I will say or infer 
here, that I would bite my tongue elsewhere.  That doesn't mean I 
wouldn't ask or point out possible oversights and omissions, or not 
expect the same from others, but when it gets to the point of "asked and 
answered" it's time to move on.


-- 
Bill
0
Reply nospam278 (83) 10/19/2009 1:37:34 PM

William Gill: 
> ....That doesn't mean I 
> wouldn't ask or point out possible oversights and omissions, or not 
> expect the same from others, but when it gets to the point of "asked and 
> answered" it's time to move on.

What? 
After all has been said and done, it's time for senseless bickering! 
Are you saying that such fun isn't allowed anymore?
:-)

-- 
SCNR
Erick
0
Reply Erick 10/19/2009 2:03:07 PM

On Oct 17, 3:34=A0am, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
wrote:

> It's all VooDoo, lawpoop! :-)
> No, really, I haven't ever seen a formal definition of when something
> has to be named an entity. Neither have I seen a theoretical approach
> on how to formalize or even automate the process of defining a Data
> Model.

So then, the practical criteria for database design is, "If we do it
this way, then a, b, and c will happen. If we do it the other way, x,
y, and z will happen. I submit that a, b, and c are much preferable to
x, y, and z." In other words, one can't divine from the "reality of
the situation" or the situation by itself; one need define output
goals and available inputs, and design the database according to those
resources and needs. You can't just say, "Well, you have donors, you
probably need a donors table" -- the only way to make a good argument
for a donors table is "If you ever want to have feature X ( a year-end
statement ), you'll need a donors table".

Am I thinking about this correctly? So it's sort of an engineering
model ( "Here's the possbilities, and their tradeoffs" ) rather than a
mathematical model ( "Given this set of facts, this is right, and this
is wrong.")

>
> The Peter Chen article is here:http://csc.lsu.edu/news/erd.pdf
> In paragraph 2.2, he explains what entities and "entity sets" are. In
> fact, the wording in the Wikipedia is practically the same as Peter
> Chen's wording. Sounds like he, too, wants the "Human Mind" to dictate
> what is, and what is not, an entity in any given situation.

Well, that makes sense. Of course, a computer can't figure this out on
its own. I was thinking that there was at the start some intuitive
human-made decisions, but then at some point, one could say "If you
have this, this, and this, then you need to have this, because
otherwise {insert mathe-logical mumbo-jumbo here}". That there could
be derived implications of the model people were creating.

I was thinking about it over the weekend, and it occurs to me that an
entity has an independent existence within the model, not depending on
anything. For instance, in the donations model, "date" depends
entirely on there being a donation -- without a donation, there's no
date -- so therefore, date is not an entity. However, donations depend
solely on having been donated -- they have an independent existence,
or they depend solely on themselves.

>
> Could a data analist, while constructing a Data Model, perhaps best be
> compared with an architect, whose work can't be automated, either?

This came up on a discussion on slashdot a while ago, and I think
architect is the best metaphor. It's not math, and it's not art. You
are constrained by the math, but that nonetheless leaves open a huge
domain of possibility in which to make a creative solution.

0
Reply lawpoop (267) 10/19/2009 2:17:15 PM

lawpoop: 
> On Oct 17, 3:34�am, Erick T. Barkhuis <erick.use-...@ardane.c-o-m>
> wrote:
> 
> > It's all VooDoo, lawpoop! :-)
> > No, really, I haven't ever seen a formal definition of when something
> > has to be named an entity. Neither have I seen a theoretical approach
> > on how to formalize or even automate the process of defining a Data
> > Model.
> 
> So then, the practical criteria for database design is, "If we do it
> this way, then a, b, and c will happen. If we do it the other way, x,
> y, and z will happen. I submit that a, b, and c are much preferable to
> x, y, and z." In other words, one can't divine from the "reality of
> the situation" or the situation by itself; one need define output
> goals and available inputs, and design the database according to those
> resources and needs.^

Exactly right.
> 
> Am I thinking about this correctly? So it's sort of an engineering
> model ( "Here's the possbilities, and their tradeoffs" ) rather than a
> mathematical model ( "Given this set of facts, this is right, and this
> is wrong.")

Yes, that's it. 
I see this more like an architecture, where pros and cons are weighed 
on a constant basis.


> I was thinking about it over the weekend, and it occurs to me that an
> entity has an independent existence within the model, not depending on
> anything. For instance, in the donations model, "date" depends
> entirely on there being a donation -- without a donation, there's no
> date -- so therefore, date is not an entity. However, donations depend
> solely on having been donated -- they have an independent existence,
> or they depend solely on themselves.

Not quite, I believe. 
For instance: customers, orders and bills. Without customers, there are 
no orders. Without orders, no bills. Yet, every web shop will have 
entities Customer and Order (where Order is a relationship entity 
between Customer and Artikel). Bill may, or may not be an entity. If an 
Order can lead to multiple Bills, or a Bill is set up for multiple 
Orders, then yes, a Bill is certainly an entity. But if one Order leads 
to exactly one Bill all the time, Bill and Order may be exactly the 
same entity, with only a different status over time.

OK, it's VooDoo. :-)

-- 
Erick
0
Reply Erick 10/19/2009 2:32:11 PM

William Gill wrote:
> Gordon Burditt wrote:
>> On USENET, and hopefully not with his paying clients, Jerry seems
>> intent on substituting what he thinks the requirements ought to be
>> for what the stated requirements are (if he reads the stated
>> requirements at all).  Donor tracking requires ongoing effort and
>> may involve asking unanswerable questions of the clerk opening the
>> mail and entering donations, like *which* John Smith?  It also 
>> requires entering more information to allow answering questions
>> like that, such as addresses, email addresses, phone numbers, etc.,
>> and keeping that up to date.  This effort the organization might
>> not want to make, for, in their opinion, no useful result.
> Jerry and others me asked the same questions I had already asked myself. 
>  I appreciated his question, and he accepted that it was a considered, 
> deliberate decision.
> 
> It isn't possible, or desirable to publish here the entire user spec or 
> all the situational details involved, so some assumptions need to be 
> made.  When that causes someone to wonder if something has been 
> overlooked, it's appropriate to ask.  It is even permissible to 
> editorialize a little.  I don't know how Jerry is in client meetings, 
> nor do I care.  I have been in enough meetings where some participants 
> tried to dictate the needs of others, but I don't equate a newsgroup 
> with those situations. There are lots of things I will say or infer 
> here, that I would bite my tongue elsewhere.  That doesn't mean I 
> wouldn't ask or point out possible oversights and omissions, or not 
> expect the same from others, but when it gets to the point of "asked and 
> answered" it's time to move on.
> 
> 

Yes, I agree you shouldn't try to publish the entire spec here.  As for 
how I am in client meetings - I don't dictate.  I ask questions.  Some 
of them are leading questions, I will admit.  However, they are aimed at 
gathering as much information as possible, and ensuring I understand the 
nature of the client's needs (which he/she often don't understand 
themselves).

As for your specific instance, I still think I would place donors in one 
table and donations in another (the client really doesn't care whether 
it is one or two tables).  However, I am having to say that without the 
benefit of the full spec, any discussions with the customer or even 
knowing the customer.  So I would have to say if you think one table is 
the right thing to do, then by all means, do it.  There isn't anything 
wrong with a database which contains only one table.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
Reply jstucklex (14379) 10/19/2009 3:00:05 PM

Erick T. Barkhuis wrote:

> What? 
> After all has been said and done, it's time for senseless bickering! 
> Are you saying that such fun isn't allowed anymore?
> :-)
Senseless bickering on Usenet?  How ludicrous!  :-)


-- 
Bill
0
Reply nospam278 (83) 10/24/2009 3:58:20 PM

76 Replies
58 Views

(page loaded in 0.469 seconds)


Reply: