Я должен использовать ПЕРЕЧИСЛЕНИЕ для первичных и внешних ключей?

Ваш оригинальный код уже почти у цели.

>>> str = ['I am Batman.','I loved the tea.','I will never go to that mall again!']
>>> s=[]
>>> for line in str:
...   s.append(line.split())
...
>>> print(s)
[['I', 'am', 'Batman.'], ['I', 'loved', 'the', 'tea.'], ['I', 'will', 'never', 'go', 'to', 'that', 'mall', 'again!']]

line.split() дает вам список, поэтому добавьте его в свой цикл. Или идите прямо к пониманию:

[line.split() for line in str]

Когда вы говорите s.append([]), у вас есть пустой список с индексом «а», например:

L = []

Если вы добавляете результат split к этому, как и L.append([1]), вы получите список в этом списке: [[1]]

6
задан RickMeasham 16 February 2009 в 03:02
поделиться

3 ответа

ПЕРЕЧИСЛЕНИЕ должно использоваться для определения возможного диапазона значений для данного поля. Это также подразумевает, что у Вас может быть несколько строк, которые имеют то же значение для этого конкретного поля.

Я не рекомендовал бы использовать ПЕРЕЧИСЛЕНИЕ для типа первичного ключа типа внешнего ключа.

Используя ПЕРЕЧИСЛЕНИЕ для средств первичного ключа, что добавление нового ключа включило бы изменение таблицы, так как ПЕРЕЧИСЛЕНИЕ должно быть изменено, прежде чем можно будет вставить новый ключ.

Я предполагаю, что Ваш партнер пытается ограничить, кто может вставить новую строку и что количество строк ограничено. Я думаю, что это должно быть достигнуто посредством настроек верных полномочий или на уровне базы данных или на приложении а не посредством использования ПЕРЕЧИСЛЕНИЯ для первичного ключа.

По моему скромному мнению, использование ПЕРЕЧИСЛЕНИЯ для типа первичного ключа нарушает принцип KISS.

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

Наличие справочной таблицы и перечисления означает изменение значений в двух местах все время.Забавное... Мы потратили ко многим годам с помощью перечислений, вызывающих проблемы, где мы должны перекомпилировать к добавленным стоимостям. В последние годы мы отодвинули от перечислений во многих ситуациях использование значений в наших справочных таблицах. Самое большое значение мне нравятся приблизительно справочные таблицы, - то, что Вы добавляете или изменяете значения, не будучи должен скомпилировать. Даже с миллионами строк я придерживался бы справочных таблиц и просто был бы умен в Вашем проектировании баз данных

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

У нас было больше дискуссии об этом, и вот то, что мы придумали:

Используйте CHAR (2) везде. И для PK и для FK. Затем используйте ограничения внешнего ключа mysql для запрещения создания FK к строке, которая не существует в справочной таблице.

Тот путь, учитывая справочную таблицу L, и две относящихся таблицы X и Y, мы можем присоединиться X кому: Y без любого поиска ENUM()s или таблица L и может знать с уверенностью, что существует строка в L если (когда) нам нужен он.

Я все еще интересуюсь комментариями и другими мыслями.

2
ответ дан 8 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

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