MiniVend Database Operation

### Index Up << >>

## MiniVend Database Operation

NOTE: In the following descriptions, we will use the following terms somewhat interchangeably:

key, code
  Either one is a reference to the key for the database. In MiniVend this is often the product code or SKU, which is the part number for the product. Other key values may be used to generate relationships to other database tables.

  It is required that the key be the first column of an ASCII source file for GDBM, Berkeley DB, or in-memory built-in database formats. It is also strongly suggested that you keep that practice for SQL databases, since MiniVend's import, export, and search facilities will work much better with that practice.

field, column
  This is a column of the database. One of the columns is always the key -- MiniVend prefers that the key be the first column. Field is an interchangeable reference.

table, database
  A table in the database. Because of the evolution of MiniVend from a single-table database to an access method for an unlimited number of tables (and databases, for that matter), we will sometimes refer to a table as a database. The only time database refers to something different is when describing that concept as it relates to SQL -- where a database contains a series of tables. MiniVend cannot create SQL databases, but given the proper permissions it may drop and create tables within that database.

If necessary, MiniVend reads the data to place in tables from standard ASCII-delimited files. All of these ASCII source files are kept in the products directory, normally products in the catalog directory (where catalog.cfg is).

The ASCII files can have ^M (carriage return) characters if desired, but must have a newline character at the end of the line to work -- Mac users uploading files must use ASCII mode, not binary mode!

MiniVend's default ASCII delimiter is TAB.

IMPORTANT NOTE: The items must be separated by a single delimiter. The items are lined up for your reading convenience.

TAB
  Fields separated by ^I characters. No whitespace should be at the beginning of the line.

          code    description             price   image
          SH543   Men's fine cotton shirt 14.95   shirts.jpg

PIPE
  Fields separated by `|` characters. No whitespace should be at the beginning of the line.

          code|description|price|image
          SH543|Men's fine cotton shirt|14.95|shirts.jpg

CSV
  Fields enclosed in quotes, separated by commas. No whitespace should be at the beginning of the line.

          "code","description","price","image"
          "SH543","Men's fine cotton shirt","14.95","shirts.jpg"

NOTE: Using the default TAB delimiter is highly recommended if you are planning on searching the ASCII source file of the database. PIPE works fairly well, but CSV delimiter schemes cause problems with searching.

IMPORTANT NOTE: Field names are usually case-sensitive. Unless you are consistent in the names, you will have problems. All lower or all upper case names are recommended.

MiniVend uses one mandatory database, which is referred to as the products database. In the supplied demo catalogs, it is called products and the ASCII source is kept in the file `products.txt` in the products directory. This file is also the default file for searching with the THE SEARCH ENGINE.

MiniVend also has a two of standard but optional databases, which are in fixed special formats:

shipping.asc
  The database of shipping options if the CustomShipping directive is in use. This is a fixed-format database, and must be created as specified. See SHIPPING.

salestax.asc
  The database of sales tax information if the [salestax] tag is to be used. A default is supplied -- caution, these things change! This is a fixed-format database, and must be created as specified. See Sales Tax.

### Index Up << >>