Various other POD fixes
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Manual / Glossary.pod
CommitLineData
24105556 1=head1 NAME
2
880a1a0c 3DBIx::Class::Manual::Glossary - Clarification of terms used.
24105556 4
5=head1 INTRODUCTION
6
9e7b9292 7This document lists various terms used in DBIx::Class and attempts to
8explain them.
24105556 9
92fcfd01 10=head1 DBIx::Class TERMS
24105556 11
db2b2eb6 12=head2 DB schema
13
14Refers to a single physical schema within an RDBMS. Synonymous with the terms
15'database', for MySQL; and 'schema', for most other RDBMS(s).
16
17In other words, it's the 'xyz' _thing_ you're connecting to when using any of
18the following L<DSN|DBI/connect>(s):
19
20 dbi:DriverName:xyz@hostname:port
21 dbi:DriverName:database=xyz;host=hostname;port=port
22
9e7b9292 23=head2 Inflation
24
25The act of turning database row data into objects in
92fcfd01 26language-space. DBIx::Class result classes can be set up to inflate
27your data into perl objects which more usefully represent their
28contents. For example: L<DBIx::Class::InflateColumn::DateTime> for
29datetime or timestamp column data.
9e7b9292 30
92fcfd01 31See also L<DBIx::Class::InflateColumn>.
9e7b9292 32
92fcfd01 33=head2 Deflation
9e7b9292 34
92fcfd01 35The opposite of L</Inflation>. Existing perl objects that represent
36column values can be passed to DBIx::Class methods to store into the
37database. For example a L<DateTime> object can be automatically
38deflated into a datetime string for insertion.
9e7b9292 39
92fcfd01 40See L<DBIx::Class::InflateColumn> and other modules in that namespace.
9e7b9292 41
24105556 42=head2 ORM
43
9e7b9292 44Object-relational mapping, or Object-relationship modelling. Either
45way it's a method of mapping the contents of database tables (rows),
46to objects in programming-language-space. DBIx::Class is an ORM.
47
7cf4ae7a 48=head2 Relationship
49
50In DBIx::Class a relationship defines the connection between exactly
51two tables. The relationship condition lists the columns in each table
52that contain the same values. It is used to output an SQL JOIN
53condition between the tables.
54
55=head2 Relationship bridge
56
57A relationship bridge, such as C<many_to_many> defines an accessor to
8273e845 58retrieve row contents across multiple relationships.
7cf4ae7a 59
92fcfd01 60The difference between a bridge and a relationship is, that the bridge
61cannot be used to C<join> tables in a C<search>, instead its component
62relationships must be used.
24105556 63
92fcfd01 64=head2 Schema
24105556 65
92fcfd01 66A Schema object represents your entire table collection, plus the
67connection to the database. You can create one or more schema objects,
68connected to various databases, with various users, using the same set
69of table L</Result class> definitions.
70
71At least one L<DBIx::Class::Schema> class is needed per database.
72
73=head2 Result class
74
75A Result class defines both a source of data (usually one per table),
fb13a49f 76and the methods that will be available in the L</Result> objects
77created using that source.
92fcfd01 78
79One Result class is needed per data source (table, view, query) used
80in your application, they should inherit from L<DBIx::Class::Core>.
24105556 81
fb13a49f 82See also: L<DBIx::Class::Manual::ResultClass>
83
24105556 84=head2 ResultSource
85
92fcfd01 86ResultSource objects represent the source of your data, these are
87sometimes (incorrectly) called table objects.
88
89ResultSources do not need to be directly created, a ResultSource
90instance is created for each L</Result class> in your L</Schema>, by
91the proxied methods C<table> and C<add_columns>.
24105556 92
93See also: L<DBIx::Class::ResultSource/METHODS>
94
92fcfd01 95=head2 ResultSet
96
97This is an object representing a set of conditions to filter data. It
98can either be an entire table, or the results of a query. The actual
99data is not held in the ResultSet, it is only a description of how to
100fetch the data.
101
102See also: L<DBIx::Class::ResultSet/METHODS>
103
24105556 104=head2 Record
105
fb13a49f 106See Result.
24105556 107
108=head2 Row
109
fb13a49f 110See Result.
111
112=head2 Result
113
114Result objects contain your actual data. They are returned from
115ResultSet objects. These are sometimes (incorrectly) called
116row objects, including older versions of the DBIC documentation.
117
118See also: L<DBIx::Class::Manual::ResultClass>
24105556 119
120=head2 Object
121
fb13a49f 122See Result.
24105556 123
92fcfd01 124=head2 join
24105556 125
fb13a49f 126See Join.
127
92fcfd01 128=head2 prefetch
129
fb13a49f 130Similiar to a join, except the related result objects are fetched and
131cached for future use, instead of used directly from the ResultSet. This
132allows you to jump to different relationships within a Result without
133worrying about generating a ton of extra SELECT statements.
92fcfd01 134
135=head1 SQL TERMS
136
fb13a49f 137=head2 CRUD
138
139Create, Read, Update, Delete. A general concept of something that can
140do all four operations (INSERT, SELECT, UPDATE, DELETE), usually at a
141row-level.
142
92fcfd01 143=head2 Join
144
145This is an SQL keyword, it is used to link multiple tables in one SQL
146statement. This enables us to fetch data from more than one table at
147once, or filter data based on content in another table, without having
148to issue multiple SQL queries.
149
150=head2 Normalisation
151
152A normalised database is a sane database. Each table contains only
153data belonging to one concept, related tables refer to the key field
154or fields of each other. Some links to webpages about normalisation
155can be found in L<DBIx::Class::Manual::FAQ|the FAQ>.
156
157=head2 Related data
158
159In SQL, related data actually refers to data that are normalised into
fb13a49f 160the same table. (Yes. DBIC does mis-use this term.)
161
162=head1 AUTHOR AND CONTRIBUTORS
163
164See L<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class
165
166=head1 LICENSE
167
168You may distribute this code under the same terms as Perl itself.