X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FManual%2FGlossary.pod;h=4feb8e1770fcdabba84e4f7e0a7f04dc76e83512;hb=a14c7707e77a043858976ec702d3972780edbe6d;hp=4e972340052b07aba767dc71409f451aec017cef;hpb=24105556eee32e782f369b46846e547a87f3b934;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Manual/Glossary.pod b/lib/DBIx/Class/Manual/Glossary.pod index 4e97234..4feb8e1 100644 --- a/lib/DBIx/Class/Manual/Glossary.pod +++ b/lib/DBIx/Class/Manual/Glossary.pod @@ -1,45 +1,168 @@ =head1 NAME -DBIx::Class::Manual::Glossary - Deconfusion of terms used +DBIx::Class::Manual::Glossary - Clarification of terms used. =head1 INTRODUCTION -This document lists various terms used in DBIx::Class and attempts to explain them. +This document lists various terms used in DBIx::Class and attempts to +explain them. -=head1 TERMS +=head1 DBIx::Class TERMS + +=head2 DB schema + +Refers to a single physical schema within an RDBMS. Synonymous with the terms +'database', for MySQL; and 'schema', for most other RDBMS(s). + +In other words, it's the 'xyz' _thing_ you're connecting to when using any of +the following L(s): + + dbi:DriverName:xyz@hostname:port + dbi:DriverName:database=xyz;host=hostname;port=port + +=head2 Inflation + +The act of turning database row data into objects in +language-space. DBIx::Class result classes can be set up to inflate +your data into perl objects which more usefully represent their +contents. For example: L for +datetime or timestamp column data. + +See also L. + +=head2 Deflation + +The opposite of L. Existing perl objects that represent +column values can be passed to DBIx::Class methods to store into the +database. For example a L object can be automatically +deflated into a datetime string for insertion. + +See L and other modules in that namespace. =head2 ORM -=head2 ResultSet +Object-relational mapping, or Object-relationship modelling. Either +way it's a method of mapping the contents of database tables (rows), +to objects in programming-language-space. DBIx::Class is an ORM. -This is an object representing a set of data. It can either be an -entire table, or the results of a query. The actual data is not held -in the ResultSet, it is only a description of how to fetch the data. +=head2 Relationship -See also: L +In DBIx::Class a relationship defines the connection between exactly +two tables. The relationship condition lists the columns in each table +that contain the same values. It is used to output an SQL JOIN +condition between the tables. + +=head2 Relationship bridge + +A relationship bridge, such as C defines an accessor to +retrieve row contents across multiple relationships. + +The difference between a bridge and a relationship is, that the bridge +cannot be used to C tables in a C, instead its component +relationships must be used. + +=head2 Schema + +A Schema object represents your entire table collection, plus the +connection to the database. You can create one or more schema objects, +connected to various databases, with various users, using the same set +of table L definitions. + +At least one L class is needed per database. + +=head2 Result class + +A Result class defines both a source of data (usually one per table), +and the methods that will be available in the L objects +created using that source. + +One Result class is needed per data source (table, view, query) used +in your application, they should inherit from L. + +See also: L =head2 ResultSource -ResultSource objects represent the source of your data, they are also known as -a table objects. +ResultSource objects represent the source of your data, these are +sometimes (incorrectly) called table objects. + +ResultSources do not need to be directly created, a ResultSource +instance is created for each L in your L, by +the proxied methods C and C. See also: L +=head2 ResultSet + +This is an object representing a set of conditions to filter data. It +can either be an entire table, or the results of a query. The actual +data is not held in the ResultSet, it is only a description of how to +fetch the data. + +See also: L + =head2 Record -See Row. +See Result. =head2 Row -Row objects contain your actual data. They are returned from ResultSet objects. +See Result. + +=head2 Result + +Result objects contain your actual data. They are returned from +ResultSet objects. These are sometimes (incorrectly) called +row objects, including older versions of the DBIC documentation. + +See also: L =head2 Object -See Row. +See Result. -=head2 Schema +=head2 join -A Schema object represents your entire table collection, plus the -connection to the database. You can create one or more schema objects, -connected to various databases, with various users, using the same set -of table (ResultSource) definitions. +See Join. + +=head2 prefetch + +Similiar to a join, except the related result objects are fetched and +cached for future use, instead of used directly from the ResultSet. This +allows you to jump to different relationships within a Result without +worrying about generating a ton of extra SELECT statements. + +=head1 SQL TERMS + +=head2 CRUD + +Create, Read, Update, Delete. A general concept of something that can +do all four operations (INSERT, SELECT, UPDATE, DELETE), usually at a +row-level. + +=head2 Join + +This is an SQL keyword, it is used to link multiple tables in one SQL +statement. This enables us to fetch data from more than one table at +once, or filter data based on content in another table, without having +to issue multiple SQL queries. + +=head2 Normalisation + +A normalised database is a sane database. Each table contains only +data belonging to one concept, related tables refer to the key field +or fields of each other. Some links to webpages about normalisation +can be found in L. + +=head2 Related data + +In SQL, related data actually refers to data that are normalised into +the same table. (Yes. DBIC does mis-use this term.) + +=head1 AUTHOR AND CONTRIBUTORS + +See L and L in DBIx::Class + +=head1 LICENSE + +You may distribute this code under the same terms as Perl itself.