2016-05-17 2 views
1

Как хобби проект, я взял на себя задачу создания базы данных для хранения деталей монстров из определенной популярной монстра-собирающей RPG, чье имя рифмуется с Blokémon.Допустимый регистр для таблицы с одним столбцом?

Логическим местом для начала, конечно же, является таблица, называемая Species, для хранения основных демографических данных каждого вида. Беда в том, что 20 лет исключений и трюков означали, что на самом деле нет ни одного демографического левого, который во всех случаях соответствует 1: 1. Некоторые примеры:

  • Название: Мы называем это Bulbasaur, но Япония называет его Fushigidane (или フ シ ギ ダ ネ, если хотите). Другие языки имеют разные имена.
  • Категория: (Bulbasaur - это «Seed» Pokémon, например) Это будет be 1: 1, но недавно добавленные виды Hoopa должен быть неудобным и иметь два. И все равно язык все равно.
  • Высота/Вес/Статистика: У большинства видов только одна «форма», но многие из них теперь имеют несколько, и каждая из них имеет разные характеристики и внешний вид. Многие из этих характеристик будут жить на уровне Формы иерархии, а не на уровне видов.

В результате все это все, что остается это понятие из вида, и понятие трудно хранить в базе данных. Например, Pikachu - небольшая желтая электрическая лесная мышь, и это все, что когда-либо было, так что он любезно имеет только один набор демографических характеристик (его даже называют Pikachu на большинстве языков). Если бы каждый вид был похож на Пикачу, это было бы очень просто разработать таблицу. Шаймин, с другой стороны? Ну, его один вид, но он имеет две формы - Sky Forme и Land Forme - каждая с различной статистикой. Sky Forme - летающая белая собака. Land Forme - маленький зеленый ежик.

Несмотря на это, виды по-прежнему полезны. Он связывает формы вместе, и каждый вид имеет имя, даже если это имя отличается между языками. Вы можете подсчитать количество видов или посмотреть на виды, которые появляются в определенной игре. Но единственным полем, которое может существовать в такой таблице, является идентификатор. Это единственное, что мы можем считать фиксированным для каждого вида. Я, вероятно, также буду включать поле «Ярлык» для моего собственного здравомыслия разработчика, но это не будет считаться частью набора данных, а просто помощником для меня лично.

Это приемлемый случай для таблицы с одним столбцом, или есть лучший способ структурировать это?

+0

Это была ошибка между публикацией этого здесь, о программистах или DBA. Пожалуйста, отметьте миграцию, если это уместно в другом месте. – Kai

+0

Вы должны быть уверены в том, где вы поднимаете вопрос о том, что он будет хорошо принят. Этот комментарий является красным флагом об этом вопросе, что может привести к наказанию вас. Возможно, это нормально для SO на теге SQL, я не знаю, но если вы зададите вопрос, вы должны * знать. –

+0

У вас может быть один стол для самого digimon, а затем добавить один ко многим на таблицу форм, а затем связать форму со многими на таблицу видов. Я думаю, что справится с вышеуказанным случаем. – Chris

ответ

2

Это приемлемый случай для одного столбца ID таблицы

Да.

С реляционной точки зрения: таблица содержит строки значений, которые находятся в определенном отношении друг к другу, т. Е. Участвуют в определенной взаимосвязи, т.е. связаны определенным образом, т. Е. Удовлетворяют определенному шаблону утверждения как сказуемому. Ваш предикат, представляющий интерес, - это вид (ID) «Идентификатор - это вид». Так что сделайте таблицу. У вас будет много других предикатов, таких как «ID - это вид и ...». Но пока ни один из них не имеет идентификаторов в переписке 1: 1 с данными в видах, вы не можете использовать ни одного из них вместо видов. (Возможно, вы можете выразить Species, как, например, объединение их проекций, но это отдельная проблема дизайна.)

С точки зрения ERM: Есть некоторые виды. Таким образом, существует тип сущности вида. Его таблица получает суррогатный ключ. Вас не интересуют какие-либо атрибуты. Так что нет.

Нет ничего особенного в том, чтобы иметь таблицу с одним столбцом.

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