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