![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| slang |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 7.3.2004 Репутация: 1 Всего: 0 |
Каким образом связать несколько таблиц в одну. Это делается на стадии создания таблиц или можно сделать после?
Как отображать ошибки при запросах к базе. Где-то видел, но сейчас не могу найти. Т.е. кроме того, что запрос не выполняется, нужно чтобы SQL сказал причину, почему. -------------------- Запчасти на иномарки www.avtograd55.ru. Если есть время - зайдите и посоветуйте что исправить и что доработать. |
|||
|
||||
| Наставник |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 4.11.2004 Репутация: нет Всего: 15 |
1. Можно сделать это с помощью самой архитектуры БД MySQL, используя внешние ключи (соответственно это вариант на СТАДИИ разработки БД) 2. Можно сделать подобную связь программно используя PHP. (соответственно это вариант после СТАДИИ разработки БД)
ну вот хотя бы так -> Модуль соединения с БД. (db_connect.php)
Простой пример использования.
В результате, все запросы к БД записываются в файл sql.log, а возникающие ошибки подробно выводятся на экран Это сообщение отредактировал(а) Наставник - 9.8.2005, 10:43 |
||||||||
|
|||||||||
| slang |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 7.3.2004 Репутация: 1 Всего: 0 |
Наставник
Так существует возможность/необходимость связывания таблиц в базе между собой. С помощью каких команд это сделать. Т.е. как я понимаю это гарантирует правильное заполнение базы, если таблицы логически должны быть связаны. Так ведь? -------------------- Запчасти на иномарки www.avtograd55.ru. Если есть время - зайдите и посоветуйте что исправить и что доработать. |
|||
|
||||
| Наставник |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 4.11.2004 Репутация: нет Всего: 15 |
Хм. slang
Ну допустим рассмотрим вариант номер 2 - связать таблицы с помощью языка программирования. Допустим, задача сделать каскадное удаление (это когда если в главной таблице удаляется запись, то и в подчиненной соответствующая запись удаляется автоматически) пусть table1 -> главная таблица, в котором есть поле id и другие поля, которые описывают товар пусть table2 -> подчиненная таблица, которой хранится количество товара на складе и кому это принадлежит (какому товару это принадлежит) определяется по id из главной таблицы. Компания меняет свой род деятельности, и не хочет использовать товар "Дрель" под id 34, соответствующая запись о количестве товара должна быть удалена из подчиненной таблицы.. вот как это можно реализовать
Вот и все, реализовали каскадное удаление с помощью очень простого механизма. |
|||
|
||||
| slang |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 7.3.2004 Репутация: 1 Всего: 0 |
Однако, если не связать эти таблицы, то в случае ошибок я могу записать во вторую таблицу количество товара, которого не существует. Конечно, это все можно сделать и при создании форм для введения товара, однако, если этот механизм будет контролировать еще и БД, а она это может, просто я не знаю как это сделать, то это повысит надежность проекта.
Т.е. саму суть реляционной базы данных я понимаю. Мне-бы средство, которое поможет сразу обрубить все возможные ошибки в базе. Это сообщение отредактировал(а) slang - 9.8.2005, 11:09 -------------------- Запчасти на иномарки www.avtograd55.ru. Если есть время - зайдите и посоветуйте что исправить и что доработать. |
|||
|
||||
| Наставник |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 4.11.2004 Репутация: нет Всего: 15 |
Ну хорошо, вот Вам пример, который контролирует правильность выполнения запросов с помощью транзакций.
Теперь на сколько я понял, вы хотите с помощью первого варианта (на основе внешних ключей) разработать структуру БД.. Первое вам надо изменить дескриптор таблицы на InnoDB, т.к. только этот тип таблиц поддерживает в MySQL ключи. А вот вам пример...
внешний ключ объявляем как ON DELETE CASCADE - это говорит о том, что удаление какой-либо записи из таблицы table1 будет означать автоматическое удаление записей с соответсвующими значениями столбца id из таблицы table2 А вообще рекомендую почитать мануал... там все подробно описано Удачи. |
||||
|
|||||
| slang |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 7.3.2004 Репутация: 1 Всего: 0 |
Огромное спасибо!!!!!!!
-------------------- Запчасти на иномарки www.avtograd55.ru. Если есть время - зайдите и посоветуйте что исправить и что доработать. |
|||
|
||||
| Наставник |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 4.11.2004 Репутация: нет Всего: 15 |
Да без проблем :--)))... спрашивай, если что... Всего доброго.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |