2012-07-16 103 views
0

好吧,目前爲止我有一個存儲收據信息的表。數據庫設計:存儲信用卡信息

例如:

TABLE receipt 
receipt_ID (int)(primary key) 
creditcard (int) //Last 4 digits of credit card. 
purhcaseAmount (int) 
transactionTypeID (int) 
remainingBalance (int) 

的CREDITCARD列有4個位數的限制,因爲大部分收入只顯示最後4位數字的信用卡號碼。

但是,一些銀行顯示前兩位數字和最後兩位數字,我想保留這些信息到數據庫中。

如何修改數據庫設計以適應此業務需求?

+3

對信用卡信息非常小心。 PCI合規的範圍甚至可以考慮部分。 – 2012-07-16 19:33:38

+0

也許不是最好的方法,但當然你可以使它成爲一個varchar並在4位數之前放置一個字符標誌。因此,對於最後4位數字,它將是l9999以及第一個和最後兩個b9999或您想要的任何字符。只是我的第一個想法。 – thatidiotguy 2012-07-16 19:34:03

回答

2

您可能需要存儲多張關於信用卡的信息,例如姓名,卡片類型等。對於號碼本身,爲什麼要聰明?只需將它設爲varchar(19)並將其存儲爲12****************34或您選擇的任何其他格式即可。

+0

信用卡號碼不總是16個字符。 – podiluska 2012-07-16 19:34:55

+0

我會擔心一列可能會讓你意外地把一個完整的信用卡號碼。 – 2012-07-16 19:35:34

+0

@ podiluska真的,那裏有一個理論上的19位數字卡。 – 2012-07-16 19:35:57

1

我不會使用int,即使是最後4位數字也是如此。作爲一個經驗法則,如果存儲的數字加起來沒有意義,請將其存儲爲字符串。

0

如果您的業務需求是存儲4位數字,那麼它們在字符串中的位置是否重要?這些信息將用於什麼?

如果沒關係,只需用正則表達式抓住數字,忽略不是數字的東西,然後將數字填入表格列。