同样是图7.3中类继承关系,采用每个实体保存为一个表的策略时,也需要创建5个表。创建表的SQL脚本如下所示。
/*员工表*/
CREATE TABLE tb_employee (
id int(20) NOT NULL auto_increment,
name varchar(255) ,
PRIMARY KEY (id)
);
/*正式员工表*/
CREATE TABLE tb_regular_employee (
id int(20) NOT NULL auto_increment,
name varchar(255) ,
vacation_days int(10),
PRIMARY KEY (id)
);
/*合同员工表*/
CREATE TABLE tb_contract_employee (
id int(20) NOT NULL auto_increment,
name varchar(255) ,
create_date date,
expired_date date,
PRIMARY KEY (id)
);
/*全职员工表*/
CREATE TABLE tb_fulltime_employee (
id int(20) NOT NULL auto_increment,
name varchar(255) ,
create_date date,
expired_date date,
monthly_salary double(10,2),
PRIMARY KEY (id)
);
/*兼职员工表*/
CREATE TABLE tb_parttime_employee (
id int(20) NOT NULL auto_increment,
name varchar(255) ,
create_date date,
expired_date date,
hourly_salary double(10,2),
worked_hours int(10),
PRIMARY KEY (id)
);
因为这几个表共同表示一个实体类继承结构,所以建议使用统一的Id生成策略,所以这里还需要另外一个主键生成策略的表,并预置一条数据。
CREATE TABLE tb_generator (
id int(20) NOT NULL auto_increment,
gen_name varchar(255) ,
gen_value int(20),
PRIMARY KEY (id)
);
INSERT INTO tb_generator(gen_name,gen_value) VALUES ('employee_id',1);