Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Связи в MySQL
dvs  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Добрый день!
Нужно ли в mysql у связующей таблицы прописывать связи, т.к. где то вычитал что связи ставятся для того чтобы избежать проверки в php на существование id-шников связывающих таблиц и если их нет, то mysql просто не выполнит INSERT/UPDATE? Или это излишне если проверка есть в php и просто проиндексировать поля? Как это влияет на производительность, вроде бы запрос SHOW FULL COLUMNS FROM `table` стал дольше выполнятся раза в 4.
В общем как лучше проверять в MySQL, в PHP или и там и там?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




dvs
Связи не допустят ошибки или переполнения пустых данных на MySQL.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dvs  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Цитата (inpost @ 26.02.2016 - 11:16)
dvs
Связи не допустят ошибки или переполнения пустых данных на MySQL.

Спасибо, понятно. Значит это все таки хорошая штука и стоит пользоваться. smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 293
Пользователь №: 40589
На форуме: 2 года, 1 день
Карма: 19




ты наверное имеешь в виду форейгн кеи. если да - то они определенно упрощают работу с данными и поддерживают целостность базы.
на скорость работы они по идее особо сильно влиять не должны. особенно если у вас правильно расставлены индексы.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dvs  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Цитата (depp @ 26.02.2016 - 11:46)
ты наверное имеешь в виду форейгн кеи.

Именно smile.gif Спасибо
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14969
Пользователь №: 4190
На форуме: 8 лет, 9 месяцев, 28 дней
Карма: 443




Цитата (dvs @ 26.02.2016 - 09:17)
В общем как лучше проверять в MySQL, в PHP или и там и там?

Когда возникают подобные вопросы, то просто представь, что у тебя есть доступ к этой БД из разных источников. Например из нескольких скриптов и плюс из чего-нибудь типа phpMyAdmin. И тогда вопрос о том, где лучше проверять, отпадет сам собой smile.gif Однозначно в БД. Тогда ни случайно, ни специально не будет нарушена целостность данных.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dvs  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 267
Пользователь №: 18579
На форуме: 7 лет, 4 месяца, 1 день
Карма: 1

Не пью :
35 лет, 5 месяцев, 18 дней


Цитата (sergeiss @ 26.02.2016 - 13:48)
Цитата (dvs @ 26.02.2016 - 09:17)
В общем как лучше проверять в MySQL, в PHP или и там и там?

Когда возникают подобные вопросы, то просто представь, что у тебя есть доступ к этой БД из разных источников. Например из нескольких скриптов и плюс из чего-нибудь типа phpMyAdmin. И тогда вопрос о том, где лучше проверять, отпадет сам собой smile.gif Однозначно в БД. Тогда ни случайно, ни специально не будет нарушена целостность данных.

Спасибо, прояснил для себя. Дело в том что в PHP у меня уже есть проверка(для вывода ошибки), поэтому получается двойная проверка в случае правильного ввода данных[2 SELECT-а, 1) для проверки id из php, 2) самим mysql, если первая проверка прошла успешно] - это и смутило. Так понял лучше 2 раза проверить, чем потерять данные.
PS Из phpmyadmin попробовал вставить левые данные. Интересно было заругается или нет, не получилось(просто select из имеющихся id)smile.gif Здорово!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 6 дней
Карма: 77




Что-то я ничего не понимаю.
Создал 2 таблицы:
CREATE TABLE IF NOT EXISTS `order` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `order_product` (
`id` int(1) NOT NULL AUTO_INCREMENT,
`order_id` int(1) NOT NULL,
`product` int(1) NOT NULL,
PRIMARY KEY (`id`),
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

прописываю
ALTER TABLE  `order_product` ADD CONSTRAINT  `test` FOREIGN KEY (`order_id`) REFERENCES  `order` (`id`)
или так
ALTER TABLE `order_product` ADD FOREIGN KEY (`order_id`) REFERENCES `order` (`id`)
и ничего не работает.
Я что-то не так делаю ?

Это сообщение отредактировал Kusss - 27.02.2016 - 00:04
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 293
Пользователь №: 40589
На форуме: 2 года, 1 день
Карма: 19




тип таблиц надо innodb использовать. myisam не поддерживает внешние ключи.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 6 дней
Карма: 77




о_О .
Пока искал не видел упоминая о типе таблицы.

depp
А что будет, если я поменяю тип таблицам ? Которые у меня уже давно, и там много данных ph34r.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 293
Пользователь №: 40589
На форуме: 2 года, 1 день
Карма: 19




ничего. полнотекстовый поиск перестанет работать, если где используешь.
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 6 дней
Карма: 77




в тестовых таблицах поменял тип, и все заработало.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса