The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
CREATE SEQUENCE emp_seq;
CREATE SEQUENCE address_seq;

CREATE TABLE dept (
 deptno  NUMBER(2) CONSTRAINT dept_pk PRIMARY KEY,
 dname   VARCHAR2(20),
 loc     VARCHAR2(20),
 addr_id NUMBER(2)
); 

CREATE TABLE address (
 id	  NUMBER,
 loc      VARCHAR2(20),
 town     VARCHAR2(20),
 postcode VARCHAR2(20)
);

CREATE OR REPLACE TRIGGER address_autogen
BEFORE INSERT ON address FOR EACH ROW
BEGIN
    IF :new.id is null then
        SELECT address_seq.nextval INTO :new.id FROM dual;
    END IF;
END;

CREATE TABLE emp(
 empno      NUMBER NOT NULL,
 ename      VARCHAR2(10),
 job        VARCHAR2(20),
 mgr        NUMBER(4),
 hiredate   DATE,
 sal        NUMBER(7,2),
 comm       NUMBER(7,2),
 deptno     NUMBER(2),
 CONSTRAINT emp_pk PRIMARY KEY(empno),
 FOREIGN KEY (deptno) REFERENCES dept (deptno) 
);

CREATE OR REPLACE TRIGGER emp_autogen
BEFORE INSERT ON emp FOR EACH ROW
BEGIN
    IF :new.empno is null then
        SELECT emp_seq.nextval INTO :new.empno FROM dual;
    END IF;
END;

CREATE TABLE bonus(
ename VARCHAR2(10),
 JOB  VARCHAR2(20),
 SAL  NUMBER,
 COMM NUMBER
);

CREATE TABLE project (
 projno NUMBER, 
 name  VARCHAR2(100),
 CONSTRAINT proj_pk PRIMARY KEY(projno)
);

CREATE TABLE emp_project(
  empno NUMBER,
  projno NUMBER,
  leader VARCHAR2(1),
  CONSTRAINT emp_proj_pk PRIMARY KEY(empno, projno),
  FOREIGN KEY (empno) REFERENCES emp(empno),
  FOREIGN KEY (projno) REFERENCES project(projno)
);


CREATE TABLE seq_generator
(
  pk_column VARCHAR2(30),
  value_column NUMBER
);


CREATE TABLE photo(id NUMBER, name VARCHAR2(100), doc_size NUMBER, blob_content BLOB, empno NUMBER);