0

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

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

4

1 回答 1

2

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

  • 计费状态
  • 计费_zip
  • credit_exp_date

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

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

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

于 2012-07-09T04:17:19.323 回答