Database Systems

A database management system — DBMS — manages and controls access to the database itself. A database application is any program that interacts with the database at some point, and a database system is the collection of all those applications working together.

File-Based Systems

Before databases became standard, file-based systems tried to digitalize paper filing cabinets. Each application program defined and managed its own data to produce reports and services for end users. A file is a collection of records; a record is a collection of logically related fields — in a school system, the students file holds student records, and each record contains one student's ID, name, class, and address.

File-based approaches ran into serious problems: data was separated and isolated across different files, often duplicated, and physically dependent on other non-contiguous files. File formats were incompatible between programs, and fixed queries meant you had to write a new application every time you wanted to ask a different question. These limitations pushed the industry toward the database approach.

What Makes a Database Different

A database is a self-describing collection of integrated records, meaning it holds metadata about its own structure. In database terminology, individual data points are called attributes, collections of data about a single object are called entities, and entities can have relationships with each other. When you want the database to do something, you send it a query — often written in SQL, the most common query language.

Inside a DBMS

Every DBMS includes a Data Definition Language to specify data structures and constraints, and a Data Manipulation Language to insert, modify, or delete data — both are types of SQL. A DBMS also provides view mechanisms that add an extra layer of security, let you customize the user interface, and maintain a consistent picture of the database structure even when the underlying schema changes.

Roles in Database Work

Data administrators handle planning, development, and maintenance of the data itself. Database administrators are responsible for the physical realization of the database — hardware, backups, performance tuning. Logical database designers identify what data exists, how entities relate, and what constraints apply. Physical database designers figure out how to turn that logical model into actual tables, indexes, and storage on disk.

On the user side, naive users interact with the DBMS without understanding its internal structure — they just use the interface. Sophisticated users know how the system works under the hood and can write their own queries or even tune performance.

First-Generation DBMS

Early database management systems started with hierarchical models like GUAM and IBM's IMS, which organized data as trees — perfect for parts and subparts, and well suited to magnetic tape. Charles Bachmann's IDS introduced the network model to handle more complex relationships that didn't fit cleanly into a tree structure. The CODASYL/DBTG group later tried to standardize network databases, introducing concepts like schema, subschema, and separate languages for defining versus manipulating data. Together, hierarchical IMS systems and network CODASYL systems are known as the first generation of DBMSs.

Advantages of DBMS

A well-designed DBMS eliminates data redundancy, enforces consistency, and extracts more information from the same amount of data through flexible queries. You get economy of scale, easier sharing across teams, improved integrity and security, and enforced standards. Productivity goes up because developers don't reinvent data-handling logic in every app, and the system can handle concurrent access without conflicts.

Disadvantages of DBMS

The tradeoff is complexity: a DBMS is a large, expensive piece of software that requires training and maintenance. Performance can suffer if the system isn't tuned properly, and because everything depends on one central database, a single failure has a much greater impact than losing one file in a file-based system.