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

これらがすべてのフィールドが欠落している可能性があるかどうかはわかりませんが、クレジットカードのテーブルに突き出ているフィールドは次のとおりです。

  • Billing_state
  • Billing_zip
  • credit_exp_date

PayPalテーブルで、transactionIdを保存することもできます。これがそのテーブルにあるpayment_info列の意図であるかどうかはわかりませんが、意図している場合は、フィールドタイプをintからvarcharに変更することをお勧めします。これは、 paypalがトランザクションで文字と数字の混合を返すためです。 IDの

そして1つのコメント、クレジットカード番号は最大16桁の長さです。20文字のフィールドがあります。

効率についての私の最後のコメントは、最初のテーブルでUTF-8を使用してスペースを無駄にしないということです。国際文字を格納しているようには見えません。

于 2012-07-09T04:17:19.323 に答える