Example 12-14: Object view imposes rich structure over flat tables

CREATE VIEW flight_schedule_view AS
SELECT flight(ft.carrier,
              ft.flight_number,
              airport(ao.Name, 
                      ao.Code,
                      map_location(
                        point(
                          ao.Lat_Degrees,
                          ao.Lat_Minutes,
                          ao.Lat_Seconds,
                          ao.Lat_Hemisphere),
                        point(
                          ao.Long_Degrees,
                          ao.Long_Minutes,
                          ao.Long_Seconds,
                          ao.Long_Hemisphere),
                        ao.Elevation)),
              airport(ad.Name, 
                      ad.Code,
                      map_location(
                        point(
                          ad.Lat_Degrees,
                          ad.Lat_Minutes,
                          ad.Lat_Seconds,
                          ad.Lat_Hemisphere),
                        point(
                          ad.Long_Degrees,
                          ad.Long_Minutes,
                          ad.Long_Seconds,
                          ad.Long_Hemisphere),
                        ad.Elevation))) as flight,
        ft.departs_at
  FROM flight_schedule_table ft,
       airport_table         ao, /* Origin Airport      */
       airport_table         ad  /* Destination Airport */
  WHERE ft.departing = ao.Code
    AND ft.arriving  = ad.Code;