powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как добавить еще одну связь к уже существующей?
5 сообщений из 5, страница 1 из 1
Как добавить еще одну связь к уже существующей?
    #39175467
duke8761
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проектирую БД для сайта образовательного учреждения. Есть около сотни образовательных программ (баян, живопись, классический танец и тд). Они классифицируются по отделениям (музыкальное, художественное, хореография и тд.) На сегодняшний день есть таблица отделений и таблица программ. В таблице программ прописан id отделения.
Теперь нужно классифицировать программы по типу: платные, бесплатные, общеобразовательные, предпрофессиональные.
Связи уникальные - программа может принадлежать только одному отделению и одному типу. Хотя, кто его знает, что будет дальше?
Ну и вопрос, как это можно решить? И можно ли решить малой кровью, не внося программы по-новой?
...
Рейтинг: 0 / 0
Как добавить еще одну связь к уже существующей?
    #39175481
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
duke8761Связи уникальные - программа может принадлежать только одному отделению и
одному типу. Хотя, кто его знает, что будет дальше?
Ну и вопрос, как это можно решить?
Добавить в таблицу программ поле-ссылку на таблицу типов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как добавить еще одну связь к уже существующей?
    #39175500
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
duke8761Ну и вопрос, как это можно решить? И можно ли решить малой кровью, не внося программы по-новой?

Что решить то? ))) Что тут непонятного то)))
Таблица Отделение, Программа, Тип пограммы если многие ко многим связь планируется, то еще одна таблица для связи двух первых таблиц, если один-ко-многим -то в программе сделать ссылку на отделение и ссылку на тип. Помоему ничего такого сверхестесственного тут нет.
...
Рейтинг: 0 / 0
Как добавить еще одну связь к уже существующей?
    #39175942
duke8761
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergueiduke8761Ну и вопрос, как это можно решить? И можно ли решить малой кровью, не внося программы по-новой?

Что решить то? ))) Что тут непонятного то)))
Таблица Отделение, Программа, Тип пограммы если многие ко многим связь планируется, то еще одна таблица для связи двух первых таблиц, если один-ко-многим -то в программе сделать ссылку на отделение и ссылку на тип. Помоему ничего такого сверхестесственного тут нет.

Да, я по этому пути и пошел. Вот запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
    $query_department = mysql_query("SELECT * FROM department");
         if(!$query_department) exit(mysql_error());
         while($arr_department = mysql_fetch_array($query_department))
            {
              $department_name =$arr_department['name'];        
              $department_id =$arr_department['id'];         
               echo "<h3 class='departmentTitle'>".$department_name."</h3>";  //выводим название отделения      
                      
		$query_programtype = mysql_query("SELECT * FROM program_type");
                 if(!$query_programtype) exit(mysql_error());
                 while($arr_programtype = mysql_fetch_array($query_programtype))
                    {
                    $programtype_title =$arr_programtype['title'];
                    $programtype_id =$arr_programtype['id'];
                    
                    echo "<div class='programTitle'>".$programtype_title."</div>";//выводим тип образовательной программы
                        $query_collective = mysql_query("SELECT * FROM collective WHERE department_id='".$department_id."' AND programtype_id = '".$programtype_id."'");
                        if(!$query_collective) exit(mysql_error());
                        while($arr_collective = mysql_fetch_array($query_collective))
                            {
                            $collective_title =$arr_collective['title'];
                            $collective_id =$arr_collective['id'];
                             echo "<a href='/collective/item/".$collective_id."'>".$collective_title."</a>
";//выводим название образовательной программы
                            
                            }
                    }
            } 



но осталась одна загвоздка - как сделать чтобы не выводился тип образовательной программы, если программы данного типа нет в отделении?
...
Рейтинг: 0 / 0
Как добавить еще одну связь к уже существующей?
    #39176063
duke8761
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за беспокойство. Вроде сделал. Возможно коряво, но работает.
Сначала подсчитываю количество записей - сколько программ удовлетворяют двум требованиям, потом повторяю запрос к таблице с коллективами. Если записей нет, то заголовок "тип программы" не выводится:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
         if(!$query_department) exit(mysql_error());
         while($arr_department = mysql_fetch_array($query_department))
            {
              $department_name =$arr_department['name'];        
              $department_id =$arr_department['id'];         
               echo "<h3 class='departmentTitle'>".$department_name."</h3>";  //выводим название отделения      
                      
		$query_programtype = mysql_query("SELECT * FROM program_type");
                 if(!$query_programtype) exit(mysql_error());
                 while($arr_programtype = mysql_fetch_array($query_programtype))
                    {
                    $programtype_title =$arr_programtype['title'];
                    $programtype_id =$arr_programtype['id'];                   
                    
                        $res = mysql_query("SELECT COUNT(*) FROM collective WHERE department_id='".$department_id."' AND programtype_id = '".$programtype_id."'");
                        $row = mysql_fetch_row($res);
                        $total = $row[0]; 
                           
                        if($total)
                             {
                             echo "<div class='programTitle'>".$programtype_title."</div>";//выводим тип образовательной программы  
                             $query_collective = mysql_query("SELECT * FROM collective WHERE department_id='".$department_id."' AND programtype_id = '".$programtype_id."'");
                            if(!$query_collective) exit(mysql_error());
                             while($arr_collective = mysql_fetch_array($query_collective))
                                {
                                 $collective_title =$arr_collective['title'];
                                 $collective_id =$arr_collective['id'];
                                 echo "<a href='/collective/item/".$collective_id."'>".$collective_title."</a>
";//выводим название образовательной программы                            
                                }
                             }
                    }
            } 
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как добавить еще одну связь к уже существующей?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]