Table of Contents

Database Schema

VuFind uses a relational database for a few functions, primarily to track user accounts and user-generated data.

Tables

The latest VuFind database definitions can be found here. This page provides some documentation and clarification on the various tables used by the system.

auth_hash

This is used to store authentication hashes used by the email authenticator introduced in VuFind 6.1.

change_tracker

See Tracking Record Changes for details on the purpose of this table, which helps VuFind keep track of the last time each record was indexed or deleted.

comments

This table stores user comments on records.

external_session

This table associates external session IDs with internal ones; used for Shibboleth single log-out.

feedback

This table can be optionally used to collect user feedback form responses.

login_token

This table is used to manage persistent logins.

oai_resumption

This table supports VuFind's OAI-PMH Server functionality.

ratings

This table stores user ratings of records when the “rating” setting is turned on in the [Social] section of config.ini (introduced in VuFind 9.0).

record

This table is only used when the optional record cache (introduced in VuFind 3.0) is turned on. In this situation, it stores copies of records to accelerate performance and/or provide a fallback when third-party data sources are offline.

resource

This table contains information about records that have been associated with user-generated data (comments, favorites, etc.)

resource_tags

This is a linking table between resource and tags.

This table is used both for storing temporary (associated with PHP session IDs) search history and long-term saved searches (associated with user accounts).

session

This table stores session data when VuFind is configured for database session storage. It is unused when the session is stored on disk, in memcache, etc.

When optional database-driven link shortening is turned on (see the url_shortener setting in config.ini), this table is used to store URLs.

tags

This table stores user-generated tags.

user

This table stores user information (unless “privacy mode” is enabled in config.ini – available in VuFind 3.0 and newer).

Storage of Credentials

One of the most important functions of the user table is the storage of user credentials.

VuFind is designed to work with two sets of credentials: the “primary” credentials, which allow the user to access user-specific functions of VuFind itself, and the “catalog” credentials, which allow VuFind to connect to a third-party ILS system to retrieve additional information and perform user-specific operations.

Depending on VuFind's configuration, different columns of the user table may be used for storing these credentials. The hashed/encrypted fields were not added until VuFind 2, with the “unsafe” fields retained for backward compatibility.

:!: It is strongly encouraged to only use the hashed/encrypted versions of fields whenever possible. If you run VuFind's standard web-based installer and “fix” the security issue, your configuration will be automatically adjusted to use the secure fields. The web-based upgrade script will also help adjust legacy insecure data.

Here are detailed descriptions of the relevant fields:

Note that, in security mode, VuFind is able to hash its own “primary” password because it only needs a hash to validate incoming credentials and does not need to retrieve the original value. However, it is necessary to store the “catalog” password in a reversible encrypted format because it needs to send that value to the ILS every time the user performs a transaction that communicates with the third-party system.

user_card

This table is only used when VuFind's “library card” functionality (introduced in release 2.5) is enabled. This allows storage of multiple ILS account credentials so a single user can access multiple ILS instances.

user_list

This table stores information on user-generated favorite lists (the lists themselves, not their content).

user_resource

This table associates the user, user_list and resource tables in order to make favorite lists function.

user_stats / user_stats_fields

These tables are only used when VuFind's statistics collection functionality is enabled and configured to use the database for storage.

Changelog

VuFind's database schema is sometimes adjusted between releases. If you use a MySQL database backend, these changes are automatically applied when you run VuFind's web-based upgrade tool (see migration notes). If you use PostgreSQL, you will currently have to apply migrations using scripts provided in the migrations directory of the code.

Note that this changelog only goes back as far as release 2.5. Not every release includes database changes.

Release 10.0

Release 9.0

Release 7.1

Release 7.0

Release 6.1

Release 6.0

Release 5.1

Release 5.0

Release 4.0

Release 3.1

Release 3.0

Release 2.5