|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.04.2009, 00:42 | #1 |
Новичок
Джуниор
Регистрация: 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 |
19.04.2009, 14:54 | #2 |
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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |