Sha256: 64755ac5666cc4e514d0130b89509fc0fd1b4b917ab1229898156804dfde2329

Contents?: true

Size: 969 Bytes

Versions: 1

Compression:

Stored size: 969 Bytes

Contents

vocabulary Supervision;

/*
 * Value Types
 */
CompanyName is written as String;
EmployeeNr is written as Signed Integer(32);

/*
 * Entity Types
 */
Company is identified by its Name;

Employee is identified by Company and EmployeeNr where
	Employee works for one Company,
	Company employs Employee,
	Employee has one EmployeeNr,
	EmployeeNr is of Employee;

Manager is a kind of Employee;
Manager supervises Employee,
	Employee reports to at most one Manager;

CEO is a kind of Manager;
CEO runs Company,
	Company is run by one CEO;

/*
 * Constraints:
 */
either Employee reports to Manager(1) or Employee is a Manager(2) that is a CEO that runs Company but not both;
CEO runs Company
	if and only if
	CEO is a kind of Manager that works for Company;
// This constraint cannot be expressed in NORMA until it adds explicit join paths:
Employee(1) reports to Manager that is a kind of Employee(2) that works for Company
	if and only if
	Employee(1) works for Company;

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activefacts-0.8.8 examples/CQL/Supervision.cql