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

Что решить то? ))) Что тут непонятного то)))
Таблица Отделение, Программа, Тип пограммы если многие ко многим связь планируется, то еще одна таблица для связи двух первых таблиц, если один-ко-многим -то в программе сделать ссылку на отделение и ссылку на тип. Помоему ничего такого сверхестесственного тут нет.
...
Рейтинг: 0 / 0
20.02.2016, 12:14
    #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
20.02.2016, 14:14
    #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]