2012-07-16 149 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位数字,那么它们在字符串中的位置是否重要?这些信息将用于什么?

如果没关系,只需用正则表达式抓住数字,忽略不是数字的东西,然后将数字填入表格列。