Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » структура бд в MySQL

Ответить
Настройки темы
структура бд в MySQL

Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


Как задать между таблицами в mysql отношение многие-ко-многим. Вот есть две таблицы: Заказчики и Товары. Одной записи в заказчики может соответствовать несколько в товары и наоборот одной записи товары несколько в заказчики. Какой тут подход может быть?

Отправлено: 15:47, 05-09-2004

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Dutchman Mihel
создай:
таблицу со покупателями
таблицу с товарами
таблицу со связами

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 18:45, 05-09-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


Vlad Drakula

Вот про таблицу со связями самое интересное.

Например в access многие-ко-многим делалаются с помощью промежуточной таблицы с индексами (типа ТоварID и ЗаказчикID) оба они -  primary key и связываются со счетчиками в таблицах Товары и Заказчики. Но в mysql в одной таблице не может быть два primary key.  Как быть?

Отправлено: 01:57, 06-09-2004 | #3


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Primary key в MySql это уникальный ключ с ограничением на NULL, т.е. значения столбца не могут принримать NULL. Если есть таблица связи 1-n, то, имхо, как минимум один столбец не может быть primary. В общем уникальность это такая штука с которой лучше работать когда нужно что-то нумеровать или не позволить повторяться. В вашем же случае (таблица связи) в этом нет необходимости.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 03:01, 06-09-2004 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Dutchman Mihel
ровно точно также как и в  access, только вместо primary key - key

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 18:23, 06-09-2004 | #5


Аватара для Guest

Guest


Профиль | Цитировать


Prisoner

Vlad Drakula

То есть если я правильно понял мне нужно просто создать промежуточную таблицу с ключиками и остальное делать запросом со множеством  left join'ов.

Отправлено: 00:40, 07-09-2004 | #6


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Хм... если есть табличка для связи, то можно без join:
Код: Выделить весь код
SELECT 
  *
FROM
  customers
WHERE
  (customers.id = cust_goods_lnk.cust_id) AND
  (goods.id = cust_goods_lnk.goods_id) AND
  (goods.name = 'хорошая жизнь')
Сделали выборку информации о всех клиентах которые заказали в нашем магазине товар "хорошая жизнь". Первые две строки - установка связи меж двумя сущностями - customers и goods через таблицу cust_goods_lnk, причем не всегда нужно устанавливать связь по двум столбцам (к примеру, нам известен номер товара). Может возникнуть возможность использовать DESTINCT в SELECT'е (см. мануал).

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 02:21, 07-09-2004 | #7


Пользователь


Сообщения: 58
Благодарности: 1

Профиль | Отправить PM | Цитировать


Prisoner

Цитата:
товар "хорошая жизнь".
Все на продажу


Обычно я играюсь с частью запроса from и в where у меня все кратко,  так что  спасибо за пример и вообще за ценные советы

Отправлено: 20:32, 07-09-2004 | #8

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3903
Благодарности: 162

Профиль | Отправить PM | Цитировать


Prisoner
там же явный скрытый JOIN сидит
Вообще-то, чем ближе запрос к классике SQL (или, еще точнее, к реляционной алгебре), тем в большинстве случаев оптимальнее, т.к. все равно транслятор СУБД будет этим заниматься (по крайней мере есть надежда, что будет )

Отправлено: 11:32, 08-09-2004 | #9


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать



Цитата:
явный скрытый JOIN
Мне нравится такая формулировка . Проблема в том, что JOIN'ы терпеть ненавижу :\

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 09:09, 09-09-2004 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » структура бд в MySQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Структура локальной сети Artem_1987 Сетевые технологии 5 01-08-2008 15:51
структура операционной системы clop1000 Хочу все знать 11 11-10-2007 16:52
Структура описывающая дробь в с++ farik Программирование и базы данных 4 03-02-2006 10:02
синтаксическая структура lcat Вебмастеру 9 18-12-2005 16:15
Структура трафика BanzayDima Хочу все знать 4 03-04-2005 20:54




 
Переход