In general there are three broad classes of database user:
- the end user, who accesses the database via a query language or application interface
- the application programmer, responsible for writing programs in some high-level language such as Java, C#, etc.
- the database administrator (DBA), who controls all operations on the database
End users are typically people who work in some non-technical capacity in an organisation. Part of their job is to process information in some way, either by storing it, updating it or using it in the form of reports. Their level of technical skill is typically low, but they are nevertheless the reason for the existence of the database and any applications that use it.
End users have their own small view of the total mass of data in the organisation. Their understanding of the data is completely determined by the priorities of their own role, and part of the job of the database designer is to provide each end user with a view of the data that matches their expectation and needs. For example, an employee in a factory despatch department needs information about orders ready to be shipped and available transport. They need that information presented in a clear and targeted way which will support efficient logistic operations.
This might mean
- filtering out data about shipments not due today
- providing summary information about total weight of several orders, optimised delivery routes, etc.
- using logistics-specific terminology such as "goods" instead of "products", "carriers" rather than "suppliers", etc.
End users typically rely on purpose-built application interfaces or query tools for their interactions with the data. For ad hoc queries they may use query by example (QBE) interfaces, but more technically capable end users may use SQL.
An application programmer may be required to implement a set of use cases using an existing database by constructing a user interface in an appropriate language. It is more likely however that the application programmer will need to design and build the database as well. This requires and investigation into the "world" of the end users so that an adequate shared model can be built.
Whether they are responsible for the database design or not, application programmers need to understand the structure of the database clearly so that they can provide an efficient interface which delivers all of the benefits of the database approach. They need an expert knowledge of SQL as the industry-standard query language, an understanding of how to integrate SQL statements into specific development languages such as Java, and a working knowledge of the methods available for connecting an application to a database.
The database administrator (DBA) is the person (or group of people) responsible for overall control of the database system. The DBA may be required to design the logical structure of the database; however, this is not always the case. The DBA's main responsibilities include the following:
- setting the storage structure and access strategy, i.e. how the data is to be represented by writing the storage structure definition
- liaising with users - for example to ensure that the data they require is available
- defining authorisation checks and validation procedures.
- defining a strategy for backup and recovery - for example periodic dumping of the database to a backup tape and procedures for reloading the database for backup.
- monitoring performance and responding to changes in requirements - for example adding additional disk storage, archiving old data, adding database-specific performance improvements
Dedicated database administration tools are available, but the DBA requires an expert knowledge of SQL, especially the statements used for creating and modifying database objects known as data definition language (DDL). The DBA also needs to understand the operating system very well so that administrative activities can be performed efficiently.