2013-06-27 42 views
2

對於允許訪客結賬和註冊用戶結賬的電子商務網站,您將如何處理2個不同的客戶羣?註冊客戶和訪客結帳的數據庫模式

  1. 你存儲兩組在同一個表customers其中有一個外鍵customer_group_id指向另一個表customer_groups?在這種情況下,你會擔心重複客人結賬「污染」customers表嗎?

  2. 爲兩個客戶羣捕獲的信息將如何不同?我想不同的是,客人結帳客戶將不會有密碼多數民衆贊成它。

回答

0

公共實體是Checkout。來賓結賬將是結賬實體到註冊用戶實體的空FK鏈接。

+0

您會將運費/賬單信息存儲在'checkouts'表中嗎?如果是這樣,這是否意味着您必須在「用戶」和「結賬」表中存儲運費/結算信息。 – Nyxynyx

+0

訂單有運費和帳單地址。客戶可以擁有送貨地址和賬單地址。只需要有一個唯一的地址,然後是兩個鏈接表。與在電子商務網站上訂購時類似,在發貨或結算選項下的「設置爲我的默認地址」選項告訴數據庫在客戶端使用相同的地址,以便在訂單方使用。 – joezen777

3

我直接在訂單中存儲客戶信息,而不是依賴客戶記錄中的信息。那做了幾件事情:

  1. 我沒有在客戶數據庫中的guest用戶
  2. 如果我的客戶信息發生變化,或者如果顧客想出貨一個項目到一處,另一項目到另一個地方,關於訂單的信息仍然是正確的。

我將訂單信息視爲歷史數據。它不應該因爲數據庫中的其他內容改變而改變。例如,如果我從您處訂購了一些東西,並且稍後我將移動並更新我的結算和運送信息,則您仍應該知道先前的訂單已付帳且已發送到以前的地址。如果您依賴客戶和訂單之間的關係來保留帳單並將信息發送給我,一旦我移動並更新我的個人資料,您認爲您已發送到我的新地址。您可能不會將此視爲問題,但會是。

如果客戶有賬戶,您仍然可以從客戶記錄中獲取當前信息以填充訂單中的字段。對於一個客人,他必須每次輸入。

+0

使總感覺! – Nyxynyx