Как бы вы создали базу данных для этого типа проблемы? - PullRequest
0 голосов
/ 22 июля 2010

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

Вот два типа данных, которые я хотел бы сохранить (они представляют одну и ту же проблему схемы, я думаю):

Я хочу сохранить группу координат для маршрута карты. Предлагаемая БД будет выглядеть так:

Name            Point 1    Point 2  ...
----            -------    -------

Jogging Loop    5, 10      6, 11    ...

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

Alphabetized String        Word 1     Word 2     Word 3
-------------------        ------     ------     ------
abet                       abet       beat       bate

Часть, которую я не знаю, как решить, это неизвестное количество столбцов. Должен быть лучший способ, чем иметь произвольное количество столбцов на основе максимальной длины любой строки в таблице. Нужны ли мне две таблицы и как-то к ним присоединиться?

Спасибо, что пролили свет на то, как это обычно решается.

Ответы [ 4 ]

1 голос
/ 22 июля 2010

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

Name     Point    x    y
----     -----    -    -
Route    1        5    10
Route    2        6    11
...

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

0 голосов
/ 22 июля 2010

Обычным решением для такой проблемы является нормализация таблиц.

В результате получится 2 таблицы.

  1. Таблицас оригинальным маршрутом или словом для второго примера.В качестве столбцов это должно иметь:
    • Первичный ключ (моим рекомендацией будет автоинкрементное поле с именем id)
    • Столбец name или word.
  2. Таблица с координатами / анаграммами.
    • Также первичный ключ (первичный ключ необходим в любой таблице)
    • Внешний ключ первой таблицы
    • Столбец с координатами / анаграммой
0 голосов
/ 22 июля 2010

создать две таблицы, связанные по Routes.RouteID = Points.RouteID

Routes
------
RouteID RouteName
1       Jogging Route 1
2       Jogging Route 2

вторая таблица:

Points
------
Point RouteID
1,2   1
2,3   1
3,4   2
0 голосов
/ 22 июля 2010

У вас нет неизвестного количества «столбцов».

У вас есть ключ из двух частей.

Карта маршрута:

Name, Point, Sequence
"Jogging Loop", (5, 10), 1
"Jogging Loop", (6, 11), 2

Строка в алфавитном порядке

Name, Word, Sequence
"abet", "abet", 1
"abet", "beat", 2
"abet", "bate", 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...