When computers were first started in the 1940s through the early 1960s, punch cards ruled the day. Each card was about 3.5 by 8 inches with 80 columns of positions that enable the specification of “capital” letters and numbers.
Enterprise persistent data had to fit on one or more of these 80-column cards. If there was more data about a customer, contract, person, order, etc. that fit on a single punched card, additional or subordinate cards were created. The fact that these additional cards were subordinate required two more pieces of information: Card Type, and an identifier of the “parent” card.
After a period of time, during the middle 1960s though the 1980s, computer languages were created such as COBOL (Commercial Oriented Business Language) and the punch cards were transformed into tape-based files. Because of this transformation, much more complex and comprehensive data structures were created. When disks replaced tapes, the ability to directly access individual subordinate records, such as a Order Detail record was relatively easy.
Database, that is separate definitions of data structures along with their collections of millions of records started to be developed. These separate definitions were independent of specific data processing languages such as COBOL.
Once databases were started, large scale software systems called database management systems (DBMS) were invented. During the early days of DBMS (middle 1960s through the middle 1980s) the data structures for DBMS were directly modeled after those created for COBOL, that is, hierarchical (e. g., IMS and System 2000), network (e. g., IDMS, DMS 1100, and Total) and shallow structure data models (e. g., Adabas, Focus, and Datacom DB) were created. The last class’s data model was called Independent Logical File.
During the late 1970s through the early 1990s, a whole new class of DBMS started that modeled data structures as two-dimensional data structures. That is, data structures that contained multiple single-value fields (e.g., Customer name) that provided the type-information for data records. The data structure is called a Table, and the data records are called Rows.
When each row is able to be uniquely inserted, selected, retrieved, updated and deleted that is accomplished through a concept called a Primary Key. A table's primary key consists of one or more columns whose combined value is unique across all the rows.
Relationships are able to exist from parent tables to child tables. These relationships are accomplished through Foreign Keys. A foreign key is a concept wherein the columns that comprise a Primary Key from a parent table is defined within a child table and is then called a Foreign Key. This strategy relates back to the days of parent and subordinate data structure punch cards.
These data models were called “Relational” and the DBMSs that supported these databases were called Relational DBMSs. Examples included IBM’s DB2, Oracle, Sybase, and MySQL. While this was considered a great leap forward by academics, lost was the concept of complex data structures from the 1960s through the early 1990s. Also during this time frame, a DBMS language, as popular as COBOL for commercial data processing was created. It is called SQL, and is standardized by ISO and ANSI.
With the advent of SQL:1999 its data structures can directly model network, hierarchical, independent logical file, and relational data structures.