VbzCart/docs

From Woozle Writes Code
Jump to navigation Jump to search

Technology: VbzCart

Having evaluated osCommerce and found that, although it had many features I would like to have on vbz.net, it also lacked some crucial features currently needed (many of which are provided by the existing shopping cart system, and some of which would be needed in order to effectively manage porting the data from the existing system).

So I'm writing a new system, in PHP, based on the data design of the existing VBZ cart system and adding new pieces as needed.

I will be taking notes on this page and gradually refining them into something resembling documentation, with the ultimate goal of producing a system which could be released under an open source license.

Tables

Fields which are used as keys (i.e. unique identifiers) are in italics

Administration

Main data tables:

  • admin_users -- users with access to the admin system
    • ID - int(4) (autonumber)
    • Name - varchar(32)
    • Email - varchar(128)
  • admin_groups -- each group has a role to play, and each role requires a particular set of privileges
    • ID - int(4) (autonumber)
    • Name - varchar(32)
    • Descr
  • admin_privs -- particular privileges; meaning is defined in code
    • ID - int(4) (autonumber)
    • Name - varchar(32)
    • Descr

Collection/link tables:

  • admin_user_groups -- users in each group / groups to which each user belongs
    • ID_User - int(4)
    • ID_Group - int(4)
  • admin_group_privs -- privileges each group has / groups having a particular privilege
    • ID_Group - int(4)
    • ID_Priv - int(4)

Catalog

  • cat_items -- catalog items
    • ID - int(4) (autonumber)
    • CatNum - varchar(32) -- catalog number: must be unique, but may change

Shopping

The items a customer wants to order are saved in a cart. The cart also saves session information, e.g. customer's IP/domain, but not the customer's shipping or payment data. Later on, we'll allow customers to make changes to carts after the cart has already been assigned to an order, so will need session info stored separately, which is why it's in a separate table.

  • shop_carts -- shopping carts
    • ID - int(4) (autonumber)
  • shop_session -- shopping session
    • Remote_Client - text -- browser user_agent string
    • Remote_IPAddr - int(4) -- remote host IP address
    • Remote_Domain - text -- remote host domain info (reverse lookup), if any
    • WhenStarted - timestamp -- when this cart was started (i.e. first item added)
    • WhenLocked - timestamp -- when this cart was locked (can't add/remove items)

Collection/link tables:

  • shop_cart_sessions -- a given cart might be accessed from different sessions, when that functionality is available
    • ID_Cart - int(4)
    • ID_Sess - int(4)
  • shop_cart_items -- items in a cart
    • ID_Cart - int(4)
    • ID_Item

Browsing

These tables have to do with searching for items and how they are displayed; the data are mostly static.