VbzCart/tables/shop cart

About

 * Purpose: Shopping cart data is kept separate from order data because we end up with a lot of carts that never become orders; eventually they get cleaned out. Order data may eventually get cleaned out too, but with different criteria; for now, we are keeping order data indefinitely.
 * Relations:
 * each has one or more s
 * a single session can discard one cart and create another
 * sessions only use carts they create, never reusing one created by another session
 * each exactly one
 * each has zero or one  record (it's only zero until the order is placed)
 * each record has exactly one
 * each has zero or one  record (it's only zero until the order is placed, but ID_Cust isn't necessarily filled in when this happens)
 * each record has one or more s and one or more
 * Fields:
 * ID_Cust is for future use when customers can log in to retrieve their personal data before checking out
 * ID_Sess is the ID of the session where the cart was created & accessed
 * Different sessions cannot access the same cart. (Is there a good reason for this, or does it just sound good?)
 * One session may have multiple carts.
 * ShipZone represents the string-code for the shipping zone, which is used to determine shipping cost
 * currently, this is hard-coded to apply a different multiplier for each zone - {US shipping cost}x{zone multiplier}
 * History:
 * 2009-06-16 Changing names to singular (tables not in use yet, so this is the time to do it)
 * 2009-07-10 removing ID_Session: each session ties to a cart, not vice-versa
 * ...except that we still have ID_Sess
 * 2009-07-16 added ShipZone field
 * 2009-07-18 added ID_Sess field (field documentation seems to think it was already there...)
 * 2011-03-27 added WhenVoided field so we never zero out ID_Cart

SQL
DROP TABLE IF EXISTS `shop_cart`; CREATE TABLE `shop_cart` ( `ID`          INT            NOT NULL AUTO_INCREMENT,  `WhenCreated` DATETIME       NOT NULL COMMENT "when the cart was first created",  `WhenViewed`  DATETIME   DEFAULT NULL COMMENT "when the cart's contents were last displayed by the customer",  `WhenUpdated` DATETIME   DEFAULT NULL COMMENT "when the cart's contents were last changed",  `WhenOrdered` DATETIME   DEFAULT NULL COMMENT "when the cart's contents were transferred to an order",  `WhenVoided`  DATETIME   DEFAULT NULL COMMENT "when this cart was discarded",  `ID_Sess`     INT            NOT NULL COMMENT "shop_session.ID which used this cart",  `ID_Order`    INT        DEFAULT NULL COMMENT "core_orders.ID of order into which cart was transferred",  `ID_Cust`     INT        DEFAULT NULL COMMENT "core_custs.ID of customer for this order",  `ShipZone`    VARCHAR(3) DEFAULT NULL COMMENT "shipping cost zone", PRIMARY KEY(`ID`) ) ENGINE = MYISAM;