Processing Flat Files in Multiple Orders
Sometimes users may want to process flat files in ways that are not readily supported by the file organi-zation. Consider, for example, the ENROLLMENT records shown in Figure H-1(a). To produce student schedules, they must be processed in StudentNumber sequence. But to produce class rosters, the rec-ords need to be processed in ClassNumber sequence. The records, of course, can be stored in only one physical sequence. For example, they can be in order on StudentNumber or on ClassNumber, but not on both at the same time. The traditional solution to the problem of processing records in different orders is to sort them in student order and process the student schedules and then sort the records in class order and produce class rosters.
For some applications, such as batch-mode systems, this solution is effective, although cumbersome. But suppose that both orders need to exist simultaneously because two concurrent users have different views of the ENROLLMENT records. What do we do then?
One solution is to create two copies of the ENROLLMENT file and sort them, as shown in Figure H-2. Be-cause the data are listed in sequential order, this data structure is sometimes called a sequential list. Sequential lists can be readily stored as sequential files. This solution, however, is not generally support-ed by DBMS products because sequentially reading a file is a slow process. Further, sequential files can-not be updated in the middle without rewriting the entire file. Also, maintaining several orders by keep-ing multiple copies of the same sequential list is usually not effective because the duplicated sequential list can create data integrity problems. Fortunately, other data structures allow us to process records in different orders and do not require the duplication of data. These data structures include linked lists and indexes.