function RelationBase(type, Target, options) {
  if (Target) {
    this.targetTableName = _.result(Target.prototype, 'tableName');
    this.targetIdAttribute = _.result(Target.prototype, 'idAttribute');
  }

  Object.assign(this, {type, target: Target}, options);
}
@class
@param {string} type
  The type of relation to create. Can be one of 'hasOne', 'hasMany', 'belongsTo',
  'belongsToMany' or 'morphTo'.
@param {Model|Collection|null} Target
  The target model or collection for this relation or `null` in case the target model will be
  determined at a later time, as is the case of `morphTo` relations.
@param {object} options
  Additional properties to set on the relation object. These vary according to the type of
  relation.