Собственный первичный ключ или автоматический сгенерированный?

Вы можете использовать GroupBy и Anonymous type для достижения этой цели.

var result = list.GroupBy(x=>x.day)
                 .Select(x=> new 
                 {
                    day=x.Key,
                    detail = x.ToList().Select(c=> 
                                      new 
                                      {
                                            product=c.product, 
                                            value=c.value
                                      })
                  });
5
задан Community 23 May 2017 в 12:16
поделиться

6 ответов

Первичный ключ

  1. должен определить строку исключительно.
  2. не должен содержать данные, или они изменятся, когда Ваши данные изменятся (который плох),
  3. должно быть быстрым в сравнении операций (Операторы Where / соединения)

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

Первичный ключ должен быть сделан из минимального количества полей все еще выполнить условия 1.-3. Для подавляющего большинства таблиц этот минимум: 1 поле.

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

В таблицах отношения (m:n отношения) Вы делаете составной ключ из первичных ключей связанных таблиц, следовательно Ваш составной ключ автоматически выполняет все три условия сверху.

Вы могли сделать первичные ключи из данных, если Вы абсолютно уверены, что это будет уникально и никогда не будет изменяться. Так как это трудно гарантировать, я рекомендовал бы против него.

8
ответ дан 18 December 2019 в 10:49
поделиться

Всегда ints.

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

2
ответ дан 18 December 2019 в 10:49
поделиться

Независимо от того, что это, сделайте его не значимым (суррогатный ключ). Значимые первичные ключи смертельны.

1
ответ дан 18 December 2019 в 10:49
поделиться

Это - старая война между пуристами и прагматистами. Пуристы не принимают суррогатные первичные ключи и настаивают на том, чтобы использовать только естественные. Если Вы спросите меня, то я буду голосовать за инкремент (суррогатные ключи) в большинстве ситуаций.

1
ответ дан 18 December 2019 в 10:49
поделиться

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

0
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: