A massive amount of link fixes (just links, almost no rewording)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Manual / Glossary.pod
index a70ffa1..334637d 100644 (file)
@@ -7,28 +7,37 @@ DBIx::Class::Manual::Glossary - Clarification of terms used.
 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<DSN|DBI/connect>(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 further allows you to inflate your data
-into perl objects which more usefully represent their contents. For
-example: L<DBIx::Class::InflateColumn::DateTime> for datetime or
-timestamp column data.
+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<DBIx::Class::InflateColumn::DateTime> for
+datetime or timestamp column data.
 
-=head2 Join
+See also L<DBIx::Class::InflateColumn>.
 
-This is an SQL keyword that gets mentioned a lot. It is used to fetch
-data from more than one table at once, by C<join>ing the tables on
-fields where they have common data.
+=head2 Deflation
 
-=head2 Normalisation
+The opposite of L</Inflation>. Existing perl objects that represent
+column values can be passed to DBIx::Class methods to store into the
+database. For example a L<DateTime> object can be automatically
+deflated into a datetime string for insertion.
 
-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<DBIx::Class::Manual::FAQ|the FAQ>.
+See L<DBIx::Class::InflateColumn> and other modules in that namespace.
 
 =head2 ORM
 
@@ -48,36 +57,108 @@ condition between the tables.
 A relationship bridge, such as C<many_to_many> defines an accessor to
 retrieve row contents across multiple relationships.
 
-=head2 ResultSet
+The difference between a bridge and a relationship is, that the bridge
+cannot be used to C<join> tables in a C<search>, instead its component
+relationships must be used.
 
-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 Schema
 
-See also: L<DBIx::Class::ResultSet/METHODS>
+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</Result Class> definitions.
+
+At least one L<DBIx::Class::Schema> 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</Result> 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<DBIx::Class::Core>.
+
+See also: L<DBIx::Class::Manual::ResultClass>
 
 =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</Result Class> in your L</Schema>, by
+the proxied methods C<table> and C<add_columns>.
 
 See also: L<DBIx::Class::ResultSource/METHODS>
 
-=head2 Record
+=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<DBIx::Class::ResultSet/METHODS>
+
+=head2 Result
 
-See Row.
+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<DBIx::Class::Manual::ResultClass>
 
 =head2 Row
 
-Row objects contain your actual data. They are returned from ResultSet objects.
+See Result.
 
 =head2 Object
 
-See Row.
+See Result.
 
-=head2 Schema
+=head2 Record
 
-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 Result.
+
+=head2 prefetch
+
+Similar 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<the FAQ|DBIx::Class::Manual::FAQ>.
+
+=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<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself.