помогите со стурктурой плиз.

jrip

Новичок
помогите со стурктурой плиз.

Имеется три таблицы:
1т data: data_id data_section data_subsection data_name
2т section: section_id section_name
3т subsection: subsection_id subsection_name subsection_section

Собсно зачем:
Таблица data -таблица данных о пользователях
Таблица section - таблица разделов
Таблица subsection - таблиуа подразделов
существует некоторое кол-во разделов, в каждом разделе - некоторое кол-во подразделов, в каждом подразделе - некоторое колво пользователей.

Все поля _id - autoincrement, уникальные, по ним связаны таблицы. т.е. data c section по data_section и section_id
data c subsection по data_subsection и subsection_id
section с subsection по section_id и subsection_section

А теперь собсно проблема:
Раздел может и не делится на подразделы, а сразу содержать пользователей. У меня на уме два варианта: data_subsection=0
или сделать поле data_nosubsection = 1 или 0.

Как правильнее? Или может есть более изящное решение?

-~{}~ 16.02.05 04:29:

база - Mysql
 

rotoZOOM

ACM maniac
А если сделать только 2 таблицы:
1 - data_id, section_id, data_name
2 - section_id, parent_id, section_name
где section_id - это идентификатор секции (автоинкремент), parent_id - идентификатор секции родителя, либо -1, если нет родителя.
Преимущества:
- две таблицы вместо трех;
- можно делать подсекции подсекций ... и т.д. (дерево)
 

jrip

Новичок
rotoZOOM
пасиб за совет! так и сделаю, до этого так и не додумался, как дерево сделать, решил что двух уровней хватит...

-~{}~ 16.02.05 23:52:

Кстати если кому-то интересно, или кто-то по поиску данную тему найдёт. Вот так я реализовал вывод:

Код:
function SelectSection($i,$ot='')
{
  $query='SELECT * FROM section WHERE section_parent_id='.$i;
  $result=mysql_query($query) or die('Ошибка выборки из таблицы section: '.mysql_error());
   if($result)
   {
      while($line=mysql_fetch_array($result,MYSQL_ASSOC))
       {
          echo($ot);
          //Вывожу данные	   
          SelectSection($line['section_id'],$ot.'----');
        } 
        mysql_free_result($result);
    }
}
   SelectSection(-1);
ну и замечания принимаются :) вдруг что-то можно сделать лучше...
 
Сверху