server scott;
#mode readonly;
#mode readwrite;
mode extend;
#mode migrate
#### physical tables
#column type [primary]
#join table,table,table...
#where ...
table DEPT {
DEPTNO int primary;
DNAME string;
LOC string;
}
table SALGRADE {
GRADE int primary;
LOSAL real;
HISAL real;
}
table EMP {
EMPNO int primary;
ENAME string;
JOB string;
MGR int;
HIREDATE date;
SAL real;
COMM real;
DEPTNO int;
}
table EMPGRADE {
join EMP,SALGRADE;
where "EMP.SAL >= SALGRADE.LOSAL and EMP.SAL <= SALGRADE.HISAL";
}
#### ENOVIA types
#id TABLE(COLUMN)
#type TABLE(COLUMN) [using TABLE(COLUMN)] [alias name]
#name TABLE(COLUMN) [using TABLE(COLUMN)]
#revision TABLE(COLUMN) [using TABLE(COLUMN)]
#description TABLE(COLUMN) [using TABLE(COLUMN)]
#icon TABLE(COLUMN) [using TABLE(COLUMN)]
#owner TABLE(COLUMN) [using TABLE(COLUMN)]
#locker TABLE(COLUMN) [using TABLE(COLUMN)]
#created TABLE(COLUMN) [using TABLE(COLUMN)]
#modified TABLE(COLUMN) [using TABLE(COLUMN)]
#policy TABLE(COLUMN) [using TABLE(COLUMN)]
#state TABLE(COLUMN) [using TABLE(COLUMN)]
#attribute name TABLE(COLUMN) [using TABLE(COLUMN)]
#default policy name
#default owner name
type Department {
id DEPT(DEPTNO);
next "max(DEPTNO)+10";
name DNAME;
attribute "Department Number" DEPTNO;
attribute Location LOC;
default policy Departments;
default owner scott;
}
type "Salary Grade" {
id SALGRADE(GRADE);
next "max(GRADE)+1";
name GRADE;
attribute "Low Salary" LOSAL;
attribute "High Salary" HISAL;
default policy "Salary Grades";
default owner scott;
}
type Employee {
id EMP(EMPNO);
next "max(EMPNO)+1";
name ENAME;
attribute "Employee Number" EMPNO;
attribute Name ENAME;
attribute "Hire Date" HIREDATE;
attribute Salary SAL;
default policy Employees;
default owner scott;
}
type Manager {
derive Employee;
type JOB alias "MANAGER";
}
type Clerk {
derive Employee;
type JOB alias "CLERK";
}
type Analyst {
derive Employee;
type JOB alias "ANALYST";
}
type President {
derive Employee;
type JOB alias "PRESIDENT";
}
type Salesman {
derive Employee;
type JOB alias "SALESMAN";
attribute Commission COMM;
}
#### ENOVIA relationships
relationship Manager {
from Employee in EMP(MGR);
to Employee;
}
relationship Department {
from Department in EMP(DEPTNO);
to Employee;
}
relationship "Salary Grade" {
from "Salary Grade" in EMPGRADE(SALGRADE.GRADE);
to Employee in EMPGRADE(EMP.EMPNO);
}