Должен ли я использовать несколько полей или JSON? - PullRequest
0 голосов
/ 11 октября 2009

Я проектирую БД и хотел бы знать, как лучше всего это хранить:

У меня есть таблица user, и предположим, что она может иметь 100 слотов для предметов, и я храню идентификатор. Должен ли я использовать JSON ({slot1:123232,slot20:123123123,slot82:23123}) или создать более 100 полей (slot1, slot2, slotn)?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 11 октября 2009

Третий вариант: создать еще одну таблицу для слотов и иметь отношение «один ко многим» между пользователями и слотами. Ваша бизнес-логика будет обеспечивать ограничение в 100 слотов.

Я бы рекомендовал не делать встраиваемый JSON в базу данных. Я не уверен, какую БД вы используете, но, вероятно, будет очень трудно запросить фактические данные слотов для данного пользователя без извлечения и анализа всех 100 записей.

Чтобы создать отношение один ко многим, вам понадобится вторая таблица

Slots
    id (primary key)
    user_id (mapping to user table)
    item_id (your slot # you want to store)

Теперь вы можете выполнять полезные SQL-запросы, такие как

SELECT * FROM Users,Slots WHERE Slots.user_id = Users.id AND Slots.item_id = 12345

Что даст вам список всех пользователей, у которых есть элемент слота # 12345

1 голос
/ 11 октября 2009

При нормализации структуры базы данных у вас не должно быть многозначных атрибутов.

Возможно, вы захотите этого.

Users
=====
UserId


UserSlots
=========
UserId
SlotId
Value

Slots
=====
SlotId
Value
0 голосов
/ 12 октября 2009

Вы не должны создавать 100 полей.

Создайте таблицу с двумя полями, идентификатором и вашими «данными JSON», которые вы можете хранить в виде строки или другого типа поля в зависимости от размера.

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

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