Dave Rolsky

NAME

Alzabo::ForeignKey - Foreign key (relation) objects

SYNOPSIS

  use Alzabo::ForeignKey;

  foreach my $fk ($table->foreign_keys)
  {
      print $fk->cardinality;
  }

DESCRIPTION

A foreign key is an object defined by several properties. It represents a relationship from a column in one table to a column in another table. This relationship can be described in this manner:

There is a relationship from column BAZ in table foo to column BOZ in table bar. For every entry in column BAZ, there must X..Y corresponding entries in column BOZ. For every entry in column BOZ, there must be Y..Z corresponding entries in column BAZ. X, Y, and Z are 0, 1, or n, and must form one of these pairs: 0..1, 0..n, 1..1, 1..n.

The properties that make up a foreign key are:

  • columns_from

    The column in the owning table that corresponds to some column in 'table_to'.

  • columns_to

    The column to which there is a correspondence.

  • min_max(_to, _from)

    Legal values for this are 0..1, 0..n, 1..1, and 1..n (n..n relationships are handled specially). For the above mentioned relationship from foo.baz to bar.boz, if the min_max_to were 0..1, we could say, "For every entry in foo.baz, there may be 0 or 1 corresponding entries in bar.boz." If the min_max_from value were 1..n we would say that "for every entry in bar.boz, there must be 1 or more corresponding entries in foo.baz."

Cardinality is generated from the two min_max values. This is the max from to the max to. If min_max_from was 0..1 and min_max_to was 1..n then the cardinality of the relationship would be 1..n.

METHODS

table_from

table_to

Returns

The relevant Alzabo::Table object.

columns_from

columns_to

Returns

The relevant Alzabo::Column object(s) for the property.

column_pairs

Returns

An array of array references. The references are to two column array of Alzabo::Column objects. These two columns correspond in the tables being linked together.

min_max_from

min_max_to

Returns

A two element array containing the two portions of the min_max value.

Examples: (0, 1) -- (1, 'n')

cardinality

This will be either 1..1 or 1..n.

Returns

A two element array containing the two portions of the cardinality of the relationship.

AUTHOR

Dave Rolsky, <autarch@urth.org>