diff --git a/uc_node_checkout.install b/uc_node_checkout.install
index 3c700e1..f74d64a 100644
--- a/uc_node_checkout.install
+++ b/uc_node_checkout.install
@@ -76,7 +76,6 @@ function uc_node_checkout_schema() {
         'description' => 'The {uc_order_products}.order_product_id of the order.',
       ),
     ),
-    'primary key' => array('nid'),
   );
 
   return $schema;
@@ -116,3 +115,13 @@ function uc_node_checkout_update_6200() {
 
   return $ret;
 }
+
+/**
+ * Remove primary key from {uc_node_checkout_order_products}.
+ */
+function uc_node_checkout_update_6201() {
+  $ret = array();
+  db_drop_primary_key($ret, 'uc_node_checkout_order_products');
+  return $ret;
+}
+
diff --git a/uc_node_checkout.module b/uc_node_checkout.module
index 9c0b8f7..ab1674e 100644
--- a/uc_node_checkout.module
+++ b/uc_node_checkout.module
@@ -1059,14 +1059,7 @@ function uc_node_checkout_node_type_association($product_nid) {
  * purchased.
  */
 function uc_node_checkout_save_product_association($order_product_id, $nid) {
-  // First attempt to update any existing associations.
-  db_query("UPDATE {uc_node_checkout_order_products} SET order_product_id = %d WHERE nid = %d", $order_product_id, $nid);
-
-  // If none were found...
-  if (!db_affected_rows()) {
-    // Insert a new association.
-    db_query("INSERT INTO {uc_node_checkout_order_products} (nid, order_product_id) VALUES (%d, %d)", $nid, $order_product_id);
-  }
+  db_query("INSERT INTO {uc_node_checkout_order_products} (nid, order_product_id, order_id) VALUES (%d, %d, %d)", $nid, $order_product_id);
 }
 
 
@@ -1137,6 +1130,22 @@ function uc_node_checkout_load_order_product($order_product_id) {
   return $products[$order_product_id];
 }
 
+/**
+ * Returns the order product ID corresponding to a node for a node checkout
+ *   governed node by looking up the node ID and order ID.
+ *
+ * @param $order_product_id
+ *   The order product ID of the product to load from the database.
+ * @return
+ *   An object representing the product or FALSE if none was found.
+ */
+function uc_node_checkout_lookup_order_product($nid, $order_id) {
+  $result = db_query("SELECT ucnc.order_product_id FROM {uc_node_checkout_order_products} ncop LEFT JOIN {uc_order_products} ucop ON ncop.order_product_id = ucop.order_product_id WHERE ncop.nid = %d AND ucop.order_id=%d", $nid, $order_id);
+  $product = db_result($result);
+
+  return $product;
+}
+
 
 /**
  * Implements hook_order_pane()
