Changing Linked Table Name

J

Jack Leach

Access 2003

Every once in a while I decide to change the name of a table in a standard
fe/be setup. Occasionally the name change encompasses a number of related
tables. The process is...

1) go to the BE and change the actual table name
2) go to the FE and relink the changed tables
3) go to the queries and reconstruct any related queries
4) go to the forms and reselect the reconstructed queries/tables
5) go to the modules and run a find/replace

Obviously, this is quite time consuming. I don't expect to be able to
change anything about step 5, but is there some easier way to do this so that
access takes care of this manual relinking for me?

I have half a mind to write a module that, given passed table names, will
relink the tables, search all querydefs with the old tables and set them to
the new tables, search all the forms and reset the sources programmatically,
but I was hoping that there might be some easier method.

Any ideas? Thanks in advance...




--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)
 
J

Jack Leach

Well!! I'll be! That certainly did the trick. What an amazing set of tools.

Thanks a million Crystal!

--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)
 
C

Crystal (strive4peace)

you're welcome, Jack ;) happy to help

.... you just have to watch out for short names that might be
included in something longer ...

make sure to compile each time you make a change that
involves code. While that won't pick everything up, it
will help to find unexpected results <smile>

"What an amazing set of tools."

I am sure Vincent (skrol29) would love to hear your feedback
....skrol29dev at gmail.com

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access

*
:) have an awesome day :)
*
 
D

David C. Holley

There are those that would suggest that the need to change a table name is
an indication of a poor design at the outset.
 
C

Crystal (strive4peace)

Hi David,

Personally I disagree that changing names is a sign of poor
design. When I first design an application, I try very hard
to create the final names -- but there are often times where
I think of something better and change them.

I also work with applications that other folks designed, a
lot! Changing names is something I tend to do quite a bit
-- in those cases, usually so much changes that we rewrite
the code and redesign forms/reports too -- and your
statement would surely be applicable, but changed names
don't really matter.

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*
 
D

David C. Holley

But how much time had you spent having to re-code as the result of changing
a single file name?

Furthermore, if you have a table that's containing customer information, why
isn't is name 'Customers' or 'CustomerInformation' to begin with? The table
name should follow the contents of the table.
 
G

Gina Whipp

David,

While it's not so much the changing table name... I have inherited some
databases that in order for me to get any work done I first had to make the
table names something comprehensive... It's the creating a new table for
each year or each month that is the sign of *bad* design.

--
Gina Whipp

"I feel I have been denied critical, need to know, information!" - Tremors
II

http://www.regina-whipp.com/index_files/TipList.htm
 
J

Jack Leach

Some applications do have a tendancy to evolve. Not everyone has the luxury
of knowing exactly what they are going to need 10 years from now, and when
the time comes to improve upon an old design, often things aren't previously
what would be ideal presently.


--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)
 
C

Crystal (strive4peace)

Hi David,

first, I wish to quote Jack, who hit the mail on the head,

~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Some applications do have a tendency to evolve. Not
everyone has the luxury of knowing exactly what they are
going to need 10 years from now, and when the time comes to
improve upon an old design, often things aren't previously
what would be ideal presently."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

caveat:
I would change "Some applications do have a tendency to
evolve." to -->
"All applications have a tendency to evolve."
.... we are always learning better ways (that is human nature).

~~~
Yes! "and when the time comes to improve upon an old
design", it will conserve time if the design follows logic.
Revisiting an application you worked on a few years ago is
not unrealistic. If you design for the future, what you
build will endure.

Part of ensuring success is to leave your creation in the
capable hands of another. This means that it will have
evolved (changed) when you next see it ... but hopefully you
will have passed the baton well and the modifications will
be intuitive. With luck, later modifications will be
commented and/or will come to you -- so you can ensure the
integrity of the original design as you build more upon it.

*****

"The table name should follow the contents of the table."

absolutely! ... and those contents (fields) should describe
the noun/event that the table name represents ... visualize...

"changing a single file name"

file names are not the issue (but I suspect you know that
and meant to say 'tables') -- it is changing table names ...
which usually extended to field names ... and these are used
all over the place: in (query) SQL, form/report
RecordSource, control ControlSource and RowSource, Macros
and Modules, ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Furthermore, if you have a table that's containing customer
information, why isn't is name 'Customers' or
'CustomerInformation' to begin with? The table name should
follow the contents of the table."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Yes, it is true that a table name should best describe what
it contains. Perhaps, however, after you start coding, you
realize that "CustomerInformation" is too much to type and
you want to shorten the name to "Customers" ... or you
decide to shorten the PK (Primary Key) from CustomerID to
CustID - to conserve space on the relationship diagram and
type less. These name changes have nothing to do with
design, they are simply better names for your latest logic
and purpose.

Access is the only application in the Office Suite where
object names (and data types!) are important. If your forte
is something besides Access (like Excel), I can understand
why you don't see the significance of naming to follow logic
.... not to pick on you (and please don't take it this way as
this is common thinking so I wish to make a point) ...

"CustomerInformation", for instance, is not logical as
everything in a database is 'information' or 'data' or
'tables' or 'lists' or .... As you use the database more,
you will better see these subtleties. Extra words, phrases,
and characters should be eliminated

My general rule is to keep names concise yet descriptive.
When you use the best logic (whatever is your current
thought), then you don't have to look names up (even if time
goes by) because the name fits and is consistent ... when
you are writing code, this is important.

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*


Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*
 
C

Crystal (strive4peace)

Hi Gina,

"It's the creating a new table for each year or each month
that is the sign of *bad* design."

Thank you. Absolutely. Often, folks will convert data into
Access for a month duration. Then when it is time for the
next import, the data is imported to a separate table
instead of modifying structure in the first table and
appending. After while, this becomes a habit.

One cannot simply convert data into Access without thought.
This leads to bad design ... or no design at all.

"I have inherited some databases that in order for me to get
any work done I first had to make the table names something
comprehensive"

oh how I hear you <smile>

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*
 
D

David C. Holley

Even though applications do evolve, you're not going to start storing PART
information in an ORDERS table. Explain to me why if 'ORDERS' accurately
describes the contents of a table that it would have to be renamed.

Furthermore (and more importantly), even if a more descriptive name is
developed such as 'CUSTOMER ORDERS', it begs the question if there is a
specific BUSINESS NEED to change the table name. Even if the table name is
mispelled as in 'ORDRES' , the mispelling does not rise to the level of
BUSINESS NEED and thus warrant a name change.

Even if you go to a Header/Detail model for customer orders where the
content of the ORDERS table will be the order detail, it does not
neccessarily warrant changing the name from 'ORDERS' to 'ORDER DETAILS'.
Yes, ORDER DETAILS in that scenario would be [more] descriptive, however it
all comes back to BUSINESS NEED. Will the DB still function if the table is
named 'ORDERS' although 'ORDER DETAILS' is more specific? Do you choose to
spend the time and effort to rename the table or is it just a matter of the
developer(s) knowing that ORDERS is actually ORDER DETAILS? Which costs more
in terms of labor? Will the DB cease to function if the table isn't
renamed?
 
D

David C. Holley

Crystal (strive4peace) said:
Hi David,

first, I wish to quote Jack, who hit the mail on the head,

~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Some applications do have a tendency to evolve. Not everyone has the
luxury of knowing exactly what they are going to need 10 years from now,
and when the time comes to improve upon an old design, often things aren't
previously what would be ideal presently."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

caveat:
I would change "Some applications do have a tendency to evolve." to -->
"All applications have a tendency to evolve."
... we are always learning better ways (that is human nature).

~~~
Yes! "and when the time comes to improve upon an old design", it will
conserve time if the design follows logic. Revisiting an application you
worked on a few years ago is not unrealistic. If you design for the
future, what you build will endure.

There no truer test of a solid fundamental design than when it is serves a
situation for which it was never intended with a minimum of change.
Part of ensuring success is to leave your creation in the capable hands of
another. This means that it will have evolved (changed) when you next see
it ... but hopefully you will have passed the baton well and the
modifications will be intuitive. With luck, later modifications will be
commented and/or will come to you -- so you can ensure the integrity of
the original design as you build more upon it.

*****

An application is comprised of two basic components - the conceptual data
model on which it is built and the functionality that acts upon the data. If
the design of the data model is solid, it will NOT dramatically evolve over
time. If you were to compare a model of an order done twenty years ago to
that done last week, you'll see that the models very closely resemble each
other. That's not to say that additional characteristics won't be added to
the data model over time,however the changes will be minimal.

Functionality, on the other hand, is a whole other matter.
"The table name should follow the contents of the table."

absolutely! ... and those contents (fields) should describe the noun/event
that the table name represents ... visualize...

"changing a single file name"

Typo, however in some DB's tables are referred to as files, infact they are
individual files.
file names are not the issue (but I suspect you know that and meant to say
'tables') -- it is changing table names ... which usually extended to
field names ... and these are used all over the place: in (query) SQL,
form/report RecordSource, control ControlSource and RowSource, Macros and
Modules, ...

There is no requirement that a field name carry over the table name. Yes, it
does make it easier to identify which table a field is being pulled from in
a query, however I'm comfortable saying that most DB's do allow a field name
to be qualified as in [tablename].[fieldname]. If you google around naming
standards, you'll see that there are standards out there that state
explicity that the table name should not be carried over to the field name.
As such adding the table name to a field name becomes redundant because the
fully qualified field name would be [Customers].[CustomersAddressLine1].
~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Furthermore, if you have a table that's containing customer information,
why isn't is name 'Customers' or 'CustomerInformation' to begin with? The
table name should follow the contents of the table."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Yes, it is true that a table name should best describe what it contains.
Perhaps, however, after you start coding, you realize that
"CustomerInformation" is too much to type and you want to shorten the name
to "Customers" ... or you decide to shorten the PK (Primary Key) from
CustomerID to CustID - to conserve space on the relationship diagram and
type less. These name changes have nothing to do with design, they are
simply better names for your latest logic and purpose.

See my prior post. Also, some naming standards do not allow for
abbreviations to ensure that consistency. If multiple developers are working
on a database, one might use CustomerID in one table while another uses
CustId in another. Furthermore, if you adopt a standard that disallows
abbreviations requiring fields named AddressLine1 example (as opposed to
AddLine1), its actually easier to work with over all, even though there's
more typing envovled because it reduces the need for the developer to have
to 'think' about the abbreviations. For example, is it CreditCardNumber,
CCNo, CCNumb, CardNo? Yes a developer familar with the DB will know it,
however a new developer will have to learn it.

You should not be making a decision about a table name based on such petty
factors as having to type too much or space in the relationship diagram. AND
YES THOSE ARE PETTY REASONS. When you type 50 WPM, there's not much
difference between typing 10 characters versus 20. Also, most people should
be able to figure out a field name if its truncated in a diagram since the
point of a diagram is a high-level view to begin with. If you need the
specific name, you can look it up. The decision to name a table should be
solidly based on the purpose of the table. If table name lengths are an
issue, that's an issue to address when you initially create the tables.
Access is the only application in the Office Suite where object names (and
data types!) are important. If your forte is something besides Access
(like Excel), I can understand why you don't see the significance of
naming to follow logic ... not to pick on you (and please don't take it
this way as this is common thinking so I wish to make a point) ...

That is NOT a true statement. Can you name an object using a reserved
keyword? If you're developing a VBA module in Excel would name the objects
a, b, s to represent the application, workbook and worksheet object
respectively? Commonly accepted programming standards dictate that code can
be easily read by someone not previously familar with the code.

As someone that's worked with Access for 12 years now, I am personally
offended that you think that I 'don't see the significance of naming to
follow logic'. That is *exactly* my point in my original post. If you name a
table based on the content of the table, there is no real *need* to rename
it. There is a difference between *need* and *nice to do*. Yes,
'CustomerInformation' may be technically redundant, but again that was used
solely as an example along with 'Customer'. Reread the post for the meaning.
"CustomerInformation", for instance, is not logical as everything in a
database is 'information' or 'data' or 'tables' or 'lists' or .... As you
use the database more, you will better see these subtleties. Extra words,
phrases, and characters should be eliminated

If you reread the post, you'll see that I used 'Customers' and
'CustomerInformation' as sample names for a table containing customer data.
The point being that you're not going to name the same table something like
'CI'. The logic being that the average person can look at the table name and
deduce the contents therein. Yes, the 'Information' in 'CustomerInformation'
may be redundant, but my point was not to advocate a specific name, just to
provide an example.
"Furthermore, if you have a table that's containing customer information,
why isn't is name 'Customers' or 'CustomerInformation' to begin with?

Also there is a difference between logical, redundant and valid. I would
suggest that 'CustomerInformation' is at once all three as it is consistent
with the content of the table, it is redundant because its all information,
and it is valid because it accurately describes the records. I might add
that if the database is named CustomerMasterData.MDB, following your
statement a table with the actual information should not be named
'Customers' as all of the data is the obviously Customers to begin with. So
what would you name the table?
 
D

David C. Holley

I might also add that the true cost of software is not the amount of money
it takes to build it, but rather to maintain it. Does the average person
think in terms of abbreviations or whole words such as CustId versus
CustomerId? I choose to think that later. As such that it my choice and if
you choose to disagree, that is your choice as well.
 
C

Crystal (strive4peace)

Hi David,

you bring up some good points :)

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*

Crystal (strive4peace) said:
Hi David,

first, I wish to quote Jack, who hit the mail on the head,

~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Some applications do have a tendency to evolve. Not everyone has the
luxury of knowing exactly what they are going to need 10 years from now,
and when the time comes to improve upon an old design, often things aren't
previously what would be ideal presently."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

caveat:
I would change "Some applications do have a tendency to evolve." to -->
"All applications have a tendency to evolve."
... we are always learning better ways (that is human nature).

~~~
Yes! "and when the time comes to improve upon an old design", it will
conserve time if the design follows logic. Revisiting an application you
worked on a few years ago is not unrealistic. If you design for the
future, what you build will endure.

There no truer test of a solid fundamental design than when it is serves a
situation for which it was never intended with a minimum of change.
Part of ensuring success is to leave your creation in the capable hands of
another. This means that it will have evolved (changed) when you next see
it ... but hopefully you will have passed the baton well and the
modifications will be intuitive. With luck, later modifications will be
commented and/or will come to you -- so you can ensure the integrity of
the original design as you build more upon it.

*****

An application is comprised of two basic components - the conceptual data
model on which it is built and the functionality that acts upon the data. If
the design of the data model is solid, it will NOT dramatically evolve over
time. If you were to compare a model of an order done twenty years ago to
that done last week, you'll see that the models very closely resemble each
other. That's not to say that additional characteristics won't be added to
the data model over time,however the changes will be minimal.

Functionality, on the other hand, is a whole other matter.
"The table name should follow the contents of the table."

absolutely! ... and those contents (fields) should describe the noun/event
that the table name represents ... visualize...

"changing a single file name"

Typo, however in some DB's tables are referred to as files, infact they are
individual files.
file names are not the issue (but I suspect you know that and meant to say
'tables') -- it is changing table names ... which usually extended to
field names ... and these are used all over the place: in (query) SQL,
form/report RecordSource, control ControlSource and RowSource, Macros and
Modules, ...

There is no requirement that a field name carry over the table name. Yes, it
does make it easier to identify which table a field is being pulled from in
a query, however I'm comfortable saying that most DB's do allow a field name
to be qualified as in [tablename].[fieldname]. If you google around naming
standards, you'll see that there are standards out there that state
explicity that the table name should not be carried over to the field name.
As such adding the table name to a field name becomes redundant because the
fully qualified field name would be [Customers].[CustomersAddressLine1].
~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Furthermore, if you have a table that's containing customer information,
why isn't is name 'Customers' or 'CustomerInformation' to begin with? The
table name should follow the contents of the table."
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Yes, it is true that a table name should best describe what it contains.
Perhaps, however, after you start coding, you realize that
"CustomerInformation" is too much to type and you want to shorten the name
to "Customers" ... or you decide to shorten the PK (Primary Key) from
CustomerID to CustID - to conserve space on the relationship diagram and
type less. These name changes have nothing to do with design, they are
simply better names for your latest logic and purpose.

See my prior post. Also, some naming standards do not allow for
abbreviations to ensure that consistency. If multiple developers are working
on a database, one might use CustomerID in one table while another uses
CustId in another. Furthermore, if you adopt a standard that disallows
abbreviations requiring fields named AddressLine1 example (as opposed to
AddLine1), its actually easier to work with over all, even though there's
more typing envovled because it reduces the need for the developer to have
to 'think' about the abbreviations. For example, is it CreditCardNumber,
CCNo, CCNumb, CardNo? Yes a developer familar with the DB will know it,
however a new developer will have to learn it.

You should not be making a decision about a table name based on such petty
factors as having to type too much or space in the relationship diagram. AND
YES THOSE ARE PETTY REASONS. When you type 50 WPM, there's not much
difference between typing 10 characters versus 20. Also, most people should
be able to figure out a field name if its truncated in a diagram since the
point of a diagram is a high-level view to begin with. If you need the
specific name, you can look it up. The decision to name a table should be
solidly based on the purpose of the table. If table name lengths are an
issue, that's an issue to address when you initially create the tables.
Access is the only application in the Office Suite where object names (and
data types!) are important. If your forte is something besides Access
(like Excel), I can understand why you don't see the significance of
naming to follow logic ... not to pick on you (and please don't take it
this way as this is common thinking so I wish to make a point) ...

That is NOT a true statement. Can you name an object using a reserved
keyword? If you're developing a VBA module in Excel would name the objects
a, b, s to represent the application, workbook and worksheet object
respectively? Commonly accepted programming standards dictate that code can
be easily read by someone not previously familar with the code.

As someone that's worked with Access for 12 years now, I am personally
offended that you think that I 'don't see the significance of naming to
follow logic'. That is *exactly* my point in my original post. If you name a
table based on the content of the table, there is no real *need* to rename
it. There is a difference between *need* and *nice to do*. Yes,
'CustomerInformation' may be technically redundant, but again that was used
solely as an example along with 'Customer'. Reread the post for the meaning.
"CustomerInformation", for instance, is not logical as everything in a
database is 'information' or 'data' or 'tables' or 'lists' or .... As you
use the database more, you will better see these subtleties. Extra words,
phrases, and characters should be eliminated

If you reread the post, you'll see that I used 'Customers' and
'CustomerInformation' as sample names for a table containing customer data.
The point being that you're not going to name the same table something like
'CI'. The logic being that the average person can look at the table name and
deduce the contents therein. Yes, the 'Information' in 'CustomerInformation'
may be redundant, but my point was not to advocate a specific name, just to
provide an example.
"Furthermore, if you have a table that's containing customer information,
why isn't is name 'Customers' or 'CustomerInformation' to begin with?

Also there is a difference between logical, redundant and valid. I would
suggest that 'CustomerInformation' is at once all three as it is consistent
with the content of the table, it is redundant because its all information,
and it is valid because it accurately describes the records. I might add
that if the database is named CustomerMasterData.MDB, following your
statement a table with the actual information should not be named
'Customers' as all of the data is the obviously Customers to begin with. So
what would you name the table?
My general rule is to keep names concise yet descriptive. When you use the
best logic (whatever is your current thought), then you don't have to look
names up (even if time goes by) because the name fits and is consistent
... when you are writing code, this is important.

Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters, sample
databases, etc)

*
:) have an awesome day :)
*


Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters, sample
databases, etc)

*
:) have an awesome day :)
*
 
J

Jack Leach

Explain to me why if 'ORDERS' accurately
describes the contents of a table that it would have to be renamed.

Ok...

Perhaps I can explain the scenario a bit more so that you may understand.
As nice as it would be, this root of this matter that we are discussing
actually has very little to do with the name of objects, but instead a matter
of business survival. Not a matter of application design, but of business
survival... a far far more important concept than mere object names in an
application.

Luke Chung of FMS Inc writes and article explaining these concepts in
detail, and what we can do to work with them as developers. I will post the
link to this article, and quote some statements out of it for the purpose of
this discussion.

http://www.fmsinc.com/tpapers/budgets/ApplicationDevelopment.html

Quotes from the article:

-----------------------
"As application developers, we've always been constrained by resources,
time, and budgets, so that's not new. What's new is the heightened focus on
this, combined with the rapidly changing environment."

"A 50% solution this month may be worth more
than a 100% solution in six months"

"The 100% solution may be irrelevant when it's done"

"Even "perfectly" designed and developed applications may become useless for
reasons beyond your control. The changing economy, new regulations, changing
customers, products, or services, etc. can all make a "great" application
irrelevant. Being able to create something quickly, get it in use, and adjust
it "on the fly" is a powerful skill and philosophy. Especially in these
uncertain times"

"Applications are like living beings. The survivors evolve, the bad ones go
extinct"
----------------




Myself, I am not an application developer. I am a business manager, and
application developement is merely one of the great many tasks that I take on
to ensure the stability of my business. In my particular industry,
regulations and requirements constantly take on a new face, and over the past
three years this obstacle has grown expotentially.

My job is not to design a master application that will withstand the tests
of all time, even if nothing were to change. Rather, my job is to provide
functionality under a pressured timeframe that coincides with the demands of
the industry that I am involved in.

From a business need perspective, I can hardly afford to take all of the
required time and resources up front to design an application that will do
everthing I will ever need it to for the end of time. If I thought and acted
like this, I would be successfully driving my business into the ground. Nor
can I sit back and do nothing.

So it becomes quite obvious to me and anyone else who has a head for
business management that a balance must be struck, and this balance regarding
application programming requires quick deployment of functionable utilities
while understanding and designing around the fact that the application is
*not* complete and will in the future be expanded and improved upon.

This type of under-the-gun development one of many concepts that allows my
business to remain successful where we are constantly under-the-gun for new
changes and challenges from customers and competitors. The understanding and
ability to work with this type of fast paced business environmnent is why our
business has grown over 20% in the past three years, where more than half of
my competitors-in-class have closed thier doors.

however it all comes back to BUSINESS NEED.

So true. Now that I have explained what my business needs are, you can rest
assured knowing that I have given them some consideration.

At this point you should understand that the nature of my application(s) is
evolution. This will never change. They are always in a constant state of
flux, as they need to be.



Next, I would like to discuss the basis of these changes in object names.
In your previous posts, you give examples such as changing "Customers" to
"Customer Information", or changing "Orders" to "Order Details".

These are examples of base level objects. Maybe you do not understand that
the names of the tables that I am changing are not base level object names by
any means, but are nested levels deep in a manufacturing management
application with built-in proprietary CAM (Computer Aided Machining)
software, as one example of the highly intuitive integration of the
application. tblCompanies is still tblCompanies, and that has not changed
since the application was written six years ago. tblOrders is still
tblOrders, tblOrderDetails is still tblOrderDetails.

What I am working with at this point in time (the table name that I have
decided to change) is in a very deep part of the application, and is still
under development. Because I do not feel like taking the time to try and
explain a module for CAM integration that lies nearly twenty levels deep in
table and relationship structures, I will revert back to a change I made
approximately a year after the initial application was introduced for our
business.

At the initial deployment of the base application, there was functionality
to track information based on manufactured parts (it's what we do...). Hence
the name of the base table that held the base data was "tblParts". Even in
the initial development, I was aware that I would later revise this to handle
all tangible materials. But, keeping keenly in mind my business needs (the
fact that I needed immediately custom handling for Parts, but not every
tangible object of the business, I opted to not spend the time designing the
entire materials handling. I did not have that kind of time, and for me to
spend X amount of hours making sure I had the right table names to reflect
what would later be would have been detrimental to my performance in keeping
up with pressured requirements.

Hence, tblParts was born, as tblParts accurately describes the data being
held.

Later, after a year or so, I had the time to expand upon this basic parts
handling to include all tangible materials of the business. tblParts no
longer accurately describes this. tblItems, though, does a much better job
explaining this evolved feature of the application. Some of the options that
I had (similar to some of the options that I now face with the implementation
of CAM software into an existing (and quite stable, I might add) application)
are as follows...

- from the start, design the entire application to handle everything that I
thought it would ever need (not hardly... no time for this)

- name the tables of the initial application based on what I thought they
would need to be in the future (no... who's to say that I would remember what
I had in mind during development if the object names were based on castles
built in clouds? this type of approach is a mess waiting to happen)

- upon evolution of the existing application, keep the table names what they
were previously named and disregard changing them? (no... this would
certainly make for a nice mess down the road when you are trying to work with
consumable material data that are wrongly stored in a table called tblParts)

- build the object names to what make sense for the current application,
knowing that a small percentage of these names may change as things evolve in
the future (bingo! - now, when I refer back to the last deployment, I have
table names that accurately describe the data being held in them. Not data
that was held in them years ago, not data that *might* be held in them years
in the future, but data that is *currently* held in them)




In a two part summary:


You seem to base your argument that table names should not change based on
core tables in an application, such as Customers or Orders. If this were the
case, I would certainly agree, but alas, it is not so simple. Furthermore,
it takes a mere minutes to change a table name and get the rest of the
application to accept the change (thanks to think tools that Crystal has
pointed me to). Furthermore, less than 10% of the objects in my application
ever need this. So please do not assume that I am trying to change
"COMPANIES" to "COMPANY INFORMATION", or perhaps "CI". Just because you do
not have the insight on my particular situation does not make me an idiot
that does not know how to design an application. In fact, I might make some
comment now about how some people are so close-minded that they would never
even consider any of the above, but I'll leave that alone...

And part two... this is a matter of balance. Not object names. You should
now fully understand my reasons for requiring the small amount of object name
changes. It all comes back to business needs, as you said, and demanding
business is always a balance of many things. It is those that do not
understand or are not flexible enough to cope with that balance that are
going to have a hard time in life. This is what it all boils down to.
Modified object names are merely one of hundreds of things that surface
because of this requirement for balance. Understanding and working with this
balance is why you have people that run successful businesses, or do not.
That is the core of the problem, and that will never change, no matter how
good you think you are. Understanding and accepting that you will never be
good enough to get everything at once is key to survival.

To further understand the importance of maintaining balance (in business, in
life, in application programming, and everything else), I might suggest that
you try some pilot training. Go fly airplanes or helicopters, if you never
have. This will teach you the importance of balancing in a volitile
environment. If that doesn't do it, well... it probably will no longer be an
issue for you. If you think that you will always have the upper hand and
nothing will ever change while you're in an airplane, you're well on your way
into a six foot deep hole (assuming that they can find enough pieces of you
to bother burying). This requirement for maintaining balance does not only
apply in aviation, but in everything we do in life. Application programming
included. Go do this, and take these values that you learn, and apply them
elsewhere, and I can guarantee that you will be a more proficient application
developer afterwords.




--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)



David C. Holley said:
Even though applications do evolve, you're not going to start storing PART
information in an ORDERS table. Explain to me why if 'ORDERS' accurately
describes the contents of a table that it would have to be renamed.

Furthermore (and more importantly), even if a more descriptive name is
developed such as 'CUSTOMER ORDERS', it begs the question if there is a
specific BUSINESS NEED to change the table name. Even if the table name is
mispelled as in 'ORDRES' , the mispelling does not rise to the level of
BUSINESS NEED and thus warrant a name change.

Even if you go to a Header/Detail model for customer orders where the
content of the ORDERS table will be the order detail, it does not
neccessarily warrant changing the name from 'ORDERS' to 'ORDER DETAILS'.
Yes, ORDER DETAILS in that scenario would be [more] descriptive, however it
all comes back to BUSINESS NEED. Will the DB still function if the table is
named 'ORDERS' although 'ORDER DETAILS' is more specific? Do you choose to
spend the time and effort to rename the table or is it just a matter of the
developer(s) knowing that ORDERS is actually ORDER DETAILS? Which costs more
in terms of labor? Will the DB cease to function if the table isn't
renamed?

Jack Leach said:
Some applications do have a tendancy to evolve. Not everyone has the
luxury
of knowing exactly what they are going to need 10 years from now, and when
the time comes to improve upon an old design, often things aren't
previously
what would be ideal presently.


--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)


.
 
J

Jack Leach

David,

You have obviously missed the entire point that I tried to get across in my
previous post. It is quite clear by many of your comments that you did not
bother to consider the situation at hand, and it is quite clear by your
comments that you have never been in a situation that requires this type of
work, and apparently do not have the intellectual capacity or desire to
believe that there are some who fall into this catagory. The statements you
make concerning my business and its rules are at best ill-considered and at
worst completely false. You are attempting to force your opinion in an area
where you are uneducated, and you are attempting to do this without
consideration to previous points made on the subject.

Many of your statements are correct under certain circumstances, but you
fail to understand that not all people fall within your scope of imagination.

I have no desire to further engage in conversation about the requirements of
my business with someone who does not understand the situation and does not
have the brains to realize and accept that they don't understand.

Good day...


--
Jack Leach
www.tristatemachine.com

"I haven''t failed, I''ve found ten thousand ways that don''t work."
-Thomas Edison (1847-1931)
 
C

Crystal (strive4peace)

Hi Jack,

wow! I am really impressed with how well you are able to
explain your 'business survival' approach to application
development from a business manager perspective. What you
said makes a lot of sense and helps someone like me, who is
a developer, better understand how a database evolved before
I get called in to re-engineer it. As with anything you
build, at some point it is wise to stop using duct tape and
bailing wire ... and design for optimum flexibility and
stability.

Once your application has lots of data in it, the data
itself can tell you a lot and help drive a more efficient
structure design.

I was so inspired by the obvious time you took to share your
wisdom that I posted something I believe will be a great
help to you.

Create a Data Dictionary (and more) for any Access Database

My Analyzer ... the ultimate Data Dictionary, by Crystal
http://www.AccessMVP.com/strive4peace/Dictionary

going back to your original post, you said, "I have half a
mind to write a module that, given passed table names, will
relink the tables, ... "

One thing my Analyzer does for you is make linking to
specified BE (back-end) tables quick by making it easy to
create a list of the tablenames -- then all you have to do
is loop through them and re-link, or delete links and
reestablish a connection (if you want code, just ask and
I'll post it).

To create a list of table names in your database without
having to get them one-by-one or write code to loop through
the tabledefs to create the list of names, use a make-table
query from the analyzer's Tables table (for a particular RunID)

from my web page:
"Tip: use the tablenames stored in the analyzer's Tables
table to make a list of tablenames in a back-end (BE) that
you want to automatically link to from the front-end (FE). "

Another thing you can use the Analyzer data for is to export
the table and field names to Excel (you can start with the
qFields query -- but save your changes with a new name) --
then create a column in Excel for the new table or field
name. This enables you to plan your name changes
(additions, deletions, etc) and also have a list for V-Tools
DeepSearch ;)

~~~

Thank you also for highlighting Luke's article. This is
especially profound: "The 100% solution may be irrelevant
when it's done"

Here is another article written by him that I pass the link for:

Error Handling and Debugging Tips and Techniques...
by Luke Chung, President of FMS, Inc.
http://www.fmsinc.com/tpapers/vbacode/Debug.asp

~~~

Parts --> Items

yes, I also use an Items table in applications I build --
and not just for manufacturing ... When you have expenses to
a project, it is nice to be able to store expense amounts in
one place and classify the expense types somewhere else. An
item could be a quantity in hours of labor or a ream of paper.

Since you do manufacturing, I expect you need a way to break
an Item down into its individual parts and assemblies so an
assembly of items can also be listed in the Items table (on
any level) and you can store a BOM (Bill of Materials) ...
not just for top-level items. You need to be able to drill
down several levels. This starts getting to the structure
you will need to integrate with your CAM software as you
need to store each step of the process.

You probably also need to come up with ways to store
flexible ordering and pricing structures; manufacturers,
OEMs, suppliers and product lines; revenue and costs;
repairs and rebuilding; parts, components, assemblies;
linking superseded parts forward and backward; inventory in
each location; jobs and projects; customers, sales, and
invoicing; and general accounting information.

~~~
"Modified object names are merely one of hundreds of things
that surface because of this requirement for balance ...
pilot training"

Absolutely! Loved your points on balance and pilot analogy ;)


Warm Regards,
Crystal
remote programming and training
http://MSAccessGurus.com

free video tutorials
http://www.YouTube.com/user/LearnAccessByCrystal

Access Basics
http://www.AccessMVP.com/strive4peace
free 100-page book that covers essentials in Access
(also includes links for Whistles and Bells, VBA chapters,
sample databases, etc)

*
:) have an awesome day :)
*
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top