我正忙于一个项目,我遇到的绊脚石之一如下:
我有一个预订表,它可能会或可能不会导致开具发票(因为一些不相关的东西,例如取消)。我将如何强制执行一(在预订方面)到零或一(在发票方面)的关系?到目前为止,这是我所拥有的:
CREATE TABLE IF NOT EXISTS `booking` (
`booking_id` int(11) NOT NULL AUTO_INCREMENT,
`voucher_id` int(11) NOT NULL,
`pickup_date_time` datetime NOT NULL, ...
PRIMARY KEY (`booking_id`,`voucher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
然后,稍后:
CREATE TABLE IF NOT EXISTS `invoice` (
`booking_id` int(11) NOT NULL,
`voucher_id` int(11) NOT NULL,
`invoice_number` int(11) NOT NULL,
`paid` tinyint(1) NOT NULL,
PRIMARY KEY (`booking_id`,`voucher_id`),
UNIQUE KEY `invoice_number` (`invoice_number`),
KEY `voucher_id` (`voucher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
voucher_id
只是我在系统中使用的其他东西。invoice_number
也是在PHP中生成的,所以这无关紧要。
任何帮助将不胜感激!