Лучший тип данных MySQL - PullRequest
       8

Лучший тип данных MySQL

0 голосов
/ 10 апреля 2011

Я пытаюсь найти хороший способ сохранить эти серии точек в базе данных.

Пара способов, которые я считал бы хорошими, это сначала текстовый тип, а затем использование разделителя для разделения точек, чтобы он выглядел так в БД

+----------------------------+
| x_points    | 1:2:3:4:5... |
| y_points    | 1:2:3:4:5... |
+----------------------------+

Затем в веб-приложениибудет тянуть точки и наносить их на холст.

Есть ли лучший способ хранить точки на линии в БД?

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


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

В качестве примера seniro пользователь может построить график y = x ^ 2 и затем обвести y-точку пересечения.Затем они могли бы связать этот холст, и он перерисовал бы их круг y-пересечения и графика.Конечно, это упрощенный пример, но я не могу понять, как лучше всего сохранить точки на холсте.

Надеюсь, это поможет больше.

1 Ответ

5 голосов
/ 10 апреля 2011

Это называется отношения один-ко-многим.У вас есть одна форма и много реальных точек.Обычно вы хотите поместить точки в отдельную таблицу, например так:

+----------------------+      +-----------------+
|        Shape         |      |  Point_Values   |
+----------------------+      +-----------------+
| shape_id (INT)       |      | shape_id (INT)  |
| shape_name (VARCHAR) |      | point_x (INT)   |
+----------------------+      | point_y (INT)   |
                              +-----------------+

Чтобы создать новую фигуру, вставьте новую фигуру в таблицу Shape.Затем создайте одно или несколько значений в таблице Point_Values.Если вы хотите вернуться назад и получить значения, вы должны использовать объединение, например:

SELECT s.shape_name, v.point_x, v.point_y
FROM Shape s
JOIN Point_Values v ON s.shape_id = v.shape_id
WHERE s.shape_id = 5

Преимущество в том, что он очень гибкий.Каждая фигура может иметь 0 или более точек, и существует неявное принуждение, что должно быть равное количество точек x и y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...