Не могу спроектировать базу(люди-деятельности-свойства)

программирование php MySQL sql проектирование баз данных

Доброе утро.

Есть человек с данными(email, пароль, дата_регистрации и прочее)

Человек может заниматься какой либо деятельностью(д-ть 1, д-ть 2, д-ть 3), может совмещать, т.е. многие ко многим. Т.е. максимум 3 д-ти одновременно.
У каждой деятельности своя дополнительная информация.

У д-ти 1 какая-то своя инфа с типами дата, текст, число(воообщем разные)

У д-ти 2 тоже какая-то инфа и т.д.

Я понял что будет таблица "Люди(id, email, pass)", будет таблица "Деятельности(id, name)" и будет таблица связка(user_id, дет_id, значение свойства д-ти).
Но возникает проблема, поле "значение свойства д-ти" должно быть одного типа. Так же поле, которое есть у одной деятельности, может присвоится к другой где по идее быть не должно.

Как дальше спроектировать не понимаю.
Как вообще в идеале сделать, чтоб не было избыточности и null'ов ? Не понимаю.
Спасибо большое. Надеюсь на вашу помощь.
Ответы:
Как я понимаю можно сделать вариант с преобразованием типов, если должно быть не сколько свойств то делаем промежуточную таблицу СвойстваДеятельностей(id, id_деятельности, type(например число, строка, дата), значение)
Совсем не понятен смысл поля "значение свойства д-ти". Для чего оно?
Возможны разные варианты:
- можно на уровне архитектуры системы принять соглашение, что значения одинаковых полей для разных деятельностей должно быть одного типа;
- можно для каждой деятельности создать по таблице свойств;
- можно, как здесь уже предложили, хранить свойства в отдельной таблице - это, на мой взгляд, наиболее предпочтительный способ.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.