A Non-Relational Representation (Cont.)


Companies
It has a name, head office, several subsidiaries, and a president.

Company
CompanyID Name Street Location President

Subsidiaries
It has a name, office, manager, and employees.

Subsidiary
CompanyID NameSubs Street Location Manager
  aggregation ( [...]: tuple type and {...}: set type )
Company: [
  Name: String,
  Headoffice: Address,
  Subsidiaries: { Subsidiary },
  President: Employee ]
Subsidiary: [
  Name: String,
  Office: Address,
  Manager: Employee,
  Employees: { Employee } ]

Address: [
  Street: String,
  Location: String ]

For aggregation, the name of a type can be directly referred in another type. Because attributes are associated with named types, there is no longer a need for a foreign key clause as in the relational model.

Vehicles
It has a model name, color, and manufacturer.
 
Vehicle: [
  Model: String,
  Manufacturer: Company,
  Color: String ]




      “We live in an age when unnecessary things are our only necessities.”    
      ― Oscar Wilde