Я просматривал посты, которые говорят о выборе иерархическую контента из базы данных, но я до сих пор есть сомнения относительно того, как я мог бы реализовать следующее: Я три таблицы:Иерархическая база данных Меню
- Locations : Здесь я храню место и его корреспондентский родитель (например, Европа-> Великобритания-> Лондон).
- Здания: Здесь я храню здания. Одно здание должно находиться в одном месте.
- Местоположение пользователя: Здесь я храню местоположения, которые может видеть конкретный пользователь.
- User-Buildings: Здесь я храню здания, которые сможет увидеть конкретный пользователь.
Обратите внимание, что администратор может сказать: «Пользователь 1 увидит все здания из Японии, а также он сможет увидеть это конкретное здание из Франции, но только тот».
Со всем этим, я хотел бы построить меню (для конкретного пользователя), что будет что-то вроде:
- зданий
- Европа
- Германия
- Мюнхен
- Building_1
- Building_2
- Мюнхен
- UK
- Лондон
- Building_3
- Лондон
- Германия
- Европа
У меня возникли некоторые сомнения относительно того, как я могу получить эту информацию, и я был бы признателен за любые мысли.
Отредактировано:
Структура таблицы:
1) Здания
- Id (первичный ключ)
- Название, описание, ...
- LOCATION_ID (внешний ключ к местоположению таблица)
- Company_ID (внешний ключ к столу компании). Здание должно принадлежать j ust одна компания).
2) Места
- Id (первичный ключ)
- Имя
- Родитель Id (внешний ключ к самой таблице .. например: London запись будет иметь внешний ключ для вступления Великобритании .
3) Компания
- Id (первичный ключ)
- Название, описание ...
4) Пользователи
- Id (первичный ключ)
- company_id (внешний ключ к компании этого пользователя (пользователь принадлежит только одной компании).
5) User-Здания
- Id_User (Внешний ключ к таблице пользователей)
- Id_Building (Внешний ключ для строительного стола)
6) Пользователь-Location
- Id_User (внешний ключ для пользовательской таблицы)
- Id_Location (Внешний ключ к таблице местоположения)
Идея состоит в том, что компания может назначить здания, которые пользователь может видеть. Компания может назначать определенные здания (не зависимые от местоположения), и поэтому существует таблица User-Building, и они также могут назначать местоположение, поэтому пользователь увидит все здания, принадлежащие этому местоположению.
Спасибо за комментарии, и я надеюсь, что немного разъяснил.
Спасибо.
Что касается хранения иерархических данных в MySql, см. Http://dev.mysql.com/tech-resources/articles/hierarchical-data.html –
Можете ли вы рассказать нам о своей структуре таблиц и, возможно, составить некоторые демо-данные? Этот вопрос касается хранения и извлечения данных. – Bajrang