private function BuildForeignKey(IConnection $Connection, $DatabaseName, array $Columns, array $ForeignKeyRows, array &$LoadedTables)
{
$ForeignKeyRow = $ForeignKeyRows[0];
$Name = $ForeignKeyRow['CONSTRAINT_NAME'];
$ReferencedTableName = $ForeignKeyRow['REFERENCED_TABLE_NAME'];
$ReferencedTable = $this->BuildTable($Connection, $DatabaseName, $ReferencedTableName, $LoadedTables);
$ReferencedColumnMap = new Map();
foreach ($ForeignKeyRows as $ForeignKeyRow) {
$ParentColumn = $Columns[$ForeignKeyRow['COLUMN_NAME']];
$ReferencedColumn = $ReferencedTable->GetColumn($ForeignKeyRow['REFERENCED_COLUMN_NAME']);
$ReferencedColumnMap[$ParentColumn] = $ReferencedColumn;
}
$UpdateMode = $this->MapForeignKeyMode($ForeignKeyRow['UPDATE_RULE']);
$DeleteMode = $this->MapForeignKeyMode($ForeignKeyRow['DELETE_RULE']);
return new Traits\ForeignKey($Name, $ReferencedColumnMap, $UpdateMode, $DeleteMode);
}