2012-05-13 2 views
1

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

У меня есть 3 таблицы

Person 
Car 
Image 

автомобили и лица могут иметь изображения всех ссылки на изображения сохраняются в таблице изображения.

Person has > Images 
Car has > Images 

таблица изображения заканчивает тем, как это ..

Image 
ID NAME CAR_ID PERSON_ ID 
1 img1 10  NULL 
2 img2 NUll  8 

Теперь кажется, у меня есть много провалов в моей таблице, но мне нужно знать, если изображение для автомобиля или персона.

Так как это можно сделать лучше, если вообще?

+0

Да и автомобиль, и человек могут иметь много изображений. Было бы лучше, если бы я добавил таблицу категорий? Я мог бы сортировать машину-кошку или машину? будет ли это работать лучше? – Prometheus

+1

Таблица категорий также сделала бы вашу систему более расширяемой, я бы себе представлял. Любой шанс, что вы будете связывать больше таблиц с Image? Т.е. - в дополнение к Person and Car, вы будете связываться - скажем: MotorCycle. Но, может быть, вы захотите рассмотреть ответ Криса ниже - чтобы не иметь таблицы категорий вообще. –

ответ

3

У вас будет меньше нулей, если вы сохраните ссылки на изображения в таблицах «Автомобиль» и «Человек», если есть отношения «один к одному». Если у вас есть несколько изображений, вам лучше всего иметь таблицу, которая просто хранит отношения.

Эта таблица будет выглядеть следующим образом:

DATATYPE DATAID IMAGEID 
1   10   1 
2   8   2 

В первой колонке, 1 относится к машине и 2 относится к изображению.

+0

Значит, это будет как таблица категорий? – Prometheus

+0

Да. Столбец DataType может содержать индекс элемента в таблице категорий. Таблица, упомянутая выше, представляет собой таблицу отношений, которая фиксирует взаимосвязь между таблицами категорий, автомобилей, персонажей и изображений. –

0

Вам не нужно эти два поля в таблице изображений. Вы можете запросить таблицы лиц и автомобилей, чтобы узнать, существует ли запись, которая соответствует идентификатору изображения.

Но, вы можете обнаружить, что их существование удобно и удобно.

+0

http://boulter.com/blog/2004/08/19/performant-is-not-a-word/ – carlpett

+0

@carlpett, heh interesting :). Но я не забочусь о том, являются ли слова официальными. – goat

+0

;) Просто нахожу интересным, как часто слово всплывает, даже если оно не «действительно существует». – carlpett

Смежные вопросы