MySQL:在数据库中制作paypal付款信用系统需要哪些字段?

时间:2012-07-08 12:02:15

标签: mysql sql

现在我有3张桌子:

CREATE TABLE `tbl_payment_info` (
  `payment_info_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `payment_type` tinyint(2) NOT NULL, (for users to choose paypal or credit card)
  `num_credits` int(11) NOT NULL,
  `price_per_credits` float NOT NULL,
`payment_time_stamp` datetime NOT NULL,
  PRIMARY KEY (`payment_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `tbl_paypal_info` (
  `paypal_info_id` int(11) NOT NULL AUTO_INCREMENT,
  `paypal_email` varchar(100) DEFAULT NULL,
  `payment_info_id` int(11) NOT NULL,
  PRIMARY KEY (`paypal_info_id`),
  KEY `tbl_paypal_info_ibfk_1` (`payment_info_id`),
  CONSTRAINT `tbl_paypal_info_ibfk_1` FOREIGN KEY (`payment_info_id`) REFERENCES `tbl_payment_info` (`payment_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `tbl_credit_card_info` (
  `credit_card_info_id` int(11) NOT NULL,
  `payment_info_id` int(11) NOT NULL,
  `card_fullname` varchar(128) NOT NULL,
  `credit_number` varchar(20) NOT NULL,
  `credit_card_type` tinyint(2) NOT NULL,
  `billing_address_Line_1` varchar(100) NOT NULL,
  `billing_address_line_2` varchar(100) DEFAULT NULL,
  `billing_city` varchar(50) NOT NULL,
  `billing_country` varchar(50) NOT NULL,
  `billing_phone` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`credit_card_info_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我错过了什么吗?有没有更好的方法来更有效地写它?任何建议都会有所帮助。提前谢谢。

1 个答案:

答案 0 :(得分:2)

不知道这些字段是否会丢失,但信用卡表中的字段是:

  • billing_state
  • billing_zip
  • credit_exp_date

在PayPal表上,您可能还想保存transactionId。我不知道这是否是您在该表中的 payment_info 列的意图,但如果是,您可能希望将字段类型从 int 更改为 varchar ,因为paypal在其交易ID中返回字母和数字的混合

一条评论,信用卡号码最多为16位数。你有一个20字符的字段。

我对效率的最后评论是,我不会在第一张桌子上使用UTF-8浪费空间。它看起来并不像是存储国际字符。