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 ]
|
|