由于特殊需要,需要将多对多的方式拆成2个多对一(或一对多)。主要区别是多了一个中间的关联类。
需求是:日程可以共享(也可不共享),共享又可共享给整个公司和可选的部门。是一个简化了的需求,以做测试用。具体可以看源码。
表结构:
DROP TABLE IF EXISTS `calendar`;
CREATE TABLE `calendar` (
`f_id` int(10) NOT NULL default '0',
`f_date` date default NULL,
`f_time` char(6) default NULL,
PRIMARY KEY (`f_id`)
) TYPE=InnoDB;
#
# Structure for the `department` table :
#
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`f_id` int(10) NOT NULL default '0',
`f_name` char(30) default NULL,
PRIMARY KEY (`f_id`)
) TYPE=InnoDB;
#
# Structure for the `calendar_department` table :
#
DROP TABLE IF EXISTS `calendar_department`;
CREATE TABLE `calendar_department` (
`f_calendar_id` int(10) NOT NULL default '0',
`f_department_id` int(10) NOT NULL default '0',
PRIMARY KEY (`f_calendar_id`,`f_department_id`),
KEY `calendar_index` (`f_calendar_id`),
KEY `department_index` (`f_department_id`),
CONSTRAINT `calendar_department_ibfk_1` FOREIGN KEY (`f_calendar_id`) REFERENCES `calendar` (`f_id`),
CONSTRAINT `calendar_department_ibfk_2` FOREIGN KEY (`f_department_id`) REFERENCES `department` (`f_id`)
) TYPE=InnoDB;
java文件