2013-12-15 2 views
2

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

___ : ______ +(get more multiple field field) 

Пользователь может вводить какие-либо детали, как

Output1 : Output2 
Mobile : 2455... 
email : sdf 
city : dfs 
Other : sf 

В среднем пользователь будет использовать около 20 опционов

Поскольку поля (мобильный, электронная почта и т. д.) мне неизвестны, я должен хранить поле Output1 с полем ответа (output2).

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

Есть ли способ хранить и получать детали в ограниченном или одном столбце.

+2

http://en.wikipedia.org/wiki/Entity-attribute-value_model –

+1

может хранить информацию как json ... но у этого есть некоторые недостатки, как нет способа сортировать с sql –

+0

Насколько важны данные? –

ответ

3

Поскольку имя и значение атрибута исходят от пользователей, типичная трехклавишная модель сохранения отношений «многие ко многим» - это немного перебор.

Я просто держал пользователей и их атрибуты в двух отдельных таблицах:

+---------+-----------+--------------+ 
| user_id | user_name | user_email | 
+---------+-----------+--------------+ 
| 1001 | John  | [email protected] | 
+---------+-----------+--------------+ 
| 1002 | Tim  | [email protected] | 
+---------+-----------+--------------+ 

+----------+-----------+--------------+--------------+ 
| field_id | user_id | field_name | field_value | 
+----------+-----------+--------------+--------------+ 
| 1  | 1001  | Option1  | Option2  | 
+----------+-----------+--------------+--------------+ 
| 2  | 1001  | Mobile  | 2345656565 | 
+----------+-----------+--------------+--------------+ 
| 3  | 1001  | city   | dfs   | 
+----------+-----------+--------------+--------------+ 
| 4  | 1002  | Other  | something | 
+----------+-----------+--------------+--------------+ 

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

1

Я хотел бы использовать 3 таблицы.

Таблица 1 - пользователь. PK - UserId. Другие поля - это имя, ранг, серийный номер и т. Д.

Таблица 2 - Атрибут - Первичный ключ AttributeId. Другое поле - это имя атрибута. Примерами имен атрибутов являются emailAddress, cellphoneNumber, cityName.

Таблица3 - UserAttribute. Первичный ключ - UserId и AttributeId. Другое поле - это значение атрибута.

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