Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2009, 00:42   #1
krasava
Новичок
Джуниор
 
Регистрация: 18.04.2009
Сообщений: 1
По умолчанию Mysql бд

добрый день, у меня проблема с базой, мучаюсь уже недели 2
строение такое:
таблица устройство
id(auto_incr) ustroistvo(УНИКАЛЬНЫЙ) author

1 Редутор flip
2 Механизм vova

таблица поиск
id(auto_incr) id_ustr id_instr
1 1 1
2 1 2
3 1 3
4 2 2
4 2 3

таблица инструменты
id(auto_incr) instr(уникальный) massa
1 молоток 2
2 стамеска 1,2
3 клещи 0,7

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

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

мои запросы на добавление:

insert into ustr ('0', редуктор)
//узнаем номер добавленного устройства
$n_ustr=select ustroistvo from ustr where ustroistvo='редуктор'
//количество инструментов, соответствующих данному устройству

$num_rows_instr=3

for ($i=0;$i<$num_rows_instr;$i++)
{
//добавление в таблицу инструментов, в примере 1 шаг цикла
insert into instr ('0','молоток')
//выбираем id добавленного инструмента
$n_instr=select id from instr where instr='молоток'
//добавляем связь инструмента и устройства в таблиц поиск
insert into poisk ('0','$n_ustr','$n_instr')
}

все показано схематично, кстати перестаньте смпеяться, я действиетльно "деревня"
косяк в том, что id в ustr и id в instr - auto_increment и я не знаю их значения, до добавления в соответствующие таблицы, приходится каждый раз добавлять и сразу выбирать.

таблица инструменты заполняется в процессе заполнения таблицы устройств, тоесть из формы я передаю все данные по устройству + данные по некоторым инструментам, если данный инструмент есь в базе то выбироаю его номер и добавлчяю в таблицу поиск, если он новый - то добавляю его, выбираю id добавленного инструмента, и потом добавляю в таблицу поиск.

на самом деле, это все написано, но багов - куча... думаю сделать заново и получше. если никто не поможет, заполню до упора руками таблицу инструменты, и не буду туда добавлть.

Может сделать связи таблиц?
между инструментами и поиском instr.id referent poisk.id_instr on delete restrict on update cascade
krasava вне форума Ответить с цитированием
Старый 19.04.2009, 14:54   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

скажу сразу - с мускулом не работал
поэтому сразу ряд наводящих вопросов:
1) есть ли в нем триггеры?
2) есть ли в нем генераторы/сиквенсы?
возможность писать процедуры наверняка есть

так вот, если ответы на вопросы 1 и 2 да, то ничто не мешает написать процедуры IUD_devices, IUD_tools и IUD_devices_tools
соответственно, первая (IUD_devices) будет добавлять/изменять/удалять в табл. Устройство - если операция добавления/удаления, то вернет айди устройства (посмотрите про параметры процедур - in/out/in out)
То же самое с процедурой IUD_tools - работа с табл. Инструменты
Ну и третья IUD_devices_tools - добавляет/обновляет/удаляет связки между устройствами и инструментами
Генераторы/сиквенсы обеспечивают уникальность айдишников и позволяют в любой момент получить текущее значение - что собственно и нужно в пределах одной транзакции.
Имхо не стоит реализовывать логику работы с данными БД в самом приложении

Последний раз редактировалось soleil@mmc; 19.04.2009 в 14:57.
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mysql в С++ Ted Общие вопросы C/C++ 3 23.07.2009 14:10
MySQL нужна библ. для Visual C++ (MySql++) Alexoid Visual C++ 8 07.05.2008 18:29
MYSQL MAcK БД в Delphi 1 14.04.2008 13:13
Работа с MySql zetrix PHP 1 18.06.2007 15:02