В запросе сначала вызывается процедура и запоминается результат в переменной.
Затем выполняется сформированный запрос с выборкой из разных таблиц в зависимости от переменной созданной в процедуре.
Вопрос. При поступлении подобного запроса от другого пользователя переменные будут создаваться для каждого запроса свои или будет использована одна переменная. Накладок не будет? Кто-то делал такие запросы?
lonelywoolf
ArbNet, Естественно, для каждого свои.
ArbNet
Ещё вопрос.
Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.
Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?
Х.З.
ArbNet: Ещё вопрос.
Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.
Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?
Почитал. Не то.. Примитивное создание дополнительной таблицы и полей, но наверно по другому не получится, не реализовано в mysql взаимосвязей скорее всего
Х.З.
ArbNet: Вот хорошую статью нашёл https://habr.com/ru/post/488054/
Я в свое время книгу Мартина Грабера читал, погуглите, почитайте, может поможет в будущем.
ArbNet
Х.З.: книгу Мартина Грабера
Спасибо, скачал, почитаю.
Aisamiery
Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.
Первый вопрос — процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.
Второй вопрос совсем абстрактный, как говорится очень интересно, но нифига не понятно. Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите.
Stek
А еще можно воспользоваться тригерами, но в 99% связка по ключу удобнее.
Aisamiery: Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.
Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.
Aisamiery: Первый вопрос — процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.
Я сейчас делаю PHP драйвер для получения данных сущности из MySql.
У меня не простой запрос, как обычно делается, задаётся некоторое условие выборки и поля которые нужно получить.
Идея следующая.
Есть так скажем стандартные таблицы под определённый тип данных. Например: Integer, Text и тд. В этих таблицах по два поля id и value
Теперь я могу в коде PHP прописать структуру сущности в простом массиве
То есть передав в драйвер массив структуры сущности, драйвер будет искать данные в разных таблицах Integer и Text соответственно и возвратит этот же массив сущности но уже с данными.
А чтобы выборка данных была быстрее я создал таблицу записей сущностей в которой поля name(имя сущности) и record(массив id строк значений свойств).
То есть в начале запроса происходит получение данных record потом формируется запрос с выборкой из разных таблиц данных по id
Aisamiery: Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите
Я знаю про внешний ключ. По началу думал добавить ещё поле в таблицы данных по которому отслеживать принадлежность этих данных, но лишние манипуляции с дополнительным полем мне тут как-то не нужны, поэтому стал искать другие варианты.
———- Добавлено 23.05.2020 в 10:44 ———-
Stek, Спасибо. Поэкспериментирую с триггерами.
Если кому интересно, вот описание как их применять https://habr.com/ru/post/37693/
Aisamiery
Вы в очередной раз какую то хрень придумываете. Зачем вам разные таблицы, что мешает сложить в одну где будет 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.
У вас в голове каша, а не забывчивость конструкций. Вы впервые проходите этот путь, это видно не вооруженным глазом.
ArbNet
В запросе сначала вызывается процедура и запоминается результат в переменной.
Затем выполняется сформированный запрос с выборкой из разных таблиц в зависимости от переменной созданной в процедуре.
Вопрос. При поступлении подобного запроса от другого пользователя переменные будут создаваться для каждого запроса свои или будет использована одна переменная. Накладок не будет? Кто-то делал такие запросы?
lonelywoolf
ArbNet, Естественно, для каждого свои.
ArbNet
Ещё вопрос.
Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.
Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?
Х.З.
Ещё вопрос.
Есть ли в MySql такой механизм отслеживающий ссылается ли что-то на строку данных или нет, и если нет то её можно удалить, иначе нельзя.
Немного поясню. Есть две или более сущностей и какие либо их записи ссылаются на данные одной и той же таблицы.
Допустим возникает момент когда удаляются эти записи сущностей и на данные той таблицы никто уже не ссылается их также можно удалить, как такой механизм можно реализовать?
Можно, изучив https://ru.wikipedia.org/wiki/SQL
ArbNet
habr.com/ru/post/488054
Почитал. Не то.. Примитивное создание дополнительной таблицы и полей, но наверно по другому не получится, не реализовано в mysql взаимосвязей скорее всего
Х.З.
Вот хорошую статью нашёл https://habr.com/ru/post/488054/
Я в свое время книгу Мартина Грабера читал, погуглите, почитайте, может поможет в будущем.
ArbNet
книгу Мартина Грабера
Спасибо, скачал, почитаю.
Aisamiery
Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.
Первый вопрос — процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.
Второй вопрос совсем абстрактный, как говорится очень интересно, но нифига не понятно. Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите.
Stek
А еще можно воспользоваться тригерами, но в 99% связка по ключу удобнее.
https://stackoverflow.com/questions/11818191/mysql-trigger-delete-from-table-after-delete
ArbNet
Вопросы то ли от не знания, то ли от того что сильно плаваете в теме.
Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.
Первый вопрос — процедура. Зачем вы вызываете процедуры в MySQL? Передайте в запрос сразу нужные вам параметры с клиента.
Я сейчас делаю PHP драйвер для получения данных сущности из MySql.
У меня не простой запрос, как обычно делается, задаётся некоторое условие выборки и поля которые нужно получить.
Идея следующая.
Есть так скажем стандартные таблицы под определённый тип данных. Например: Integer, Text и тд. В этих таблицах по два поля id и value
Теперь я могу в коде PHP прописать структуру сущности в простом массиве
То есть передав в драйвер массив структуры сущности, драйвер будет искать данные в разных таблицах Integer и Text соответственно и возвратит этот же массив сущности но уже с данными.
А чтобы выборка данных была быстрее я создал таблицу записей сущностей в которой поля name(имя сущности) и record(массив id строк значений свойств).
То есть в начале запроса происходит получение данных record потом формируется запрос с выборкой из разных таблиц данных по id
Есть такое понятие как Внешний ключ (Foreign key), погуглите, возможно вы это ищите
Я знаю про внешний ключ. По началу думал добавить ещё поле в таблицы данных по которому отслеживать принадлежность этих данных, но лишние манипуляции с дополнительным полем мне тут как-то не нужны, поэтому стал искать другие варианты.
———- Добавлено 23.05.2020 в 10:44 ———-
Stek, Спасибо. Поэкспериментирую с триггерами.
Если кому интересно, вот описание как их применять https://habr.com/ru/post/37693/
Aisamiery
Вы в очередной раз какую то хрень придумываете. Зачем вам разные таблицы, что мешает сложить в одну где будет 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 ———-
Кому то другому не стал бы отвечать, но у вас пытливый ум и обширные знания. Я долгое время не занимался веб разработками поэтому что и не знал забыл, сейчас учусь практически заново, конечно я плаваю в теме. И у меня манера сразу приступать к делу и по ходу уже решать разные задачки как это сделать. Есть идеи, но нет знаний в данном случае конструкций запросов mysql.
У вас в голове каша, а не забывчивость конструкций. Вы впервые проходите этот путь, это видно не вооруженным глазом.