UNIT 2 FILE CONCEPTS AND FILE STRUCTURE

Structure 2.0 Objectives 2.1 Introduction 2.2 File Organisation 2.2.1 Sequential File Organisation 2.2.2 Indexed Sequential File 2.3 Random Access File Organisation 2.4 Multi-key File Organisation 2.4.1 Multilist File Organisation 2.4.2 Inverted File Organisation 2.5 Summary 2.6 Answers to Self Check Exercises 2.7 Keywords 2.8 References and Further Reading 2.0 OBJECTIVES

In the preceding Unit of this block you have learnt about the Concepts and various types of and database models. You have seen that the files are main ingredient of databases. In this Unit you will learn the concepts of files in the computer environment and also how such files are organised. After the completion of this unit, you will be able to:  define what is file organisation and discuss its different types;  understand various file organisation techniques; and  discuss various types of indexes used in file organisation. 2.1 INTRODUCTION

Generally speaking, a file consists of a collection of records. A key element in file management is concerned with the ways in which the records themselves are organised inside the file, since this affects system performances heavily as far as record finding and access are concerned. Here, by “organisation”, we refer to the logical arrangement of the records in a file (their ordering or, more generally, the presence of ``closeness’’ relations between them based on their content), and not to the physical layout of the file as stored on a storage media. However, access method of records in a file is dependent upon the physical medium on which the files, records are stored. Magnetic tape is sequential by its very nature. To read a record you must start at the beginning of the tape and sequentially read each record one after another (sequentially) until you get to 28 the one you want just like when you listen a song recorded in a audio tape. With disks, of course, random access of records is possible. It is the same as the difference between audio cassette and audio compact disc. In audio tape, File Concepts and File you have to start at the beginning and run the tape forward until you get to the Structure song you want to hear. With compact disc you can play the songs in random order or go directly to the track you want to hear. In this unit, we will be discussing about the ways data are represented for files on external storage devices so that required functions (e.g., retrieval, update) may be carried out efficiently. A particular organisation method most suitable for any application will depend upon such factors, as the kind of external storage available, types of queries allowed, number of keys, mode of retrieval and mode of update. 2.2 FILE ORGANISATION

The technique used to represent and store the records in a file is known as file organisation. Thus a file is a named collection of related data or facts. Fields are the columns containing one type of information. File is a group of all the records. Therefore, a file contains Records and Records contain fields; Fields contain data items; Data items contain characters (alphabets, digits, special characters, etc.). Each character occupies one byte for its storage.

Characters

Fields

Records

File

Fig. 2.1: Components of a File In the context of a traditional library the author catalogue is a file. Each individual author catalogue card is a record. Each area in a card such as author, title etc. is field. Thus, file may consist of one or more records, a record may consist of one or more fields and so on. A database is a collection of files that together implement a logical data model. Therefore, file organisation refers to the method used in organising data for storage, retrieval and processing. The two types of files in a physical database structure are data files and index files. Data files store the facts that comprise the database. Index files (or directories) support access to the data files but usually do not themselves store facts other than key values. A database’s logical structure helps in determining which facts should be accessed and how these facts relate to one another. Consider a simple bibliographical database. It may consist of a file of records containing bibliographical details about books. Each record about a book may consist of several fields (Author, Title, Imprint, etc.). For fast access to the 29 Database Concepts records we may create another file, an index file or inverted file – each record in which may hold the index term (Name of author, Subject descriptor, etc.) and an index number. It is similar to back of the book index. The organisation of file determines the sequence of a file’s record, which is the physical ordering of records in storage. It also determines the set of operations necessary to find particular records. Record Access Method The method of organising the record in a file is referred to as its structure or organisation. The method by which we search the file in order to retrieve data is called the access method. Since the type of structure determines the possible means of access and vice ersa, these two elements, structure/organisation and access method, are intertwined.

Table 1: Record access for different file organisations

File Organisation Sup Sequential Seq Direct Seq Indexed Seq

For a particular file the most appropriate organisation is determined on the basis of the operational characteristics of the storage medium used and the nature of the operations to be performed on the data. The most important characteristic of a storage device to be considered is whether it allows direct access to particular record occurrences or allows only sequential access to record occurrences. Magnetic disks are examples of direct access storage devices (abbreviated DASD’s). Magnetic tapes are examples of sequential storage devices. The four basic file organisation techniques that we will discuss here are the following: 1) Sequential 2) Indexed sequential 3) Random Access 4) Multi-key 2.2.1 Sequential File Organisation

Sequential file organisation is the simplest file organisation technique. In a sequentially organised file, records are written in a sequence in one long list. The records in the file are arranged, in the same sequence in which they were originally entered/written into the file. That is, the records of the file are stored one after another e.g. record with sequence number 11 located just after the 10th record. 30 Beginning of Record 1 File Concepts and File

○○○○○○○○○○○ Structure file Record 2 ○○ ○○

Record n-1 Record N End of file

Fig. 2.2: Structure of Sequential File The file is read from the beginning in the sequence in which the records are arranged. Thus, in a simple sequential file, the one way to retrieve the data is to start at the beginning of the file and read one record after the other, in sequence, until you reach the record you are searching for. The search is sequential, record by record. This can be time consuming especially for large files. In searching large databases, such sequential method takes relatively more time to identify and retrieve particular records, in comparison with other files. A sequential file could be stored on a sequential storage device such as a magnetic tape. Sequential files are, however, suitable for storing only archive, backup, and transport copies databases. Updating a sequential file usually requires the creation of a new file. To maintain file sequence, records are copied to the point where amendment is required. The changes are then made and copied into the new file. Following this, the remaining records in the original file are copied to the new file. The basic advantage offered by a sequential file is the ease of access to the next record, the simplicity of organisation and the absence of auxiliary data structures. However, replies to simple queries are time consuming for large files. In sequential file in addition to the problem of simple access, there are problems in the insertion and deletion of records. The drawback of a sequential file is that once a sequential file is created, records can be added only at the end of the file. It is not possible to insert records in the middle of the file without rewriting the file. And it is also not possible to modify an existing record without rewriting the file. To delete a record you should locate it first. 2.2.2 Indexed-Sequential File Indexed sequential file is designed to overcome the limitations of the sequential file. In indexed sequential file, a file is sequenced on a particular field, and an index for that file is built, based on that very field. Thus in indexed sequential file a type of indexing technique is added. The index provides a mechanism for faster search. Through indexing, a set of objects is associated to a set of orderable quantities. The indexed sequential file organisation allows both sequential and random processing. A sequential (or sorted on primary keys) file that is indexed is called an indexed sequential file. The index provides for random access to records, while the sequential nature of the file provides easy access to the subsequent records as well as sequential processing. An additional feature of this file system is the overflow area. This feature provides additional space for record addition without necessitating the creation of a new file. Before starting discussion on indexed 31 Database Concepts sequential file structure, let us, discuss the types of indexes which may be possible. Types of Indexes Each record, whenever it is stored, is given particular location, and this location number is called its address. Through this address the record can be accessed. An index is a table which stores the key values and the corresponding addresses of the records in a file. Given a key value, its address is located in the index and the corresponding record can be accessed using this address. The idea behind an index structure is similar to the one used commonly in textbooks. In a textbook index important terms are listed at the end of the book in alphabetic order. Along with each term, a list of page numbers or locations where the term appears is also given. We can search the index to find a list of addresses – page numbers in this case. This page number is a ‘direct pointer’ to the page in the book where the term appears. One can go directly to the specified page and find the material there. Thus, an index is an exact indication of where each term occurs in the book. When an index is used, the index rather than the file is used for locating a record. A considerable amount of time is saved, but extra space is needed to store the index. The use of index in locating a record is similar to the use of a card index in a library. The user looks up the name of the book he/she wants in the card index, and the index gives the call number, which is like the relative address of the position of the book on the shelves. An index is usually defined on a single field of a file, called an Indexing Field. The index typically stores each value of the index field along with a list of pointers to all disk blocks that contain a record with that field value. The values in the index are ordered and the index file is much smaller than the data file. There are several types of indexes. These include primary index, clustering index, secondary index etc. A primary index is an index specified on the primary key of a data file. Primary key is a field which contains unique values and uniquely identifies each record. By knowing a primary key field’s value we can access its record. The primary key is also known as the ordering key field and is used to physically order the file records on the disk.

Index File Primary Key Block Value pointer K P

M 105

M 109

M 113

32 Fig. 2.3: A Primary Index File and Data File A primary index is an ordered file with two fields. The first field is of same File Concepts and File data type as the primary key field and the second is a pointer to a disk block – Structure a block address (Fig. 2.3). An index file contains one entry (record) for each block in the data file. To find a record using the primary index, first the primary key value is located and then the indicated address is used to find the record. Thus, whenever a record is accessed, first it looks at the index, identifies the block and then it searches sequentially within the block. A clustering index stores data similar to a phone directory where all people with the same last name are grouped together. A clustering index is specified on a field that does not have a distinct value, for each record. These records are then stored in ascending or descending order according to the data values in this field. A table/database can have only one clustering index. e.g., if a clustering index is build on “state” columns of the “Authors” table in the Publisher database, the data will be ordered based on the values of “state” – in either ascending or descending order. A third type of index, called a secondary index, can be specified on any field other than the primary key of the file. A secondary key is any field other than the primary key that is used to uniquely identify a record in a table. Use of indexed files Indexed files are used mainly in areas where timeliness of information is highly critical. Examples are found in airline reservation systems, job banks, military data systems, and other inventory type applications. Here data are rarely processed sequentially, except for the occasional, stock taking. When some information is obtained, e.g., a free seat on a certain flight, the data should be correct at that point of time, and if the information is updated, e.g., a seat is sold on that flight, this fact should be immediately known throughout the system. Indexed files are also desirable at places where data are highly variable and dynamic. Self Check Exercise 1) What is an index? Describe various types of indexes. Note: i) Write your answer in the space given below. ii) Check your answer with the answers given at the end of this Unit...... Structure of Index Sequential Files In Indexed-sequential organisation the records are grouped into fixed-length data block and each record is identified by a primary key. The physical sequence of the file is in ascending order according to the primary key. An index is built, separate from the data records. This index contains key values together with pointers to the data records themselves. Thus the indexed sequential file 33 Database Concepts organisation allows both sequential and random processing. This index permits accessing individual records at random without accessing other records. The entire file can also be accessed sequentially in an indexed sequential organisation. For example, the white pages of an ordinary telephone directory represent an indexed sequential organisation. In the upper left-hand corner of each page is the name of the first person listed on that page. By using this block index, one can easily locate the page that contains a particular name. One can then scan the names on that page until the desired name is located. An index-sequential file is not a single file but it consists of the data plus one or more levels of indexes. The data file contains the actual data items. When inserting a record, we have to maintain the sequence of records and this may necessitate shifting subsequent records. For a large file this is a costly and inefficient process. Instead, an overflow area is provided so that the records that overflow their logical area are shifted into a designated overflow area and a pointer is provided to it to the overflow location. This is illustrated below (Fig. 2.4). Record 615 is inserted in the original logical block causing a record to be moved to an overflow block.

611612 614 618 624 ...... Original logical block

611612 614 615 618 624 ...... Original logical block Overflow block Fig. 2.4: Overflow of Record An index-sequential file is made up of the following components: a) A primary data storage area. This contains the data records of the file. b) Overflow area(s). This is used for records that are added to the file but will not fit in the prime area. c) Indexes. These indexes enable access to any given record. There are two access method for the indexed sequential files. i) Index Sequential Access Method (ISAM ) ii) Virtual Storage Access Method (VSAM ) These two also represent the two basic implementation techniques of the Indexed sequential organisation. ISAM is hardware dependent and VASM is hardware independent technique. Index Sequential Access Method (ISAM ) The ISAM file is a special type of indexed file. In the indexed-sequential file the records are physically stored on the disk in groups. Within each group the records are stored sequentially by primary key. When each group corresponds to a physical subdivision of the disk e.g., a track, the file type is called Index Sequential Access Method (ISAM). A record field or a combination of fields is called a key. A key may be unique or non-unique. It may be primary or secondary. Usually a file may have only one primary key, giving unique names to the records of the file. Any key 34 other than the primary key is a secondary key. There may be one or more secondary keys defined for a file. The unique primary key is the basis for the File Concepts and File Direct and ISAM files, while secondary keys are the basis for any other type Structure of index. Records in an ISAM file may be indexed in two different ways: 1) The entire file is read/searched sequentially using the primary key; and 2) the record is accessed via the index using the key value provided in each index entry, the address is located within the index, and the record is retrieved. A combination of the two types of search may also be used, as with CDS-ISIS and WINISIS database searches. Indexes may be unique or non-unique depending upon the nature of the field or fields used for indexing. There may be several associated indexes in a file to meet the needs of the user. An index on a particular key has the following main functions: to provide random access to the records of the file, and to retrieve all the records in the file in the sequence based on the key.

ISAM file combines some of the good features of indexed and sequential files. The ISAM file requires relatively smaller disk storage space, as it maintains records in the sequence on each track of the file, as mentioned above. A primary key is the basis of constructing an ISAM file. There may be several secondary indexes defined on an ISAM file.

The major disadvantage of the index-sequential organisation is that as the file grows, performance deteriorates rapidly because of overflows and consequently there arises the need for periodic reorganisation. Reorganisation is an expensive process and the file becomes unavailable during reorganisation. Moreover, random access to individual records is relatively slow, and the indexes are organised by hardware boundaries (i.e., tracks and cylinders).

Virtual Storage Access Method (VSAM)

The virtual storage access method (VSAM) is IBM’s advanced version of the index-sequential organisation that avoids these disadvantages mentioned above. It is more powerful and flexible than ISAM.

The VSAM files are made up of two components: the index and data. However, overflows are handled in a different manner. In a VSAM file, the basic indexed data block is called a control interval (or a virtual track). Each time a data block overflows it is divided into two blocks. Appropriate changes are made to the indexes to reflect this division.

Indexed-sequential files of the basic type discussed above are in common use in modern commercial processing. They are used especially in on-line or terminal-oriented access, where the files have to be updated within very short time frame. An indexed-sequential file can, for instance, be used to produce an inventory listing on a daily basis. Indexed-sequential files are also commonly used to handle inquiries, like billing inquiries based on account numbers.

VSAM offers many advantages over ISAM. In VSAM, periodic file reorganisation is not required as the file can grow indefinitely by means of the splitting process. The VSAM file organisation is also independent of hardware characteristics. 35 Database Concepts 2.3 RANDOM ACCESS FILE ORGANISATION

A Random access organisation is also called Direct access or Relative organisation. A random access file is a collection of fixed-length records which are stored adjacently. It differs from the indexed sequential organisation in that the records are not stored in particular sequence. There is no particular correspondence between record and the file address. To co-relate records to file location linear addressing or hashing methods are used. In simple implementations of direct access, identification numbers are assigned to the data records that provide a relative address into the file. A Relative (or direct or random access) file is fastest for retrieving individual records and is based on primary key.

Record I

Record N Record 2 Record N – Record I

Record I – 1

Record 3

Fig. 2.5: Relative File Organisation Files using linear addressing occupy least amount of disk space as there is a one-to-one correspondence between each record key and a disk address. The files can be added to within the limits of the disk space available. A disadvantage of linear addressing files is that primary key values are usually assigned by the DBMS, and these values change whenever the file is reorganised. File organisation has to be done periodically to recover empty space in the disc due to changes and deletions in the records.

Hashing is an algorithm used by programmers to obtain direct access to a relative file with the primary key. In this technique, some sort of mathematical operation is performed on a field of the record and the result is used as an address. A Direct file which uses hashing methods permits any type of data element to be defined as the primary key. Then it converts primary key values directly into addresses. For example you input a Student ID Number, a mathematical formula is applied to it, and the resulting value is the value that points to the storage location on disk where the record can be found. This means that we need to know the key value to retrieve a particular record.

Key value Hash function Address

Fig. 2.6: Mapping from a Key Value to an Address Value

Thus, hashing is a method for converting primary key values to disk addresses. This is different from the direct addressing approach, because here the record addresses are not linearly related to the key values, in fact it is a random function 36 of the key. The random-access method is fast, since it avoids intermediate file operations, File Concepts and File but the method forces the data to be located according to single key attribute. Structure In a random access, file insertions and deletions are more easily handled. It provides rapid access to individual records since it is not necessary to search indexes. The records are not stored in primary key sequence. However, one disadvantage is that disk space is not as efficiently utilised and periodic reorganisation is required.

Random access files are stored in main memory, or on direct access storage devices, such as magnetic disks.

Random access file is the fundamental organisation of every database. Random access files are used in many online systems like airline reservation systems, library information retrieval system. In these systems, both updating and retrieval are accomplished in the random mode, and there is rarely a need for sequential access to the data records. It is most suitable in applications where records are small and fixed, where fast access is essential, and where the data are always simply accessed. Simple access here means use of a single key for retrieval, and no serial access. Self Check Exercise 2) What is the difference between sequential file and random access file? Note: i) Write your answer in the space given below. ii) Check your answer with the answers given at the end of this Unit...... 2.4 MULTIKEY FILE ORGANISATION

In this section, we will introduce a family of file organisation schemes that allow records to be accessed by more than one key field. Until this point, we have considered only single-key file organisation. Sequential, by a given key; direct access by a particular key; and indexed sequential giving both direct and sequential access by a single key. Now we enlarge our base to include those file organisation that enable a single data file to support multiple access paths, each by a different key. These file organisation techniques are at the heart of database implementation. The ability to search on many keys is enabled by building multiple index files (multikey file organisation) “on top of” the data file. The physical database then consists of one or more data files and many index files, and each data file contains either one or several record types. Each index file supports access by a particular field or group of fields. There are numerous techniques that have been used to implement multikey file organisation. Most of the approaches are based on building indexes to 37 Database Concepts provide direct access by key value. In this section, we will discuss two approaches for providing additional access paths into a file of data records.  Multilist file organisation  Inverted file organisation 2.4.1 Multilist File Organisation

The basic approach to providing the linkage between an index and the file of data records is called multilist organisation. A multilist file maintains an index for each secondary key. The index for secondary key contains, instead of a list of primary keys related to that secondary key, only one primary key value related to that secondary key. That record will be linked to other records containing the same secondary key in the data file. The multi-list organisation differs from inverted file in that while the entry in the inverted file index for a key value has a pointer to each data record with that key value, the entry in the multi-list index for a key value has just one pointer to the first data record with that key value. Linking records together in order of increasing primary key value facilitates easy insertion and deletion once the place at which the insertion or deletion to be made is known. Searching for a record with a given primary key value is difficult when no index is available, since the only search possible is a sequential search. To facilitate searching on the primary key as well as on secondary keys, it is customary to maintain several indexes, one for each key. Using an index in this way reduces the length of the lists and thus the search time. This idea is very easily generalised to allow for easy secondary key retrieval. We just set up indexes for each key and allow records to be in more than one list. This leads to the multilist structure for file representation. 2.4.2 Inverted File Organisation In inverted file organisation, a linkage is provided between an index and the file of data records. A key’s inverted index contains all of the values that the key presently has in the records of the data file. Each key-value entry in the inverted index points to all of the data records that have the corresponding value. Inverted files represent one extreme of file organisation in which only the index structures are important. The records themselves may be stored in any way (sequentially ordered by primary key, random, linked ordered by primary key etc.).

Eff index Occupation index Salary index 510 analyst B.C. 9,000 E 620 programmer A.D.E 10,000 A 750 12,000 C,D 800 15,000 B Sex index 950 female B.C.D male A.E 38 Fig. 2.7: Indexes for Fully Inverted File Inverted files may also result in space saving compared with other file structures File Concepts and File when record retrieval does not require retrieval of key fields. In this case, the Structure key fields may be deleted from the records. Both inverted files and multilist files have:  An index for each secondary key.  An index entry for each distinct value of the secondary key.  The index may be tabular or tree-structured.  The entries in an index may or may not be sorted.  The pointers to data records may be direct or indirect. The indexes differ in that  An entry in an inverted index has a pointer to each data record with that value.  An entry in a multilist index has a pointer to the first data record with that value. Thus an inverted index may have variable-length entries whereas a multilist index has fixed-length entries. Some of the implications of these differences are the following:  Index management is easier in the multilist approach because entries are fixed in length.  The inverted file approach tends to exhibit better inquiry performance. Many types of queries can be answered by accessing inversion indexes without necessitating access to data records, thereby reducing I/O-access requirements.  Inversion of a file can be transparent to a programmer who accesses that file but does not use the inversion indexes, while a multilist structure affects the file’s record layout. The multilist pointers can be made transparent to a programmer if the data manager does not make them available for programmer use and stores them at the end of each record. Self Check Exercises 3) Define Inverted File. 4) Describe the similarities of inverted files and multilist files. Note: i) Write your answer in the space given below. ii) Check your answer with the answers given at the end of this Unit......

...... 39 Database Concepts 2.5 SUMMARY

In this Unit you have learnt some basic concepts of file organisation. Not only the medium must allow for random access to records, but the file itself must support going directly to the record you want to retrieve. This characteristic of the file is called “file organisation.” We discussed four fundamental file organisation techniques. These are sequential, indexed sequential, relative (or random access) and multikey file organisation. The selection of the appropriate organisation for a file in an information system is important to the performance of that system. The criteria to be considered while choosing a file organisation, for achievement of good performance with respect to the most likely usage of the file, are fast access to single record or collection of related records, easy record adding/updating/removal, storage efficiency, redundancy as a warranty against data corruption. You also studied various types of indexes like primary index, secondary index, and clustering index.

2.6 ANSWERS TO SELF CHECK EXERCISES

1) An index is usually defined on a single field of a file, called an Indexing Field. The index typically stores each value of the index field along with a list of pointers to all disk blocks that contain a record with that field value. There are various types of indexes: primary, secondary and clustering indexes.

2) In a sequentially organised file, records are written consecutively when the file is created and must be accessed consecutively when the file is later used for input. Records in the file are arranged in the same sequence in which they were originally entered / written into the file. A sequential file could be stored on a sequential storage device such as a magnetic tape. A Relative (or direct or random access) file is based on primary key. It is fastest for retrieving individual records. With Direct file organisation, records are assigned relative record numbers based on a mathematical formula known as a hashing algorithm. Magnetic disks are examples of direct access storage devices (abbreviated DASD’s).

3) Inverted File is a file organisation technique wherein index is generated based on key values of the record. There are two files – Index File and Data Record File

4) The inverted and multilist files have following features in common: Both inverted files and multilist files have  An index for each secondary key.  An index entry for each distinct value of the secondary key.  The index may be tabular or tree-structured.  The entries in an index may or may not be sorted.  The pointers to data records may be direct or indirect. 40 File Concepts and File 2.7 KEYWORDS Structure

Attribute : A named characteristic or descriptor of an entity. Also called Data element, Data item, Data field. Database : A collection of logically related data that supports shared access by many users and is protected and managed to retain its value. Data File : A file that contains user records rather than indexes to other records. Compare with Index file. Data Security : The ability to prevent unauthorised accesses to and actions on a database. File : A collection of logically related record occurrences that are treated as a unit by a system’s input and output routines; commonly stored on a secondary storage device. File Organisation : The technique used to represent and store the records on a file. Primary Key : One or more attributes whose values uniquely differentiate one entity (or record)” instance from another. Record : A named collection of zero, one, or many data items. Secondary Key : A field that is the basis for a secondary index. The field need not have unique values. Also called Alternate key, Inversion entry, Compare with Primary key. 2.8 REFERENCES AND FURTHER READING

Bayross, Ivan N. (2003). Database Concepts and Systems. Navi Mumbai: Shroff. Connolly, Thomas M. and Begg, Carolyn E. (2002). Database Systems: A Practical Approach to Design, Implementation, and Management. New Delhi: Pearson Education Asia. Chowdhury, G.G.(2004). Introduction to Modern Information Retrieval. 2nd Ed. London: Facet. Desai, Bipin C. (1994). An Introduction to Database Systems, New Delhi : Galgotia Publication. 41 Database Concepts Flynn, Roger R. (1987). An Introduction to Information Science. New York :Marcel Dekker. Frank, Lars. (1988). Database Theory and Practice. London: Addison-Wesley. Gillenson, Mark, L (1985). Database Step-by-Step. New York: John Wiley. Kroenke, David M. and Dolan, Kathleen A. (1988). Database Processing – Fundamentals, Design Implementation. 3rd edition. Maxwell Macmillan (International Edition). Loomis, Mary E.S. (1990). Data Management and File Structures. (Second Edition). New Delhi : Prentice Hall. Loomis, Mary E.S. (1987). The Database Book. Bangkok : Macmillan. McFadden, Fred R. and Hoffer, Jeffer A. (1988). Database Management. San Francisco : Benjamin/Cummings. Loomis, Mary E. S. (2001). Data Management and File Structures. 2nd Ed. New Delhi : PHI. Tsai, Alice Y. H. (1988). Database Systems, Management and Use. Ontario: Prentice Hall. Wielderhold, Gio. (1983). Database Design. 2nd Edition. Singapore : Macgraw Hill.

42