Difference between revisions of "VbzCart/tables/shop cart"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search
(ID_Sess field)
(+WhenVoided; updates to the rules)
Line 2: Line 2:
 
* '''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.
 
* '''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''':
 
* '''Relations''':
 +
** each {{vbzcart|table|shop_session}} has one or more {{vbzcart|table|shop_cart}}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 {{vbzcart|table|shop_cart}} exactly one {{vbzcart|table|shop_session}}
 
** each {{vbzcart|table|shop_cart}} has zero or one {{vbzcart|table|core_orders}} record (it's only zero until the order is placed)
 
** each {{vbzcart|table|shop_cart}} has zero or one {{vbzcart|table|core_orders}} record (it's only zero until the order is placed)
 
** each {{vbzcart|table|core_orders}} record has exactly one {{vbzcart|table|shop_cart}}
 
** each {{vbzcart|table|core_orders}} record has exactly one {{vbzcart|table|shop_cart}}
Line 15: Line 19:
 
* '''History''':
 
* '''History''':
 
** '''2009-06-16''' Changing names to singular (tables not in use yet, so this is the time to do it)
 
** '''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
+
** '''2009-07-10''' removing '''ID_Session''': each session ties to a cart, not vice-versa
** '''2009-07-16''' added ShipZone field
+
*** ...except that we still have ID_Sess
** '''2009-07-18''' added ID_Sess field (field documentation seems to think it was already there...)
+
** '''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==
 
==SQL==
 
<section begin=sql /><mysql>DROP TABLE IF EXISTS `shop_cart`;
 
<section begin=sql /><mysql>DROP TABLE IF EXISTS `shop_cart`;
Line 26: Line 32:
 
   `WhenUpdated` DATETIME  DEFAULT NULL COMMENT "when the cart's contents were last changed",
 
   `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",
 
   `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_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_Order`    INT        DEFAULT NULL COMMENT "core_orders.ID of order into which cart was transferred",

Revision as of 01:22, 28 March 2011

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:
  • 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 (shop_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

<mysql>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;</mysql>