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

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

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

Студворк — интернет-сервис помощи студентам
К примеру есть 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.12.2012, 20:51
Ответы с готовыми решениями:

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

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

Связи в таблицах
Доброго времени суток. Подскажите, можно ли сделать связное обновление данных в двух таблицах? Например: Таблица1: Номер(ключевое...

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


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

тоесть кинуть ее в задание крона и пусть она проверяет все дела, если нужных записей нет - создает, а лишние удаляет ?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
27.12.2012, 12:52
Зачем крон? Создать процедуру регистрации пользователя, которая вызывается при этой самой регистрации и создает нужные записи во всех нужных таблицах
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
27.12.2012, 18:13
Цитата Сообщение от nepster Посмотреть сообщение
а для создания записей так же ?
Я извиняюсь, пропустил создание записей Не помню(а может и не знал) как в mysql с триггерами, но не важно. Можно поручить создание записи - хранимой процедуре, а если уж на то пошло то и удаление... На хабре как-то мусолили вопрос, по поводу использования хранимок для обеспечения целостности базы и функционирования бизнес-логики. К решению так и не пришли. Кто-то считает, что вся бизнес логика должна быть в субд(что дает ей самодостаточность), а кто-то считает что логика должна быть в php(или другом) клиенте. вопрос стратегии проекта.. Я за хранимки, имхо это скорость и независимость от клиента..
зы. а про on delete cascade, это я про удаление родительской записи, мы обеспечим целостность без лишнего кода. создать новую запись, с созданием записей в дочерних таблицах так нельзя
0
 Аватар для Setsuna
9 / 9 / 0
Регистрация: 15.06.2010
Сообщений: 126
27.12.2012, 20:41
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
 Аватар для Totoro
47 / 23 / 3
Регистрация: 28.05.2012
Сообщений: 150
Записей в блоге: 1
29.12.2012, 11:21
Цитата Сообщение от Setsuna Посмотреть сообщение
Так же не забывай про mysql_real_escape_string(). Безопасность и все такое...
Эта функция не для защиты от SQL-иньекций и от грамотной иньекции вас не защитит
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
29.12.2012, 11:48
Цитата Сообщение от Totoro Посмотреть сообщение
Эта функция не для защиты от SQL-иньекций
а для чего же она тогда?
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
29.12.2012, 15:05
Цитата Сообщение от Setsuna Посмотреть сообщение
[PHP]
Так же не забывай про mysql_real_escape_string(). Безопасность и все такое...

Не по теме:

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

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

Не по теме:

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

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2012, 21:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru