private void GetForeignKeys(IDatabase db)
        {
            DataTable keysTable = connector.GetForeignKeyConstraints();
            ITable    foreignTable;

            for (int i = 0; i < keysTable.Rows.Count; i++)
            {
                var    keyRow      = keysTable.Rows[i];
                ITable parentTable = db.GetTable((string)keyRow["PrimaryTable"], (string)keyRow["PrimaryTableSchema"]);
                foreignTable = db.GetTable((string)keyRow["ForeignTable"], (string)keyRow["ForeignTableSchema"]);
                var currentKeyName = keyRow["ForeignKeyName"].ToString();

                // Don't process keys of tables that the user hasn't selected
                if (parentTable == null || foreignTable == null)
                {
                    continue;
                }

                Key key = new Key
                {
                    Name          = currentKeyName,
                    IsUserDefined = false,
                    Keytype       = DatabaseKeyType.Foreign,
                    Parent        = parentTable
                };
                //////////////////
                key.IsUnique = connector.GetUniqueIndexes().Select(string.Format("INDEX_NAME = '{0}'", currentKeyName)).Length > 0;
                //////////////////
                foreignTable.AddKey(key);

                // Get Foreign Key columns
                DataRow[] foreignKeyColumns = connector.GetForeignKeyColumns().Select(string.Format("CONSTRAINT_NAME = '{0}' AND TABLE_NAME = '{1}'", key.Name.Replace("'", "''"), foreignTable.Name));

                foreach (DataRow row in foreignKeyColumns)
                {
                    key.AddColumn((string)row["COLUMN_NAME"]);
                }

                key.ReferencedKey = parentTable.GetKey((string)keyRow["PrimaryKeyName"]);
                bool isUnique = false;

                if (foreignTable.FirstPrimaryKey != null)
                {
                    isUnique = true;

                    foreach (var col in foreignTable.FirstPrimaryKey.Columns)
                    {
                        if (!key.Columns.Contains(col))
                        {
                            isUnique = false;
                            break;
                        }
                    }
                }
                key.IsUnique = isUnique;
            }
        }