=head1 NAME DBIx::DataModel::Doc::Glossary - Terms used in DBIx::DataModel documentation =head1 DOCUMENTATION CONTEXT This chapter is part of the C manual. =over =item * L =item * L =item * L =item * L =item * L =item * L =item * GLOSSARY =back =head1 GLOSSARY =over =item API Application Programming Interface, the set of public attributes, methods, arguments, return values for interacting with a software compnent. =item association Relationship between tables. In L, an association declaration states what are the participating tables, what are the L, and optionally gives names to the association itself and to the roles of the partipating tables. An association declaration in C involves similar information, except that no more than two tables can participate, and role names are mandatory. =item composition An L 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). =item column Within a L, a column is a scalar value corresponding to a given column name. Within a L or L, 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 L, C 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 C layer; they are just passthrough information, directly propagated from the L layer to the application layer. =item column type A collection of callback functions or I, declared in a L through the L method. This column type can then be associated with various column names in various tables; as a result, the C and C handlers will be called automatically, respectively after reading a value from the database or before writing a value to the database. =item 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 C, we speak of "compile-time methods" for declarations like C, C, C, because these declarations usually belong to a module that will be loaded through L, and therefore will be executed at compile-time. By convention, compile-time methods start with an uppercase letter. =item DB DataBase =item DBI The generic database-independent interface for Perl -- see L. =item DBIC Abreviation for L, another L for Perl. =item dbh A DBI database handle, created by a call to L. =item fast statement A L for which the method L has been called : each row from the database will be retrieved into the same memory location, using DBI's L and L 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. =item foreign key A column or set of columns that contains the primary key of another table. =item inner join The default form of L, that excludes null values in the join condition. Within C, inner joins are inferred automatically from the L in L, or may be explicitly required with a bidirectional arrow: C<< ->join(qw/table <=> role1 <=> role2/) >>. =item JDBC Standard API to access databases from Java code. Perl code can work with JDBC databases through the L 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 C through the L subclass. =item join 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 L. See the L. =item join condition A rule which 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 L of the first table should match the L of the second table. =item left join A particular form of L, in which a row with an empty L participates in the final result (while a regular join would ignore that row). Within C, left joins are inferred automatically from the L in L, or may be explicitly required with a directed arrow: C<< ->join(qw/table => role1 => role2/) >>. =item multiplicity A specification on one side of an L, which states the minimum and maximum number of times any given record may participate in the association. Typical multiplicities are C<0..*>, C<0..1>, C<1..1>, C<1..*>. C<*> is a shorthand for C<0..*>, and C<1> is a shorthand for C<1..1>. =item OO Object-Oriented. =item ORM Object-Relational Management system : a framework of classes and methods to encapsulate interactions with a L. C is one of several ORMs for Perl. =item primary key A column or set of columns that uniquely identifies any single row within a table. =item RDBMS Relational DataBase Management System. =item role method A method automatically installed in a L class when an L is declared. Role methods are used to get access to related records in other tables. =item 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 L in C, role names are mandatory, because they are used to generate methods for navigating between the two participating classes. =item record Synonym to L. =item row A single data record resulting from a SELECT query to the RDBMS. Within C, rows are plain hashrefs (C<< { column_name => column_value } >>), blessed as instances of a L or a L. =item schema A subclass of L, that holds information about its tables, views and associations, and encapsulates a L. =item source Either a L or a L. =item SQLA Abreviation for L, the SQL generator module used by C. =item statement An instance of L, that encapsulates an SQL query. See L. =item sth A DBI statement handle, created by a call to L. =item table A subclass of L, created by method L, that encapsulates access to a database table (or database view). =item UML The I, a graphical notation for modeling software system. Association declarations in C closely reflect the way these are represented in UML notation (see L). =item view A subclass of L, created either by a direct call to L, or (in most cases) by a call to L, that encapsulates access to a database SELECT..FROM (typically a join between several database tables). =back