public ForeignKey(IonStructure.ForeignKey foreignKey, Column column)
        {
            if (foreignKey == null)
            {
                throw new ArgumentNullException(nameof(foreignKey));
            }

            if (column == null)
            {
                throw new ArgumentNullException(nameof(column));
            }

            Table                = column.Table;
            ColumnName           = column.BracketedName;
            Name                 = $"[FK_{Table.Name}_{foreignKey.TableName}_{foreignKey.Name}]";
            ReferencedTable      = column.ReferencedTable !;       // It's probably safe to assume ReferencedTable isn't null in this case.
            ReferencedColumnName = foreignKey.ColumnName;
        }
        public Column(IonStructure.ForeignKey foreignKeyColumn, Table table)
        {
            if (foreignKeyColumn == null)
            {
                throw new ArgumentNullException(nameof(foreignKeyColumn));
            }

            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }

            ReferencedColumn = SqlGenerator.GetReferencedColumn(table.DatabaseName, foreignKeyColumn);
            ReferencedTable  = ReferencedColumn.Table;

            Name      = foreignKeyColumn.Name;
            DataType  = ReferencedColumn.DataType;
            Nullable  = foreignKeyColumn.IsNullable;
            Length    = ReferencedColumn.Length;
            Precision = ReferencedColumn.Precision;
            Scale     = ReferencedColumn.Scale;

            Table = table;
        }