Дизайн базы данных - уникальные данные из нескольких источников - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть таблица, в которой хранится информация об изображениях для автомобилей. В двух словах, он содержит поля «id», «auto_id», «name» и «path». Таким образом, он связан с конкретной записью автомобиля через поле 'auto_id'.

Теперь посмотрим, что я хочу добавить картины для домов. Было бы лучше просто создать другую таблицу, похожую на эту, или добавить поле в существующую таблицу, чтобы указать тип изображения, которое она представляет? Или есть вообще лучший способ решить этот тип проблемы?

Редактировать: я прошу прощения за формулировку. Это, очевидно, простая проблема, я просто не знаю, как лучше превратить ее в последовательный вопрос. Спасибо за терпение и любую помощь.

Ответы [ 3 ]

1 голос
/ 17 апреля 2011

Я бы просто смоделировал вашу таблицу изображений как:

id name path

и имел бы таблицу объединения subjects таблица:

picture_id subject_id subject_type

Где picture_id - это FK для изображений,и subject_id является FK для конкретного субъекта, который считается subject_type (автомобиль, дом и т. д.)

1 голос
/ 17 апреля 2011

Ну, теперь, учитывая также, что:

Поле 'id' было просто уникальным идентификатором для изображения.Поле 'auto_id' было внешним ключом для автомобиля, с которым была связана картинка.

Мне бы хотелось, чтобы оно было настроено так, чтобы можно было разместить столько фотографий, связанных с автомобилями или домами, сколько хотелось бы.

Мое предлагаемое решение:
data model

Где

  • picture - ваша исходная таблица изображений, только эта auto_idтеперь subject_id.
  • subject - это ваша исходная таблица автомобилей, теперь она будет хранить записи как автомобилей, так и домов.Добавьте новое поле type_id в качестве внешнего ключа к таблице типов предметов.
  • subject_type - это новая таблица, в которой вы будете хранить все возможные предметы (не ограничиваясь только автомобилями и домами, думая о будущем расширенииваши типы предметов).

(Извините, если эта диаграмма не отражает ваше реальное число / имя / тип данных таблиц / столбцов, просто я не знаю эту информацию)

0 голосов
/ 17 апреля 2011

Учитывая, что меняется только предмет (машина или дом), и, возможно, в будущем вы захотите увеличить количество предметов, я предлагаю вам сохранить все в одной таблице, просто добавив дополнительное поле для хранения тема фотографии.

Кстати: в чем разница между полями id и auto_id? Если их нет, я бы предложил избавиться от auto_id колонки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...