August 30
La tabella dei dipendenti è una delle tante tabelle create nello schema di campionamento delle risorse umane fornito da Oracle. Il database delle risorse umane tiene traccia delle informazioni dei dipendenti e le strutture per una società fittizia. Oracle fornisce i database di esempio per creare una base comune per gli esempi nella documentazione tecnica.
1 Connettersi a Oracle con un account che dispone di autorizzazioni adeguate per creare e modificare tabelle.
2 Inserire il seguente SQL (Structured Query Language) per configurare la protezione per il database delle risorse umane:
GOCCIA hr USER CASCADE;
CREATE hr utente identificato hr;
ALTER hr utente temporaneo TABLESPACE temporanea;
GRANT creare sessione
, create table
, Creare procedure
, Creare la sequenza
, Creare innesco
, Creare vista
, Creare sinonimo
, Alterare la sessione
HR;
CONNECT / AS SYSDBA;
GRANT eseguire su sys.dbms_stats HR;
COMMETTERE;
3 Inserire il seguente SQL nell'ambiente di sviluppo per creare il database delle risorse umane:
CREATE TABLE regioni
( region_id NUMBER
Vincolo NOT NULL region_id_nn
, REGION_NAME VARCHAR2 (25)
);
CREATE UNIQUE INDEX reg_id_pk
Sulle regioni (region_id);
ALTER TABLE regioni
ADD (reg_id_pk VINCOLO
PRIMARY KEY (region_id)
);
CREATE TABLE paesi
( country_id CHAR(2)
Vincolo NOT NULL country_id_nn
, COUNTRY_NAME VARCHAR2 (40)
, NUMERO region_id
, Country_c_id_pk VINCOLO
PRIMARY KEY (country_id)
)
ORGANIZZAZIONE indice;
ALTER TABLE paesi
ADD (countr_reg_fk VINCOLO
FOREIGN KEY (region_id)
regioni riferimenti (region_id)
);
CREATE TABLE posizioni
( location_id NUMBER(4)
, STREET_ADDRESS VARCHAR2 (40)
, Postal_code VARCHAR2 (12)
, Città VARCHAR2 (30)
Vincolo NOT NULL loc_city_nn
, State_province VARCHAR2 (25)
, Country_id CHAR (2)
);
CREATE UNIQUE INDEX loc_id_pk
ON posizioni (location_id);
ALTER TABLE posizioni
ADD (loc_id_pk VINCOLO
PRIMARY KEY (location_id)
, Loc_c_id_fk VINCOLO
FOREIGN KEY (country_id)
Paesi riferimenti (country_id)
);
CREATE SEQUENZA locations_seq
Iniziare con 3300
INCREMENTO DA 100
MAXVALUE 9900
NOCACHE
NOCYCLE;
CREATE TABLE reparti
( department_id NUMBER(4)
, Department_name VARCHAR2 (30)
Vincolo NOT NULL dept_name_nn
, NUMERO manager_id (6)
, NUMERO location_id (4)
);
CREATE UNIQUE INDEX dept_id_pk
ON dipartimenti (department_id);
ALTER TABLE reparti
ADD (dept_id_pk VINCOLO
PRIMARY KEY (department_id)
, VINCOLO dept_loc_fk
FOREIGN KEY (location_id)
luoghi riferimenti (location_id)
);
CREATE SEQUENZA departments_seq
Iniziare con 280
INCREMENTO DA 10
MAXVALUE 9990
NOCACHE
NOCYCLE;
Creare posti di lavoro TABLE
( job_id VARCHAR2(10)
, Job_title VARCHAR2 (35)
Vincolo NOT NULL job_title_nn
, NUMERO min_salary (6)
, NUMERO max_salary (6)
);
CREATE UNIQUE INDEX job_id_pk
ON posti di lavoro (job_id);
ALTER TABLE posti di lavoro
ADD (job_id_pk VINCOLO
PRIMARY KEY(job_id)
);
CREATE TABLE dipendenti
( employee_id NUMBER(6)
, First_name VARCHAR2 (20)
, LAST_NAME VARCHAR2 (25)
VINCOLO emp_last_name_nn NOT NULL
, E-mail VARCHAR2 (25)
VINCOLO emp_email_nn NOT NULL
, PHONE_NUMBER VARCHAR2 (20)
, DATA data_assunzione
VINCOLO emp_hire_date_nn NOT NULL
, Job_id VARCHAR2 (10)
VINCOLO emp_job_nn NOT NULL
, Stipendio NUMBER (8,2)
, NUMERO commission_pct (2,2)
, NUMERO manager_id (6)
, NUMERO department_id (4)
, Emp_salary_min VINCOLO
CHECK (stipendio> 0)
, Emp_email_uk VINCOLO
UNIQUE (e-mail)
);
CREATE UNIQUE INDEX emp_emp_id_pk
Sui dipendenti (employee_id);
ALTER TABLE dipendenti
ADD (emp_emp_id_pk VINCOLO
PRIMARY KEY (employee_id)
, Emp_dept_fk VINCOLO
FOREIGN KEY (department_id)
dipartimenti RIFERIMENTI
, Emp_job_fk VINCOLO
FOREIGN KEY (job_id)
Lavoro Referenze (job_id)
, Emp_manager_fk VINCOLO
FOREIGN KEY (manager_id)
dipendenti RIFERIMENTI
);
ALTER TABLE reparti
ADD (dept_mgr_fk VINCOLO
FOREIGN KEY (manager_id)
dipendenti riferimenti (employee_id)
);
CREATE SEQUENZA employees_seq
Iniziare con 207
Incrementa di 1
NOCACHE
NOCYCLE;
CREATE TABLE JOB_HISTORY
( employee_id NUMBER(6)
Vincolo NOT NULL jhist_employee_nn
, DATA START_DATE
Vincolo NOT NULL jhist_start_date_nn
, DATA data_finale
Vincolo NOT NULL jhist_end_date_nn
, Job_id VARCHAR2 (10)
Vincolo NOT NULL jhist_job_nn
, NUMERO department_id (4)
, Jhist_date_interval VINCOLO
CHECK (END_DATE> START_DATE)
);
CREATE UNIQUE INDEX jhist_emp_id_st_date_pk
ON JOB_HISTORY (employee_id, START_DATE);
ALTER TABLE JOB_HISTORY
ADD (jhist_emp_id_st_date_pk VINCOLO
PRIMARY KEY (employee_id, start_date)
, Jhist_job_fk VINCOLO
FOREIGN KEY (job_id)
lavoro Referenze
, Jhist_emp_fk VINCOLO
FOREIGN KEY (employee_id)
dipendenti RIFERIMENTI
, Jhist_dept_fk VINCOLO
FOREIGN KEY (department_id)
dipartimenti RIFERIMENTI
);
COMMETTERE;
4 Inserire il seguente SQL nell'ambiente di sviluppo per aggiungere il dipendente vista dei dettagli al database:
CREARE O SOSTITUIRE VISTA emp_details_view
(ID Dipendente,
job_id,
manager_id,
department_id,
location_id,
country_id,
nome,
cognome,
stipendio,
commission_pct,
Nome Dipartimento,
titolo di lavoro,
città,
state_province,
nome del paese,
REGION_NAME)
AS SELECT
e.employee_id,
e.job_id,
E.id_manager,
e.department_id,
d.location_id,
l.country_id,
e.first_name,
ECOGNOME,
e.salary,
e.commission_pct,
d.department_name,
j.job_title,
l.city,
l.state_province,
c.country_name,
r.region_name
DA PARTE DI
dipendenti e,
dipartimenti d,
posti di lavoro j,
posizioni l,
paesi c,
regioni r
DOVE 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 m.id_mans = e.job_id
In sola lettura;
COMMETTERE;