473,387 Members | 1,691 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

Rqst for Inventory Database Best Practices

I am developing an inventory database in SQL Server. I realize there are
many commercial (as well as some non-commercial) inventory offerings, but my
client has specific requirements that would necessitate significant
customization of any off-the-shelf application. In the end, we decided it
would be more feasible to build one to our specifications.

What I am looking for are a list of best practices/recommendations for the
architecture and modeling of an inventory database. This inventory
application will be for managing a wholesale products operation. It must
manage purchase orders to the manufacturer of the products, sales invoices
for the retail customers of the products, as well as manage product stock
levels in the warehouse. We will need a number of reports, including:

1. What products are in stock.
2. What products are on order from the manufacturer.
3. What products are needed to fulfill outstanding sales.
4. Warehouse operations (e.g., receipt of delivery, inspection, add to
inventory, pull from inventory, packing lists, invoices, return to
inventory, etc.)
5. Sales analysis (e.g., product velocity, sales by associate, etc.)

My main question is regarding the managing of products in stock. As I see it
there are three ways of accomplishing this:

1. Track only transactions (products received, products shipped, etc.) and
calculate the stock based on the sum of all transactions. But as transaction
volume accumulates over time, this would get very slow and cumbersome.

2. Have a table of "units in stock" and add and subtract to it as
transactions occur. This has the advantage of always providing an instant
snapshot of inventory levels. But it makes it more difficult to manage
changes or corrections to a transaction once it has been entered.

3. A combination of the above two concepts. Choose a point in time (for
example, when the warehouse inventory is audited) and capture that in a
(semi) "static" table. After that, transactions are summed as needed against
those static numbers. The next time the warehouse is audited, the "static"
table is updated and all prior transactions are archived. New transactions
are once again summed against the most recent audit numbers. Of course, this
would mean halting operations at the time of the audit (probably not an
issue for my client's business).

Recommendations? Suggestions? Comments?

(Btw, I've tried to find this info in books and online, but so far have not
found anything that makes specific inventory system design recommendations.
If you know of a good reference, please let me know.)

Thanks in advance!
Michael
Jan 30 '06 #1
4 2945
On Mon, 30 Jan 2006 01:49:09 -0800, DeepDiver wrote:

(snip)

Replied in public.microsoft.sqlserver.programming.

Please ask your questions in one group only. And if you really feel that
it is necessary to post to two groups, use a cross-post, not two
seperate messages.

--
Hugo Kornelis, SQL Server MVP
Jan 30 '06 #2
>> I realize there are many commercial (as well as some non-commercial) inventory offerings, but my client has specific requirements that would necessitate significant customization of any off-the-shelf application. In the end, we decided it would be more feasible to build one to our specifications. <<

I am always surprised that programmers feel that their application in a
commercial area is unique in all the world, so they must write code
instead of buy it off the shelf. Is this the first wholesale business
model in the world? Of course not! What makes it unique in all the
world?

But I have only been doing this for 35+ years, so what do I know? The
only unique systems that had to be done from scratch systems I worked
on were Military. There is no off-the-shelf "atomic bomb package" on
the market -- as far as I know.
What I am looking for are a list of best practices/recommendations for the architecture and modeling of an inventory database. <<

Since you did not tell us anything that makes this inventory unique,
who knows? I would get some of Hay's DB patterns as a start. Then
hang around inventory people on the newsgroups.

For truly weird inventory problems, go to the grocery industry. They
buy and sell in more werid units (buy fruit in metric tons, sell by the
each, etc.), have spoilage, health regulations, worry about the UPC
change this year, etc. And they have packages, so you must be in a
real mess!!
1. Track only transactions (products received, products shipped, etc.) and calculate the stock based on the sum of all transactions. But as
transaction
volume accumulates over time, this would get very slow and cumbersome.
<<

This does not include spoilage and shrinkage. And, yes, you have
account for all the transactions, too. If Wal-Mart does not have a
problem with speed, how big is your problem that you worry about it?
2. Have a table of "units in stock" and add and subtract to it as transactions occur. This has the advantage of always providing an instant snapshot of inventory levels. But it makes it more difficult to manage changes or corrections to a transaction once it has been entered. <<


Unh? How do you think an inventory works if you do not post
transactions against it? This is RDBMS, not a paper file system that
gets resolved once a week by a human bookkeeper. Of course changes are
done immediately.

3. A combination of the above two concepts. Choose a point in time (for
example, when the warehouse inventory is audited) and capture that in a
(semi) "static" table. After that, transactions are summed as needed
against those static numbers. The next time the warehouse is audited,
the "static" table is updated and all prior transactions are archived.
New transactions are once again summed against the most recent audit
numbers. Of course, this would mean halting operations at the time of
the audit (probably not an issue for my client's business). <<

Physical inventory is done when a transaction fails or when a flag
occurs (time or event). You have to do it, no matter what the
transaction system is doing. You also need to learn how to model a
history in SQL.

Jan 31 '06 #3
"Hugo Kornelis" <hu**@perFact.REMOVETHIS.info> wrote in message
news:p0********************************@4ax.com...
On Mon, 30 Jan 2006 01:49:09 -0800, DeepDiver wrote:

(snip)

Replied in public.microsoft.sqlserver.programming.

Please ask your questions in one group only. And if you really feel that
it is necessary to post to two groups, use a cross-post, not two
seperate messages.

My apologies. My impression from other newsgroups was that cross-posting is
discouraged (if not shunned). Some newsgroup participants consider
cross-posting akin to newsgroup spamming. That was the reason I posted my
question separately. In any case, I appreciate your response in the
public.microsoft.sqlserver.programming newsgroup, and will reply on topic
there.

Regards,
Michael

Jan 31 '06 #4
On Mon, 30 Jan 2006 18:05:31 -0800, DeepDiver wrote:
"Hugo Kornelis" <hu**@perFact.REMOVETHIS.info> wrote in message
news:p0********************************@4ax.com.. .
On Mon, 30 Jan 2006 01:49:09 -0800, DeepDiver wrote:

(snip)

Replied in public.microsoft.sqlserver.programming.

Please ask your questions in one group only. And if you really feel that
it is necessary to post to two groups, use a cross-post, not two
seperate messages.

My apologies. My impression from other newsgroups was that cross-posting is
discouraged (if not shunned).


Hi Michael,

It is. That's why my first advise was to post to one single group.

But the exception to this rule is if a question really "falls between"
two groups (for instance, you get unexpected results when querying SQL
Server from your .NET application and don't even know where to begin
looking - that kind of question can be posted to a SQL Server group and
a .NET group). In those cases, crossposting is allowed.

My comment, though, was about multiposting (posting independent copies
of a message to different groups). Your own post is a great example of
why: some comments are posted in .programming by Patrik, Brian and me;
Joe Celko, probably unaware of this, posts his thoughts here. Et voila,
we now have two discussions about the same subject; some participants
won't know what is already advised in the other discussion; others have
to go through more trouble to follow both tracks of the discussion.
Some newsgroup participants consider
cross-posting akin to newsgroup spamming.
I reserve the word "spamming" for EXCESSIVE cross-posting.

Posting to two groups is sometimes valid. Posting to three is very rare.
Posting to four or more is either a complete Usenet newbie, or a troll
or spammer.
That was the reason I posted my
question separately. In any case, I appreciate your response in the
public.microsoft.sqlserver.programming newsgroup, and will reply on topic
there.


I'm looking forward for your reply there!

--
Hugo Kornelis, SQL Server MVP
Jan 31 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Oleg | last post by:
Hi, Not really a PHP specific question, but I am using PHP on Linux box so it's kinda relevant. I'm developing a site which will periodically update inventory via a large batch file. I'm...
136
by: Matt Kruse | last post by:
http://www.JavascriptToolbox.com/bestpractices/ I started writing this up as a guide for some people who were looking for general tips on how to do things the 'right way' with Javascript. Their...
5
by: gregork | last post by:
I have painstakingly created an excel 2000 workbook for the very complex recipes I have to formulate. I have 2 sheets- 1 for configuring the recipe and 1 that is like an inventory of all the raw...
4
by: Burghew | last post by:
Hi all, I am trying to design a database in access 2002. I have multiple category of items such as computers which may include laptop, server, pc...all of these items have different attributes,...
4
by: Collin Peters | last post by:
I have searched the Internet... but haven't found much relating to this. I am wondering on what the best practices are for migrating a developmemnt database to a release database. Here is the...
13
by: royaltiger | last post by:
I am trying to copy the inventory database in Building Access Applications by John L Viescas but when i try to run the database i get an error in the orders form when i click on the allocate...
3
by: Henrik | last post by:
Hi all, I'm a .net developer working with developing automation equipment for the sawmill industry. The main focus of our product line is mechanical and measurement equipment but our clients...
109
by: zaidalin79 | last post by:
I have a java class that goes for another week or so, and I am going to fail if I can't figure out this simple program. I can't get anything to compile to at least get a few points... Here are the...
3
by: 100grand | last post by:
Modify the Inventory Program to use a GUI. The GUI should display the information one product at a time, including the item number, the name of the product, the number of units in stock, the price...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.