Я работаю над базой данных, в которой есть существующая таблица индивидуалов, из которой происходит каждый тип пользователя. Другими словами, есть таблицы вроде:
Individual: FirstName, LastName, Email, <code><lots more
>
Сотрудник: IndividualId
Заказчик: IndividualId
и т.д.
Теперь я хочу добавить новый тип пользователя (WeirdPerson), который не является производным от Individual. (У WeirdPerson значительно меньше данных, связанных с ним, чем у любого персонажа, и я действительно не хочу устанавливать практически каждое поле в Individual как ноль для WeirdPerson.)
Мне нужно ключевое поле для использования в таблице, в которой будут записи от WeirdPersons и записи от физических лиц. Это предполагает таблицы таблиц примерно так:
MashedupIndividuals: MashedupId, IndividualId<br />
MashedupWeirdPerson: MashedupId, WeirdPersonId
Я хочу, чтобы MashedupId был автоматически сгенерированным полем. Поскольку я использую TSQL, идентификация кажется хорошим выбором. За исключением того, что MashedupId разделен на две таблицы. Я рассмотрел еще одну таблицу:
MashedupIds: MashedupId
Установите MashedupId как идентификатор, а затем сделайте его внешним ключом в MashedupIndividuals и MashedupWeirdPerson.
Это лучший способ двигаться вперед? Как бы вы решили это?
РЕДАКТИРОВАТЬ: Чтобы уточнить, единственная информация, которую я имею для WeirdPerson, это адрес электронной почты. Я подумал об удалении поля электронной почты из Individual, а затем о создании новой таблицы GlobalPerson только с GlobalPersonId и Email. Таблица GlobalPerson (или какое-либо другое лучшее имя, которое я использую) не так естественна, как разделение WeirdPerson, как совершенно другой тип. Однако ... Я готов пересмотреть эту позицию.