2010-07-22 4 views
0

У меня возник вопрос о дизайне DataBase.Посмотрите таблицу и используйте первичный ключ

У меня есть Entity таблица с именем: АВТОМОБИЛИ и У меня есть табличное имя: ЦВЕТ

Таблица CARS имеет: Id, Name и Таблица ЦВЕТ имеют только: ColorName

Таблица ЦВЕТ имеет короткий список цветов, вместо этого CARS может иметь длинный список объектов.

CARS имеет первичный ключ на ID.

Мои вопросы:

  • Добавление первичного ключа таблицы перекодировки ЦВЕТА на ColorName, может улучшить производительность?

Таблица CARS будет иметь КЛАСТЕРИРОВАННЫЙ ИНДЕКС на идентификаторе.

  • ли вы иметь смысл иметь кластерный индекс АВТОМОБИЛЕЙ на ColorName Спасибо Гас за ваше время!

ответ

2

Кластерные индексы могут увеличить скорость извлечения или вставки, но только тогда, когда данные будут восстановлены или обновлены/вставлены в порядке, соответствующем порядку индекса.

В противном случае это может снизить производительность.

Для более подробного ответа вопрос должен быть более конкретным.

2

Это немного странно. Вы хотите, чтобы таблица COLORS имела ColorID и ColorName, с кластерным индексом на ColorID и внешним ключом к нему в таблице CARS. Если я правильно понимаю.

0

1 - Если COLORS - это короткий стол, он может улучшить производительность, но, вероятно, не будет заметным.

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

Почему вы не меняете colorname на ColorId, добавляете столбец ID в Colors и используете его как кластерный индекс/первичный ключ?

+0

Спасибо JNKyle, ЦВЕТЫ должны быть таблицей поиска, и мне нужны все цвета с уникальным значением. Если я хорошо понимаю ваше сообщение, идентификационная колонка на COLORS не подходит для меня. В этом случае Clustered Index будет только на ColorName ... как вы думаете, может быть подходящим решением? спасибо – GibboK

+0

Если это единственный столбец в COLORS, это сработает. Мне просто нужно иметь идентификатор ID, связанный с цветом, чтобы сэкономить место в главной таблице. Вместо 12-битного или любого цвета имени цвета в этом поле у ​​вас есть 1 или 2 бит colorID. – JNK

+0

Я не думал об экономии места в главном столе, хороший момент! Я еще раз хочу поблагодарить вас! – GibboK