2014-09-05 31 views
3

我有一個系統,用戶發佈數據,他們可以通過選擇性地支付升級來升級他們的帖子。這是我想從磁條存儲在他們的支付響應的信息:何時將付款放入自己的SQL表中?

CREATE TABLE IF NOT EXISTS `db`.`pay` (
    `payments_id` int(11) NOT NULL AUTO_INCREMENT 
    payment, unique index', 
    `stripe_id` 
    `card_id` 
    `brand` 
    `amount` 
    `created` 
    `currency` 
    `paid` 
    `refunded` 
    `exp_month` 
    `exp_year` 
    `last4` 
    `country` 
    `fingerprint` 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='payments'; 

如果這是在同一個表含主哨的數據之一,或者它應該是一個獨立的和鏈接表。用什麼邏輯做出這個決定?

一方面它似乎很好地分開它,但是你也有連接表的開銷。只有一次付款會與一個帖子關聯。

+1

在這種情況下,支付是一個弱實體,因爲它可以沒有父母就沒有存在。用非常嚴格的術語來說,它可能應該是你自己已經想出的表格。 *用於做出這一決定的邏輯*取決於百分之多少人最終支付的費用。如果這個數字很低,它應該是它自己的表格,以防止大量記錄具有多個「null」值。只有一個意見。 – Yuck 2014-09-05 12:51:57

+0

謝謝,這很有幫助 – 2014-09-05 12:55:42

回答

2

卡片數據應該位於不同的表格中,其userId鏈接到您的用戶表格。

對於你想要達到的目標知之甚少,我會說你至少需要3張桌子。

  1. 用戶表
  2. 後表用戶id反向鏈接到用戶表
  3. 支付卡表用戶id反向鏈接到用戶表
+0

酷,這幾乎是我有的結構 – 2014-09-05 12:56:06

+0

這種格式允許多種付款方式。如果它回答你的問題,請標記:) – Tim 2014-09-05 12:59:18