Тема: Помоги со структурой БД

Добрый день. Стоит такая задача, нужно сделать БД преподавателей, в базе хранятся различные сведения, так же преподаватели могу вести несколько предметов. Будет и база данных предметов, где будет id предмета, его название, описание, может что-ниудь ещё, как завязать эти таблицы? Через set?

2

Re: Помоги со структурой БД

Если связь таблиц нужна только логическая, без выполнения каких-либо операций над связанными таблицами, то осуществить ее можно через поля первичных ключей. Например: таблица преподавателей имеет первичный ключ id, есть таблица предметов, которая тоже имеет первичный ключ id; теперь создаем третью таблицу назначающую преподавателям предметы, полей у этой связывающей таблицы может быть три - первичный ключ связи, id преподавателя и id предмета. Первичный ключ связи нужен, чтобы иметь возможность эту связь удалить или отредактировать.

Re: Помоги со структурой БД

не совсем понимаю эту идею), как потом мне делать выборку, например мне нужно вывести информацию о преподователе + предметы которые он ведёт, я сначала делаю селект из таблицы преподавателей, потом делаю селект из связывающией таблицы по полю этого преподователя и потом беру делаю селект по таблицы предметов по полученым id предметов?

4

Re: Помоги со структурой БД

CrazyValenokBlg сказал:

потом делаю селект из связывающией таблицы по полю этого преподователя и потом беру делаю селект по таблицы предметов по полученым id предметов?

Верно. Только эти два запроса можно объединить с помощью конструкции JOIN.

Идея в том, что один предмет может принадлежать разным преподавателям. Если каждый предмет может принадлежать только одному преподавателю, то связь таблиц будет еще проще: в таблице предметов необходимо создать поле в котором будет храниться идентификатор преподавателя.

Re: Помоги со структурой БД

Hanut, да, вы правы, один предмет могут вести >1 преподавателя, спасибо за помощь.

6 (изменено: CrazyValenokBlg, 2012-03-07 13:57:05)

Re: Помоги со структурой БД

СДела так, как говорили, с помощю JOIN получил список id предметов, которые ведёт преподаватель, теперь массив такого вида:

Array
(
    [0] => Array
        (
            [ID] => 1
            [NAME] => Василий Петрович
            [DISCIPLINE_ID] => 1
        )
    [1] => Array
        (
            [ID] => 1
            [NAME] => Василий Петрович
            [DISCIPLINE_ID] => 2
        )
)

нельзя ли сделать, чтобы при выборке взращался такого вида массив? или это уже только самому преобразования делать нужно?

Array
(
    [0] => Array
        (
            [ID] => 1
            [NAME] => Василий Петрович
            [DISCIPLINE_ID] => Array
                                            (
                                               [0] => 1
                                               [1] => 2
                                             )
        )
)

7

Re: Помоги со структурой БД

Запросом такой массив собрать не получится. Лучше из этого массива собрать второй пройдя его циклом foreach().

Re: Помоги со структурой БД

ясно, спасибо за советы)