Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
1

Связи в таблицах

26.12.2012, 20:51. Показов 1110. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
К примеру есть 4 таблицы


users [id]

users_profile [user_id = users.id]

users_log [users_id = users.id]

users_files [users_id = users.id]




Они все связанны полем users_id. Тоесть в таблицах (users_profile, users_log, users_files) user_id = id таблице users.

Теперь ситуация, регистрируется пользователь и при регистрации должны создаваться
поле в таблицах (users_profile, users_log, users_files), где user_id = id.

Так же самое если амин удаляет к примеру пользователя из базы, то во всех таблицах
(users_profile, users_log, users_files) удаляется все записи, где user_id = id (при создании создается 1 запись, при удалении удаляются все записи)

Подскажите пожалуйста самый адекватный способ такой реализации ?
Использовать триггеры ? или написать функцию, которая по крону запускалась и выполняла эти проверки ?или 3 вариант ... ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2012, 20:51
Ответы с готовыми решениями:

Связи в таблицах в phpMyAdmin
Подскажите какие могут быть связи в таблицах Автобусы и троллейбусы ? У меня тема " База данных...

Связи в таблицах
Ума хватило только на то чтобы сделать ER-диаграмму, а как объявить типы, чтобы связать эти таблицы?

Связи в таблицах
Доброго времени суток. Подскажите, можно ли сделать связное обновление данных в двух таблицах? ...

Связи в таблицах
Всем доброй ночи. Возникла проблема с построение связей. Мне необходимо в таблицу 'live'...

11
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
26.12.2012, 22:47 2
Цитата Сообщение от nepster Посмотреть сообщение
Использовать триггеры ? или написать функцию, которая по крону запускалась и выполняла эти проверки ?


Директива on delete cascade для внешних ключей..
0
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
26.12.2012, 23:26  [ТС] 3
а для создания записей так же ?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
27.12.2012, 10:12 4
Создавать строки надо во всех таблицах отдельно, ибо автоматом - неоднозначность
0
61 / 61 / 11
Регистрация: 19.09.2009
Сообщений: 844
27.12.2012, 12:09  [ТС] 5
тоесть вы считаете, что лучше написать функцию, которая будет проверять строки других таблиц ориентируясь по users ?

тоесть кинуть ее в задание крона и пусть она проверяет все дела, если нужных записей нет - создает, а лишние удаляет ?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
27.12.2012, 12:52 6
Зачем крон? Создать процедуру регистрации пользователя, которая вызывается при этой самой регистрации и создает нужные записи во всех нужных таблицах
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
27.12.2012, 18:13 7
Цитата Сообщение от nepster Посмотреть сообщение
а для создания записей так же ?
Я извиняюсь, пропустил создание записей Не помню(а может и не знал) как в mysql с триггерами, но не важно. Можно поручить создание записи - хранимой процедуре, а если уж на то пошло то и удаление... На хабре как-то мусолили вопрос, по поводу использования хранимок для обеспечения целостности базы и функционирования бизнес-логики. К решению так и не пришли. Кто-то считает, что вся бизнес логика должна быть в субд(что дает ей самодостаточность), а кто-то считает что логика должна быть в php(или другом) клиенте. вопрос стратегии проекта.. Я за хранимки, имхо это скорость и независимость от клиента..
зы. а про on delete cascade, это я про удаление родительской записи, мы обеспечим целостность без лишнего кода. создать новую запись, с созданием записей в дочерних таблицах так нельзя
0
9 / 9 / 0
Регистрация: 15.06.2010
Сообщений: 126
27.12.2012, 20:41 8
PHP
1
2
3
4
5
6
7
8
9
$user_id = 10; //тут ид создаваемого юзера (можно рандомить или генерировать по формуле)
$query = "INSERT INTO users (id) VALUE (".$user_id.")";
mysql_query($query) or die(mysql_error());
$query = "INSERT INTO users_profile (id) VALUE (".$user_id.")";
mysql_query($query) or die(mysql_error());
$query = "INSERT INTO users_log (id) VALUE (".$user_id.")";
mysql_query($query) or die(mysql_error());
$query = "INSERT INTO users_files (id) VALUE (".$user_id.")";
mysql_query($query) or die(mysql_error());
Так же не забывай про mysql_real_escape_string(). Безопасность и все такое...

А удалять пользователя можно всего одним запростом:
PHP
1
2
3
$user_id = 10;
$query = "DELETE FROM users WHERE id = ".$user_id;
mysql_query($query) or die(mysql_error());
при условии что остальные таблицы каскадно соединены.
0
47 / 23 / 3
Регистрация: 28.05.2012
Сообщений: 150
Записей в блоге: 1
29.12.2012, 11:21 9
Цитата Сообщение от Setsuna Посмотреть сообщение
Так же не забывай про mysql_real_escape_string(). Безопасность и все такое...
Эта функция не для защиты от SQL-иньекций и от грамотной иньекции вас не защитит
0
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
29.12.2012, 11:48 10
Цитата Сообщение от Totoro Посмотреть сообщение
Эта функция не для защиты от SQL-иньекций
а для чего же она тогда?
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
29.12.2012, 15:05 11
Цитата Сообщение от Setsuna Посмотреть сообщение
[PHP]
Так же не забывай про mysql_real_escape_string(). Безопасность и все такое...

Не по теме:

А нас и здесь не плохо кормють? Все болемене развитые языки позволяют для разработки клиентов (уже как десяток лет) использовать плейсхолдеры. php не исключение... но мы все по старинке.. :D

0
9 / 9 / 0
Регистрация: 15.06.2010
Сообщений: 126
30.12.2012, 21:52 12
Цитата Сообщение от casual_visitor Посмотреть сообщение

Не по теме:

А нас и здесь не плохо кормють? Все болемене развитые языки позволяют для разработки клиентов (уже как десяток лет) использовать плейсхолдеры. php не исключение... но мы все по старинке.. :D

Не по теме:

Да уже не раз мне и на работе это начальник говорил :( Да вот никак руки не доходят

0
30.12.2012, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2012, 21:52
Помогаю со студенческими работами здесь

Связи в таблицах
Добрый вечер. Возникла проблема. Есть две таблицы: books CREATE TABLE IF NOT EXISTS `books` (...

Связи в таблицах бд Автомобили
Задание:Разработать модуль для описания системы ГИБДД. Описать следующие классы: --Автомобиль...

Создание связи в таблицах
Здравствуйте. Подскажите, пожалуйста, почему вылазит такое сообщение, когда я нажимаю плюс у...

Не получается создать связи в таблицах
Здравствуйте. У меня не получается создать связи в таблицах с помощью запросов SQL. Не получаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru