Вопрос по MySql

123 4
ArbNet
На сайте с 27.10.2019
Offline
132
1212

В запросе сначала вызывается процедура и запоминается результат в переменной.

Затем выполняется сформированный запрос с выборкой из разных таблиц в зависимости от переменной созданной в процедуре.

Вопрос. При поступлении подобного запроса от другого пользователя переменные будут создаваться для каждого запроса свои или будет использована одна переменная. Накладок не будет? Кто-то делал такие запросы?

lonelywoolf
На сайте с 23.12.2013
Offline
151
#1

ArbNet, Естественно, для каждого свои.

Платный и бесплатный хостинг с защитой от DDoS (http://aquinas.su)
ArbNet
На сайте с 27.10.2019
Offline
132
#2

Ещё вопрос.

Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.

Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.

Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?

ХЗ
На сайте с 31.08.2008
Offline
155
#3
ArbNet:
Ещё вопрос.

Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.

Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?

Можно, изучив https://ru.wikipedia.org/wiki/SQL

ArbNet
На сайте с 27.10.2019
Offline
132
#4

habr.com/ru/post/488054

Почитал. Не то.. Примитивное создание дополнительной таблицы и полей, но наверно по другому не получится, не реализовано в mysql взаимосвязей скорее всего

ХЗ
На сайте с 31.08.2008
Offline
155
#5
ArbNet:
Вот хорошую статью нашёл https://habr.com/ru/post/488054/

Я в свое время книгу Мартина Грабера читал, погуглите, почитайте, может поможет в будущем.

ArbNet
На сайте с 27.10.2019
Offline
132
#6
Х.З.:
книгу Мартина Грабера

Спасибо, скачал, почитаю.

Aisamiery
На сайте с 12.04.2015
Offline
301
#7

Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.

Первый вопрос - процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.

Второй вопрос совсем абстрактный, как говорится очень интересно, но нифига не понятно. Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите.

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
S
На сайте с 23.05.2004
Offline
315
#8

А еще можно воспользоваться тригерами, но в 99% связка по ключу удобнее.

https://stackoverflow.com/questions/11818191/mysql-trigger-delete-from-table-after-delete

Это просто подпись.
ArbNet
На сайте с 27.10.2019
Offline
132
#9
Aisamiery:
Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.

Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.

Aisamiery:
Первый вопрос - процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.

Я сейчас делаю PHP драйвер для получения данных сущности из MySql.

У меня не простой запрос, как обычно делается, задаётся некоторое условие выборки и поля которые нужно получить.

Идея следующая.

Есть так скажем стандартные таблицы под определённый тип данных. Например: Integer, Text и тд. В этих таблицах по два поля id и value

Теперь я могу в коде PHP прописать структуру сущности в простом массиве


$info= [ "svoystvo1" => "Integer",
"svoystvo2" => "Text",
];

То есть передав в драйвер массив структуры сущности, драйвер будет искать данные в разных таблицах Integer и Text соответственно и возвратит этот же массив сущности но уже с данными.

А чтобы выборка данных была быстрее я создал таблицу записей сущностей в которой поля name(имя сущности) и record(массив id строк значений свойств).

То есть в начале запроса происходит получение данных record потом формируется запрос с выборкой из разных таблиц данных по id

Aisamiery:
Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите

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

---------- Добавлено 23.05.2020 в 10:44 ----------

Stek, Спасибо. Поэкспериментирую с триггерами.

Если кому интересно, вот описание как их применять https://habr.com/ru/post/37693/

Aisamiery
На сайте с 12.04.2015
Offline
301
#10

Вы в очередной раз какую то хрень придумываете. Зачем вам разные таблицы, что мешает сложить в одну где будет ID | ENTITY_ID | PROP_ID | INT | TEXT | DATE

Сделать слой абстракции, где манипулировать типами, то есть базовый тип FieldText у вас будет знать что его параметр лежит в колонке TEXT, дальше вам нужен только маппинг данных с простого запроса sql в объект PHP. То есть, одним запросом вы выберете все данные с таблички относящиеся к определенному объекту (ENTITY_ID), а сам объект уже разрулит с какой колонки ему брать данные или в какую записывать.

Не впихивайте в БД все что можно, оно имеет последствия и вполне плачевные, как на скорости, так и на бэкапе этих вещей. Вам нужно изолироваться от специфических вещей хранилища, чтобы иметь возможность сменить его тип.

---------- Добавлено 23.05.2020 в 20:53 ----------

Вам ещё стоит почитать про нормальные формы, в частности 5NF

---------- Добавлено 23.05.2020 в 20:56 ----------

ArbNet:
Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.

У вас в голове каша, а не забывчивость конструкций. Вы впервые проходите этот путь, это видно не вооруженным глазом.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий