У меня есть таблица User, в которой хранится информация о пользователе - например, имя, дата рождения, местонахождение и т. Д.
Я также создал таблицу ссылок с именем User_Options - для хранения атрибутов с несколькими значениями - в ней, в основном, хранятся выбранные флажки.
У меня есть внешняя форма, которую пользователь может заполнить и создать свой профиль пользователя. Вот таблицы, которые я создал для создания опций флажка:
Table User_Attributes
=====================
id attribute_name
---------------------
1 Hobbies
2 Music
Table User_Attribute_Options
======================================
id user_attribute_id option_name
--------------------------------------
1 1 Reading
2 1 Sports
3 1 Travelling
4 2 Rock
5 2 Pop
6 2 Dance
Итак, во внешней форме есть два набора опций флажков - один для хобби и один для музыки.
А вот таблицы пользователя:
Table User
========================
id name age
------------------------
1 John 25
2 Mark 32
Table User_Options
==================================================
id user_id user_attribute_id value
--------------------------------------------------
1 1 1 1
2 1 1 2
3 1 2 4
4 1 2 5
5 2 1 2
6 2 2 4
(в приведенной выше таблице «user_attribute_id» - это идентификатор родительского атрибута, а «value» - это идентификатор опции атрибута).
Так что я не уверен, что сделал все это правильно или эффективно. Я знаю, что есть метод хранения иерархических данных в одной и той же таблице, но я предпочитаю хранить вещи отдельно.
Моя основная проблема связана с таблицей User_Options. Идея заключается в том, что должна существовать только одна таблица ссылок, в которой хранятся многозначные атрибуты, а не таблица для каждого многозначного атрибута.