MySQL:在数据库中创建paypal支付信用系统需要哪些字段?

MySQL:在数据库中创建paypal支付信用系统需要哪些字段?,mysql,sql,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`

现在我有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

我遗漏了什么吗?有没有更好的方法来更有效地编写它?任何建议都会有帮助。提前感谢。

不知道这些字段是否都丢失了,但信用卡表上突出的字段是:

  • 州政府
  • 帐单
  • 信用证到期日
在PayPal表上,您可能还希望保存transactionId。我不知道这是否是该表中“支付信息”列的意图,但如果是,您可能希望将字段类型从int更改为varchar,因为贝宝在其交易id中返回字母和数字的混合

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


我对效率的最后一点意见是,我不会在第一张表上使用UTF-8浪费空间。它看起来并不是真的在存储国际字符。

我不明白,我认为您可以在自己的系统中按自己的方式存储数据。嗯。。。我看过一些关于paypal ipn的教程,可能有些字段是必需的,但这里没有。我只是想再次检查一下是否有遗漏。你不应该在数据库中存储完整的信用卡号码,尤其是明文。那么你会在第一个表中使用默认值吗?因为它看起来大多是简单的字母和数字(除非user_id字段有任何特殊值…),我最多选择ascii或拉丁语1。请注意,这可能会有点性能过度,除非您的表增长到huuuge,否则不会有什么不同