За последние 24 часа нас посетили 18757 программистов и 1636 роботов. Сейчас ищут 962 программиста ...

Как правильнее всего реализовать отношение многое-ко-многому

Тема в разделе "MySQL", создана пользователем Nachtvolk, 1 май 2011.

  1. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Как правильнее всего реализовать отношение многое-ко-многому в MySQL?
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    с помощью доп.таблицы, примеры есть в любом учебнике по sql
     
  3. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Далеко не в любом учебнике. Я пока и сам склоняюсь к этому варианту (привык работать с графами), но пока хочу разобраться, лучший ли это вариант, или в MySQL, с которым я только начинаю знакомиться, есть варианты получше.
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Nachtvolk
    да, и правда, "есть в любом нормальном учебнике по sql, где есть описание нормализации данных" - так вроде будет лучше :)

    встречал также реализацию отношения несколько-к-нескольким, когда возможные варианты перечисляются через запятую в одном из полей. Но подобный вариант подходит только если ожидается не так много возможных связей + все возможные связи уже были загружены в программу и парсятся в коде, т.к. получить связанные объекты через SQL JOIN не представляется возможным.
     
  5. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Сразу вопрос напрашивается о ссылке или хотя бы названии такого учебника. Хотя сейчас мне наверное важней найти грамотный учебник по MySQL. В тех, которые у меня есть, описывается MySQL как реализация SQL, мне же родней и понятней, когда всё описывается через технологию и теорию БД, т.е. БД->SQL->MySQL.

    В точку! Я использовал этот вариант на последнем сайте, требовалось связать всего две небольших таблицы (150 и 30 записей), а времени было мало. Только я использовал не запятую, а _. И юзал через LIKE (в качестве ID использовались уникальные имена (в прошлом - имена файлов)). Но вариант однозначно тупиковый при росте базы. И при использовании жутко неудобный

    Внешние ключи доступны только в InnoDB? Или есть другие практичные варианты ограничения целостности и ввода?
     
  6. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    >Внешние ключи доступны только в InnoDB?
    Да

    >есть другие практичные варианты ограничения целостности и ввода?
    Триггеры

    >Сразу вопрос напрашивается о ссылке или хотя бы названии такого учебника.
    Ну для начала... а гугл пробовали? Там как бы не SQL, а русским языком расписано что это такое. Про нормальную форму тоже упомянули, это ответ "как правильнее". А уж ответ на вопрос "как мне денормализовать мою базу" может быть дан исключительно по каждому конкретному случаю отдельно.
     
  7. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Вообще-то на 99,99% вопросов на этом форуме можно ответить этой фразой. Добивает уже. Я пишу сюда, чтобы узнать мнение реальных людей с реальным опытом, которые чего-то добились. К такому мнению я прислушаюсь обязательно, оно для меня ценно. Это относится и к мнению по учебнику. Я могу десятки учебников перерыть благодаря Гуглу и потратить кучу времени, пока знающий человек не укажет на тот, на который стоит обратить внимание. Зачем бегать по граблям?
     
  8. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Отличная логика. Т.е. гугл ищет где угодно, но никак не по кучам блогов, форумов и статей, где реальные люди с реальным опытом из года в год повторяют одно и тоже. Учебник ему, угу. "Посоветуйте книгу, что бы прочесть и стать умным".
     
  9. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Nachtvolk
    могу посоветовать книгу для начинающих "Самоучитель MySQL 5" Кузнецова-Симдянова от BHV

    http://www.ozon.ru/context/detail/id/2631565/

    вроде там видел простейшие примеры взаимодействия многие-ко-многим на примере книг и авторов.