O quadro de funcionários é uma das muitas tabelas criadas no esquema de exemplo recursos humanos fornecidos pela Oracle. O banco de dados de recursos humanos segue empregado e instalações de informações para uma empresa fictícia . A Oracle fornece os bancos de dados de exemplo para criar uma base comum de exemplos na documentação técnica. Instruções
1
conectar ao Oracle com uma conta que tenha as permissões adequadas para criar e alterar tabelas.
2
Digite o seguinte SQL ( Structured Query Language ) para configurar a segurança para o banco de dados de recursos humanos :
DROP USER hr CASCADE ;
cRIAR hr usuário identificado por HR ;
ALTER hr USER TEMPORARY TABLESPACE temporário ;
GRANT criar sessão
, criar a tabela
, criar procedimento
, criar seqüência
, criar gatilho
, criar vista
, criar sinônimo
, alterar sessão
para hr ;
CONNECT /AS SYSDBA ;
GRANT executar ON sys.dbms_stats ao RH ;
COMMIT ;
3
Digite o seguinte SQL no ambiente de desenvolvimento para criar o banco de dados de recursos humanos :
cRIAR regiões TABELA
( NÚMERO region_id
CONSTRAINT
region_id_nn NOT NULL
, region_name VARCHAR2 ( 25)
);
CREATE INDEX UNIQUE reg_id_pk
ON regiões ( rEGION_ID );
ALTER TABLE regiões
Adicione ( CONSTRAINT reg_id_pk
CHAVE PRIMÁRIA ( region_id )
);
CRIAR países TABELA
( country_id CHAR (2)
CONSTRAINT country_id_nn NÃO
NULL
, country_name VARCHAR2 ( 40)
, NÚMERO region_id
, CONSTRAINT country_c_id_pk
CHAVE PRIMÁRIA ( country_id )
)
ORGANIZAÇÃO INDEX ;
ALTER TABLE países
ADD ( CONSTRAINT countr_reg_fk
FOREIGN KEY ( rEGION_ID )
regiões Referências ( region_id )
);
criar locais TABELA
( NÚMERO location_id (4 )
, street_address VARCHAR2 ( 40)
, postal_code VARCHAR2 ( 12)
, cidade VARCHAR2 ( 30)
restrição NOT NULL loc_city_nn
, state_province VARCHAR2 ( 25)
, country_id CHAR (2)
);
CREATE INDEX UNIQUE loc_id_pk
ON locais ( location_id ) ;
ALTER TABLE locais
Adicione ( CONSTRAINT loc_id_pk
CHAVE PRIMÁRIA ( location_id )
, CONSTRAINT loc_c_id_fk
FOREIGN KEY ( country_id )
Referências países ( country_id )
) ;
CREATE SEQUENCE locations_seq
COMEÇAR COM 3300
INCREMENT BY 100
MAXVALUE 9900
NOCACHE
NOCYCLE ;
CRIAR departamentos Table Fotografia
( NÚMERO department_id (4)
, department_name VARCHAR2 (30)
CONSTRAINT dept_name_nn NÃO
NULL
, NÚMERO manager_id (6)
, NÚMERO location_id (4)
);
CREATE INDEX UNIQUE dept_id_pk
ON departamentos ( department_id ) ;
ALTER TABLE departamentos
ADD ( CONSTRAINT dept_id_pk
CHAVE PRIMÁRIA ( department_id )
, CONSTRAINT dept_loc_fk
FOREIGN KEY ( location_id )
locais REFERÊNCIAS ( location_id )
) ;
CREATE SEQUENCE departments_seq
COMEÇAR COM 280
INCREMENT BY 10
MAXVALUE 9990
NOCACHE
NOCYCLE ;
criar empregos TABELA
( job_id VARCHAR2 ( 10)
, job_title VARCHAR2 ( 35) CONSTRAINT
job_title_nn
, NÚMERO min_salary (6)
, NÚMERO max_salary NOT NULL (6)
);
CREATE INDEX UNIQUE job_id_pk
ON empregos ( jOB_ID ) ;
ALTER TABLE empregos
ADD ( CONSTRAINT job_id_pk
CHAVE PRIMÁRIA ( job_id )
);
CRIAR tabela Funcionários
( NÚMERO employee_id (6)
, primeiro_nome VARCHAR2 ( 20)
, last_name VARCHAR2 ( 25) CONSTRAINT
emp_last_name_nn NÃO
NULL
, email VARCHAR2 ( 25) CONSTRAINT
emp_email_nn NOT NULL < br >
, phone_number VARCHAR2 ( 20)
, DATE hire_date
CONSTRAINT emp_hire_date_nn NOT NULL
, job_id VARCHAR2 ( 10)
restrição não emp_job_nn NULL
, NÚMERO salário (8,2 )
, NÚMERO commission_pct (2,2 )
, NÚMERO manager_id (6)
, NÚMERO department_id (4)
, CONSTRAINT emp_salary_min
CHECK ( salary> 0)
, CONSTRAINT emp_email_uk
UNIQUE (e-mail )
);
CREATE INDEX UNIQUE emp_emp_id_pk
ON empregados ( employee_id ) ;
ALTER TABLE empregados
ADD ( CONSTRAINT emp_emp_id_pk
PRIMÁRIA KEY ( employee_id )
, CONSTRAINT emp_dept_fk
FOREIGN KEY ( department_id )
Referências departamentos
, CONSTRAINT emp_job_fk
FOREIGN KEY ( job_id )
Referências empregos ( jOB_ID )
, CONSTRAINT emp_manager_fk
FOREIGN KEY ( MANAGER_ID )
Referências funcionários
);
ALTER TABLE departamentos
ADD ( CONSTRAINT dept_mgr_fk
FOREIGN KEY ( manager_id )
Referências funcionários ( employee_id )
); < br >
CREATE SEQUENCE employees_seq
COMEÇAR COM 207
INCREMENT BY 1
NOCACHE
NOCYCLE ;
CREATE TABLE JOB_HISTORY
( NÚMERO employee_id (6)
CONSTRAINT jhist_employee_nn NOT NULL
, DATE data_inicial
CONSTRAINT jhist_start_date_nn NÃO
NULL
, DATE end_date
CONSTRAINT jhist_end_date_nn NÃO
NULL
, job_id VARCHAR2 ( 10) CONSTRAINT
jhist_job_nn NOT NULL
, NÚMERO department_id (4)
, CONSTRAINT jhist_date_interval
CHECK ( end_date > data_inicial )
);
CREATE INDEX UNIQUE jhist_emp_id_st_date_pk
ON JOB_HISTORY ( employee_id , data_inicial );
ALTER TABLE JOB_HISTORY
ADD ( CONSTRAINT jhist_emp_id_st_date_pk
CHAVE PRIMÁRIA ( employee_id , data_inicial )
, CONSTRAINT jhist_job_fk
FOREIGN KEY ( job_id )
Referências empregos
, CONSTRAINT jhist_emp_fk
FOREIGN KEY ( employee_id )
Referências funcionários
, CONSTRAINT jhist_dept_fk
FOREIGN KEY ( department_id )
Referências departamentos
);
COMMIT ;
4
Digite o seguinte SQL no ambiente de desenvolvimento para adicionar o ver detalhes do empregado ao banco de dados :
CREATE OR REPLACE VIEW e , Baratos
departamentos de d , Baratos
empregos j ,
locais l ,
países c,
regiões r
ONDE e.department_id = d.department_id
E d.location_id = l.location_id
E l.country_id = c.country_id
E c.region_id = r . region_id
E j.job_id = e.job_id
Com apenas leitura ;
COMMIT ;