++ed by:

3 PAUSE users
7 non-PAUSE users.

Laurent Dami
and 1 contributors


DBIx::DataModel::Doc::Glossary - Terms used in DBIx::DataModel documentation


This chapter is part of the DBIx::DataModel manual.



Application Programming Interface, the set of public attributes, methods, arguments, return values for interacting with a software compnent.


Relationship between tables. In "UML", an association declaration states what are the participating tables, what are the multiplicities, and optionally gives names to the association itself and to the roles of the partipating tables. An association declaration in DBIx::DataModel involves similar information, except that no more than two tables can participate, and at least one role name is mandatory.


The second participant in a "composition" relationship, i.e. some object which "is part of" another object. A component object cannot live outside of its composite object.

compatibility layer

A module, loaded on demand, that emulates the API of former versions of DBIx::DataModel.


The first participant in a "composition" relationship, i.e. some object which "contains" another object. If the composite object is deleted, all its components are also deleted.


An "association" which additionally states that records of one table (components) cannot exist outside of their composite class; therefore when the composite is destroyed, the components must be destroyed as well (cascaded delete).


Within a "row", a column is a scalar value corresponding to a given column name. Within a "table" or "view", a column is a a list of scalar values obtained by selecting the same column name in every row of the data source. Unlike most other Perl ORMs, DBIx::DataModel has no class for representing a column: since a row is just a blessed hashref, a column is just a value in that hashref. As a matter of fact, most columns are unknown to the DBIx::DataModel layer; they are just passthrough information, directly propagated from the DBI layer to the application layer.

column type

A collection of callback functions or handlers, declared in a "schema" through the Type() method. This column type can then be associated with various column names in various tables; as a result, the from_DB and to_DB handlers will be called automatically, respectively after reading a value from the database or before writing a value to the database.

compile time

Strictly speaking, Perl is not a compiled language; but liberally speaking, the code that runs in the initial phases of a perl program (BEGIN, CHECK, INIT) can be named "compile time".

Within DBIx::DataModel, we speak of "compile-time methods" for declarations like Schema(...), Table(...), Association(...), because these declarations usually belong to a module that will be loaded through use, and therefore will be executed at compile-time.




The generic database-independent interface for Perl -- see DBI.


Abreviation for DBIx::Class, another "ORM" for Perl.


A DBI database handle, created by a call to "connect" in DBI.

fast statement

A "statement" in which each row from the database will be retrieved into the same memory location, using DBI's fetch and bind_columns methods. This is the fastest way to get data, but it requires special care to handle each row immediately, before that row gets overwritten by the next row.

foreign key

A column or set of columns that contains the primary key of another table.

inner join

The default form of "join", that excludes null values in the join condition. Within DBIx::DataModel, inner joins are inferred automatically from the multiplicities in associations, or may be explicitly required with a bidirectional arrow: ->join(qw/table <=> role1 <=> role2/).


Standard API to access databases from Java code. Perl code can work with JDBC databases through the DBD::JDBC proxy driver.

The JDBC API is richer than standard DBI for working with result sets : for example it has methods to move the cursor; these can be exploited from DBIx::DataModel through the DBIx::DataModel::Statement::JDBC subclass.


A database operation which consists of taking rows from several sources and producing new data rows. The result contains columns merged from those sources, according to the "join condition". Joins are implemented as subclasses of DBIx::DataModel::Source::Join --- see the define_join() method.

join condition

A rule that states which rows from one source will be merged with which rows from another source while performing a join. A typical join condition states that the "foreign key" of the first table should match the "primary key" of the second table.

left join

A particular form of "join", in which a row with an empty "foreign key" participates in the final result (while a regular join would ignore that row). Within DBIx::DataModel, left joins are inferred automatically from the multiplicities in associations, or may be explicitly required with a directed arrow: ->join(qw/table => role1 => role2/).


A specification on one side of an "association", which states the minimum and maximum number of times any given record may participate in the association. Typical multiplicities are 0..*, 0..1, 1..1, 1..*. * is a shorthand for 0..*, and 1 is a shorthand for 1..1.




Object-Relational Management system : a framework of classes and methods to encapsulate interactions with a "RDBMS". There are many ORMs for Perl; DBIx::DataModel is just one of them.

path method

A method automatically installed in a "table" class when an "association" is declared. Path methods are used to get access to related records in other tables.

primary key

A column or set of columns that uniquely identifies any single row within a table.


Relational DataBase Management System.

role name

In UML notation, each side of an association may be decorated with a "role name". These are optional in UML, like many other modeling constructs; they are used mainly when a same class participates in several associations, and disambiguation is necessary. However, when declaring an Association() in DBIx::DataModel, role names are mandatory, because they are used to generate path methods for navigating between the two participating classes.


Synonym to "row".


A single data record resulting from a SELECT query to the RDBMS. Within DBIx::DataModel, rows are plain hashrefs ({ column_name => column_value }), blessed as instances of a "table" or a "view".


An instance of a subclass of DBIx::DataModel::Schema, that holds information about its tables, views and associations, and encapsulates a "dbh".


Either a "table" or a "join".


Abreviation for SQL::Abstract, a SQL generator module used by several "ORM"s.


Abreviation for SQL::Abstract::More, the SQL generator module used by DBIx::DataModel.


An instance of DBIx::DataModel::Statement, that encapsulates an SQL query. See "STATEMENT METHODS" in DBIx::DataModel::Doc::Reference.


A DBI statement handle, created by a call to "prepare" in DBI. DBIx::DataModel encapsulates $sth handles within "statement" objects.


A subclass of DBIx::DataModel::Source::Table, created by method "Table()" in DBIx::DataModel::Doc::Reference, that encapsulates access to a database table (or database view).


The Unified Modeling Language, a graphical notation for modeling software system. An excellent quick reference for UML is http://www.holub.com/goodies/uml/.

Association definitions in DBIx::DataModel are closely inspired by UML associations (see "Association()" in DBIx::DataModel::Doc::Reference).