Задать вопрос
  • Однодневкам-одновопросникам тостера запретить задавать вопросы?

    @Beltoev
    Живу в своё удовольствие
    Думаете, 10 бесполезных ответов лучше, чем один бесполезный вопрос?

    К тому же, тут и без новичков достаточно таких ответов, а с такими правилами тостер вообще в помойку может превратиться
    Ответ написан
    8 комментариев
  • Как сделать так, чтобы значение в БД изменилось через определенное время?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если в течение суток он не оплатил заказ то изменить значение id_status = 0.

    Это неверный подход в архитектуре, отсюда и проблемы с неверной постановкой задачи. У вас должен быть отдельный объект брони, и на него отдельная таблица, в которой легко проверить насколько давно была сделана бронь, если больше какого-то времени и не оплачена - в выборке занятых объектов не учитывается. Ничего апдейтить не нужно, и если завтра поменяется логика бронирования основные свойства объекта не будут затронуты. Плюс будет статистика кто когда и как бронировал, с историей броней и оплат.
    Ответ написан
    Комментировать
  • Стоит ли делать составные внешние ключи в БД?

    Melkij
    @Melkij
    PostgreSQL DBA
    1. внешние ключи должны быть там и те, чтобы гарантировать ссылочную целостность. Должна быть ссылка сочетанием именно двух параметров - значит должна быть ссылка сочетанием пары параметров. Лучше или хуже сюда не применимо. Два разных fk и один составной имеют различное поведение.
    2. для какой именно СУБД? Postgresql следуя стандарту SQL обязывает ссылаться только на уникальное поле. Mysql отступает и в этом вопросе от стандарта и позволяет проверять неуникальное индексированное поле.
    3. см. coding standart конкретного проекта. Обычно никто не обижается против именования: имя таблицы _ имена полей _fk
    4. можно упереться в предел размера индексируемого поля. У postgresql это 1/3 размера странички памяти = 2730 байт по дефолту, у mysql - зависит от кучи факторов.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю работу индексов MySQL?

    @shagguboy
    если в запросе есть ВСЕ поля индекса, то порядок полей в индексе не имеет значения. Если есть не все поля то поля которые есть должны быть первыми.

    для вашего примера - составной индекс с автором впереди смогут использовать еще запросы только по автору и не смогут запросы только по дате.
    Ответ написан
    Комментировать
  • Как измерить скорость базы данных?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Комментировать
  • Базы данный какой тип поля выбрать?

    Rickkk
    @Rickkk
    Приветствую!
    Зачем вставлять значение времени из Python? Гораздо надежней, чтобы сама СУБД при вставке записи в таблицу ставила текущий timestamp.
    Для этого просто нужно добавить поле created_at в таблицу с default now:
    create table mytable 
    (
    ...
    created_at timestamp not null default now()
    );
    Ответ написан
    3 комментария
  • Как сделать JOIN для таблиц из разных БД?

    Melkij
    @Melkij
    PostgreSQL DBA
    Напрямую обращаться к другой БД нельзя. Но кто сказал, что вообще нельзя?

    Натравливаете Foreign Data Wrappers: https://www.postgresql.org/docs/current/static/pos...
    Получаете доступность обеих таблиц в одной БД. На актуальный версиях PG планировщик уже может проталкивать аггрегацию в fdw самостоятельно и считать там что можно, а обратно передавать только аггрегированные данные.
    Более старый способ: берёте старый добрый dblink: https://www.postgresql.org/docs/current/static/dbl... дёргаете запрос с джойном таблиц из одной БД, к результату джойните таблицы второй базы.
    Ответ написан
    2 комментария
  • Практическое использование схем в Postgresql - когда они нужны?

    В целом, понимайте схемы как пространства имен. Схемы помогают логически организовать структуру БД. Различные приложения или компоненты приложений внутри себя имеют более высокую связность, чем между собой, тоже самое и с данными в БД - часто таблицы сами по себе организуются в логические группы, причем внутри группы связей довольно много (внешние ключи, какие-то общие хранимые процедуры и т.д.), а между этими группами - мало или нет вовсе.

    Важно понимать, что различные БД плохо подходят для логического группирования, т.к. разбиение по базам данных нужно скорее для администраторов, а не для приложений. Плюс, в большинстве СУБД, где существует понятие схемы, возможно ставить внешние ключи на таблицы в другой схеме, но нельзя на таблицы в другой БД. Иными словами, отдельные БД удобно создавать тогда, когда вы разделяете данные абсолютно не связанных приложений или сервисов. Например, складского учета и форума поддержки пользователей. С другой стороны, если вы хотите логически разделить таблицы в соответствии с компонентами одного приложения (например, корпоративный портал: 4 таблицы для поддержки авторизации, 10 таблиц для поддержки форума, еще 5 для чата со службой поддержки или отделом продаж) - то именно схемы будут удобным механизмом для этого.

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

    А что будет если несколько юзеров будут на одну public-схему коннектиться?

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

    Вот допустим, у вас есть отдельная схема для таблицы авторизации и аутентификации и отдельная - для корпоративного форума. Сервис авторизации у вас выполнен отдельно от форума (например, авторизация выдаёт токены пользователю, с которыми он потом может зайти на форум). С точки зрения безопаности было бы логичным выдать сервису авторизации и форума различных пользователей в базе - тогда, при взломе форума невозможно будет получить доступ к паролям в базе или изменить права на портале, подправив данные в таблице ролей. Конечно, многие СУБД разрешают ставить права на отдельные таблицы, однако схема в данном случае играет роль контейнера и позволяет проставить единые правила для всех таблиц внутри неё.

    то есть при работе в постгре предпочтительнее вместо отдельных баз делать разные схемы в одной

    Как вы уже поняли - для независимых приложений, которые могут и должны существовать отдельно друг от друга - лучше делать разные базы. Тогда администраторы смогут спокойно переносить базы с сервера на сервер, независимо их бэкапить и т.д. Для компонентов одного приложения нужно использовать схемы.

    Вот вам еще хороший пример. У вас есть приложение для ведения бухгалтерии и складского учёта на фирме. При этом сложилось так, что вам нужно хранить на одном сервере данные нескольких разных фирм (например, вы предоставляете готовый сервис под ключ нескольким клиентам). В этой ситуации более чем логично хранить данные разных клиентов в разных БД, а данные бухгалтерского и складского учета - в различных схемах в рамках одной БД конкретного клиента.
    Ответ написан
    2 комментария
  • Подкиньте идею по хранению полей в БД?

    Zoxon
    @Zoxon
    Веб-разработчик
    1. Можно сереиализовать данные
    2. Хранить в промежуточном варианте в виде текста. Для этого хорошо подходит JSON.

    // checkbox
    {
    	"type": "checkbox",
    	"name": "checkbox-name",
    	"id": "checkbox-1",
    	"checked": true
    }
    
    // select
    {
    	"type": "select",
    	"name": "select-name",
    	"id": "select-1",
    	"options": [
    		{
    			"value": 0,
    			"label": "Option 1"
    		},
    		{
    			"value": 1,
    			"label": "Option 2"
    		}
    	]
    }
    Ответ написан
    5 комментариев
  • Как завтавить автоинкремент проверять существование записи?

    @Hedy
    Как вариант убрать с поля ID sequence nextval и создать триггер на INSERT, который будет смотреть максимальное значение по полю ID (либо по вашей формуле) и создавать при вставке следующее нужное значение.

    Ваш вариант увеличить начальное значение счетчика мне кажется вполне разумным, ничего страшного в этом нет:

    ALTER SEQUENCE your_seq RESTART WITH %YOURVALUEHERE%
    Ответ написан
    Комментировать
  • Триггеры на sql или psql?

    @krypt3r
    Что-то путаете. psql — утилита командной строки для СУБД PostgreSQL. Вы, видимо, хотели сказать, PL/pgSQL
    Ответ написан
    Комментировать
  • Какие самые востребованные навыки для разработчика на C/C++?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Самый востребованный навык - самостоятельно гуглить ответы на возникающие вопросы
    Ответ написан
    4 комментария
  • Насколько полезно то, чему учат в ВУЗах?

    @JohnJon
    Скажите, что будет шагом эволюции после "мегатрупраграмист на Wordpress"?


    ba8a8b6c58c042df81876fa17da6df53.jpg
    Ответ написан
    3 комментария
  • Где используется SQL?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    жесть ленивые студенты пошли

    ну хоть сам что-то пишет, а не скачал реферат
    Ответ написан
    Комментировать
  • Возможно ли заработать на играх?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Если вы задаете такой вопрос, то нельзя.

    Разработка игры - это технический процесс.
    Заработок на разработке игры - бизнес процесс. Если вы задаете такие вопросы, то скорее всего вы не сможете заработать на разработке игры своими силами.
    Ответ написан
    4 комментария
  • Почему хабражители не жалуют компании?

    edli007
    @edli007
    full stack, team lead
    Компании зарабатывают деньги. Идиотов на хабре нет, потому все это понимают, 70%+ компаний пальцем не дергнут, чтоб написать полезное, без выгоды для себя.
    Ответ написан
    1 комментарий