Мы делаем либо в зависимости от ситуации.
Если обычные пользователи и обычные приложения должны просматривать сторонние данные, мы помещаем эти данные там, где они будут доступны для них. В нашем случае эти данные часто представляют собой данные, которые хранятся в пользовательских таблицах в базе данных, которые можно выбирать, а не редактировать, чтобы пользователи не могли изменять сторонние данные. Если вы используете обычные таблицы, вам может потребоваться триггер, чтобы предотвратить случайное изменение этих данных. Кроме того, он часто приходит в форме, которая может не соответствовать вашей структуре данных, и если им нужно только посмотреть, для целей отчета, вы можете не захотеть тратить время на его очистку, чтобы ваше обычное приложение могло его принять. Так что в этом случае пользовательские таблицы могут стать необходимыми.
Например, третье лицо может иметь поле, которое больше, чем ваше поле для той же вещи. Вы можете убрать смысл, обрезав их данные в соответствии с вашей структурой. Кроме того, ваша структура может иметь набор ограничений, которых нет у сторонних данных. Хотите ли вы рискнуть своей собственной целостностью данных, сняв эти ограничения? Возможно нет. Если мое приложение считает, что поле должно быть обязательным или является действительной датой, я не хочу вносить изменения для размещения сторонних отчетных данных. Если данные могут и должны быть доступны пользователям для изменения (мы делаем много этого), тогда приведите их в соответствие со стандартами вашей базы данных и вставьте.
Зачастую сторонние данные не нужно видеть пользователям, которые регулярно вводят данные, а только в отчетах управления, извлекаемых из хранилища данных. В этом случае нет, я бы не пытался поместить данные в любом месте, кроме хранилища данных. Зачем усложнять жизнь, делая доступными случайные изменения?