Главная Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски

[Ответить в тред] Ответить в тред

Check this out!


<<
Назад | Вниз | Обновить тред | Автообновление
608 | 93 | 214

И снова это неиндексированный баз данных тред! /sql/ ЕДИНЫЙ БАЗ ДАННЫХ ТРЕД 02/04/18 Пнд 22:25:27  1167018  
image.png (163Кб, 512x512)
image.png (107Кб, 836x673)
image.png (355Кб, 1600x1247)
И снова это неиндексированный баз данных тред!
Тут мы решаем ультраважные вопросы о том, как правильно хранить динамические атрибуты сущностей: в полях или в строках,
Рассказываем, как работаем аналитиками и мечтаем стать разработчиками,
Строим АНАЛИТИЧЕСКИЕ отчеты в экселе, выгружая по миллиону строк, а потом фильтруя,
Дружно не понимаем, ЗОЧЕМ ЖИ НУЖИН ОЛАП, ЕСЛИ И ТАК ВСЕ РАБОТАЕТ ЗАЕБИСЯ,
Ищем ошибки в аббривиатурах MDX DMX XMLA,
Доебываемся до эс - ку - элей наших же потенциальных конкурентов
>Select id from tbl_table_with_id where id = (select max(id) from tbl_table_with_id)
>ЧТО НЕ ТАК-ТО У МЕНЯ?
Удивляемся, как за знания, приобретаемые за 4 месяца на sql-ex, могут платить по 100к, и бугуртим, что ниасилили и 100к не получаем.
А так же:
Постгре или постгрес?
Май эс ку эль или мускуль?
Эс ку эль или сиквел?

В общем, это очередной баз данных тред, поехали!

Награда светит не посмертною медалью, отнюдь
Это храм старого формата, так предали огню
И скоптили небо старики, что слышны с Невской реки
Мы видим дым от костра - "Да здравствуют базовики!"

ПРЕДЫДУЩИЙ: >>1086747 (OP)

#sql #бд #базы данных
Аноним 02/04/18 Пнд 22:45:10  1167037
>>1167018 (OP)
>сиквел
Это баттхерт-тред?
Аноним 03/04/18 Втр 06:57:03  1167228
>>1167018 (OP)
Найс блядь обосрался с перекатом. Не умеешь - не берись.
Аноним 03/04/18 Втр 11:44:41  1167277
>>1167228
Иди нахуй.
Аноним 03/04/18 Втр 13:24:46  1167322
>>1167228
Хуль тебе не нравится? Даже теги поставил. Оп - не хуй. А ты - пидораха.

мимо
Аноним 03/04/18 Втр 13:31:09  1167325
еее, перекот!
Аноним 03/04/18 Втр 14:55:45  1167358
И вот снова классический перекато срач в БД-треде, когда уже нормальный перекат будет с новой тупой шапкой, ммм?
Аноним 03/04/18 Втр 15:51:13  1167388
>>1167322
Вот это взрыв :^)
Для начала чекай тему, а потом свою мать.
Аноним 03/04/18 Втр 16:41:43  1167416
Аноны, посоветуйте книжечек по постгресу. Сложно его в питон интегрировать? Я поставил сервер + накатил DBeaver чтоб в консоли не пердолиться
Аноним 04/04/18 Срд 00:54:20  1167693
>>1167416
>Сложно его в питон интегрировать?
SQLAlchemy
Аноним 04/04/18 Срд 10:24:51  1167809
Также по постгресу вопрос, версии 9.3. Нужно что-то вроде отказоустойчивого кластера. Есть два сервера В идеале один из их будет мастером, данные автоматически будут сливаться на слейв. В случае недоступности мастера (как и где вообще эту недоступность проверять?), слейв берет на себя все его обязанности и, когда мастер становится доступен, сливает свежеполученные данные на него (и передает управление?).
Короче, второй день читаю информацию на эту тему, сравниваю варианты репликации и уже реально запутался. Кто-ндь наставит на путь истинный?
Аноним 04/04/18 Срд 12:12:09  1167843
>>1167809
Вдогонку: есть ли способ относительно безболезненно обновиться с 9.3 на 10 без промежуточных этапов?
Аноним 04/04/18 Срд 13:59:55  1167880
>>1167809
Это называется StandBy. Гугли книги администратора postgres на рутрекере. Настрой сначала архивлоги, а потом с этого пляши. Научись эти логи синмать раз в полчаса, например, а после дополни конфиг на стэндбай.

Чтобы безболезненно перейти на новую веосию читай ман про апгрейд, или делай бэкап и разворачивай потом на десятку
Аноним 04/04/18 Срд 19:01:26  1168008
image.png (37Кб, 800x410)
Есть одна группа и в ней много студентов.
Как мне сделать таблицу эту по нормальному? Но если я сделаю как на пике, мне придется каждый раз писать insert into Группа - и вводить каждый раз имя группы, каждый раз количество и менять только айдишник студента.
Это нормальный подход?
Аноним 04/04/18 Срд 19:02:00  1168009
>>1168008
И еще каждый раз айдишник группы.
У меня будет одна и та же группа с разными айдишниками.
Аноним 04/04/18 Срд 20:40:30  1168049
>>1168008
Это ты так не смешно шутишь?
Аноним 04/04/18 Срд 21:12:33  1168065
Че правда есть отдельная профессия, где платят за построение запросов к базам данных? Я думал, это задача бэкендера.
Аноним 04/04/18 Срд 21:35:57  1168073
>>1168065
кек. Data Science какой-то вроде.
Аноним 05/04/18 Чтв 00:03:36  1168164
запощу и сюда заодно
Продолжаю вкатываться, хочу устроиться для начала джуном в бекенд на Питоне. Дошел в своем обучении до баз данных. Что прочитать по ним? Database systems Сиджея и Learning sql ? Или это не то совсем? Что тогда надо?
Аноним 05/04/18 Чтв 00:32:36  1168185
>>1168164
Алан Бьюли, Том Кайт.
Аноним 05/04/18 Чтв 02:53:11  1168224
>>1168008
Связь студент-группа должна быть в отдельной таблице, в этой таблице также должны храниться дата начала членства студента в группе и дата окончания оной (null - если дата окончания неизвестна)
Аноним 05/04/18 Чтв 04:43:27  1168243
postgresql-94-f[...].jpg (13Кб, 300x188)
Поясните за PostgreSQL.
Чтобы добавить ограничение на колонку нужно выполнить такой запрос:
ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);

(источник: http://postgresql.ru.net/manual/ddl-alter.html )

Как я понял product_no является названием колонки или нескольких колонок для которых мы добавляем ограничение, а чем тогда является some_name ?
Аноним 05/04/18 Чтв 07:54:15  1168256
>>1168243
Название ограничения же. Нельзя же без имени же.
Аноним 05/04/18 Чтв 09:30:00  1168280
Как в БД на физическом представлен null? Есть поле integer, как СУБД определяет лежит там значение или это null?
Аноним 05/04/18 Чтв 09:49:25  1168291
>>1168224
>Связь студент-группа должна быть в отдельной таблице,
Как она выглядит эта связь?
Аноним 05/04/18 Чтв 11:08:09  1168320
>>1168291

Как-то так:

student_group_id number
student_id number
group_id number
student_group_date_start date
student_group_date_end date


Это самый простой вариант. Можно добавить ссылки на документы, на основании которых осуществлялось включение/исключение в группу, добавить комментарий.

Кстати, количество человек в группе хранить в таблице не надо.
Оно рассчитывается в зависимости от даты.
Например, на первом курсе было 20 человек, к пятому осталось 8. Тебе нужно узнать, сколько человек отчислилось на третьем курсе, или сколько пришло из академки на четвертом. С такой промежуточной таблицей-связью это легко сделать.
Аноним 05/04/18 Чтв 13:07:53  1168368
15220886918390.jpg (97Кб, 640x640)
Посоветуйте GUI для MySQL
Аноним 05/04/18 Чтв 16:55:09  1168478
>>1168368
https://www.sqlmanager.net/ru/products/mysql/manager
Аноним 05/04/18 Чтв 17:18:19  1168489
Посоветуйте норм гуй для постгреса, чтобы там были вкладки как в dbForge
Аноним 05/04/18 Чтв 18:03:08  1168520
>>1168256
Но ведь при создании таблицы я могу сделать вот так:

CREATE TABLE products (
name text,
id integer UNIQUE
);

Так вот, где здесь указывается имя ограничения?
Аноним 05/04/18 Чтв 19:11:12  1168576
>>1168320
Точно! Спасибо тебе большое, что уделил на меня время.
Аноним 05/04/18 Чтв 20:58:22  1168648
Привет, бродяги. Кому задачек порешать по sql?
Аноним 05/04/18 Чтв 21:14:20  1168670
>>1168648
ну го
Аноним 05/04/18 Чтв 21:15:39  1168671
>>1168670
Дак давай, бля.
Аноним 05/04/18 Чтв 21:28:48  1168680
>>1168671
На
Аноним 05/04/18 Чтв 21:30:36  1168682
>>1168680
Взял
Аноним 05/04/18 Чтв 22:57:35  1168765
image.png (28Кб, 1256x139)
>>1168648
Ну, если впадлу делать что, можешь мою взять с триггерами.

Нужно разработать и реализовать триггеры для операций INSERT, UPDATE, DELETE для проверки сложных ограничений, накладываемых на схему предметной области (не менее двух триггеров для каждого типа операции).

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

По одному триггеру для каждой операции должны быть триггерами instead of (триггеры должны содержать логику обработки данных - например, выполнение компенсирующих операций, расчетные данные, обработку сложного удаления или обновления данных).
Аноним 05/04/18 Чтв 22:58:08  1168766
image.png (239Кб, 1791x955)
>>1168765
проебался с пиком.
Аноним 05/04/18 Чтв 23:45:29  1168815
>>1168765
Зачем?
Это не задача, это упражнения
Аноним 06/04/18 Птн 01:39:21  1168900
>>1168765
Но это есть в книгах по Ораклу, не проще ли посмотреть там?..
Аноним 06/04/18 Птн 02:48:06  1168918
>>1168520
В этом случае имя генерится субд и оно не очень удобное. Не знаю как в постгресе, а в Оракле это что-то вроде sys_12343123.

По ссылке, которую ты выше приводил:

Чтобы удалить ограничение, вам необходимо знать его имя. Если вы сами давали ему имя, то все просто. В противном случае, СУБД назначило автоматически сгенерированное имя, которое нужно найти. В этом может помочь команда \d tablename в psql; другие интерфейсы также могут предоставлять способ инспектирования подробностей таблиц. Затем выполняется команда:

ALTER TABLE products DROP CONSTRAINT some_name;
(Если вы выполняете команду с указанием такого имени ограничения как $2, не забудьте, что вам понадобится заключить имя в двойные кавычки, чтобы имя было воспринято как правильный идентификатор.)


Аноним 06/04/18 Птн 05:29:21  1168938
>>1168918
понял, принял. Спасибо
Аноним 06/04/18 Птн 13:26:04  1169044
>>1167880
Благодарю. Обновление уже сделал, проблем вроде не было.

Насчет StandBy не нашел ничего толкового, логи и бекапы есть, как я понял все-таки нужна потоковая/логическая репликация.

Помимо этого, наткнулся на вариант кластера высокой доступности средствами самой винды: https://www.postgresql.org/message-id/006c01cd8c6f%24bd274ba0%243775e2e0%24%40devshock.com (правда слабо понял, как это реализовать, сейчас усилено гуглю).

Что думаете об этом? Стоит ли пробовать (учитывая, что серваки надо было запустить уже на этой неделе, а я - простая вебмакака без опыта администрирования чего либо)?
Аноним 07/04/18 Суб 01:42:21  1169450
Есть в треде кто работает ETL разрабом? Как вообще направление? Работаете из-за денег или реально интересно чистить данные от закачиков?
Аноним 07/04/18 Суб 02:39:48  1169462
>>1168489
DataGrip
Аноним 07/04/18 Суб 12:05:57  1169548
>>1168489
DBeaver.
Аноним 07/04/18 Суб 14:44:07  1169622
>>1169044
Ты серьёзно? Твои друзья вот эти три дядьки:Bartolini G., Ciolli G., Riggs S.
Есть же годные доки на сайте postgresql.
Первым делом читай про Wall-Ahead Logs ( они же archvie logs) параграф 29.2. Если ты не разберёшься с технологией Standby то можешь налепить скрипт, который на второй машине будет применять эти логи. Да и приятно, когда у тебя бэкап каждый день, а архивлоги делаются каждые 15 минут. Это позволит восстановить сервер если упадёт стэндбай и кто-то повредит базу например на 18:06(а бэкап у тебя в 00:00)

Сама технология Standby основана на передачи redo-журналов по сети другой машине, и там уже применение. Standy это 25.5.

Есть краткий ман по настройки Standby вот тут : https://wiki.postgresql.org/wiki/Hot_Standby

но по сути настроив wal ты вполне легко настроишь standby. Чтобы понять как всё работает и посмотреть все настройки тебе нужно postgresql.conf , и забэкапь этот файл, чтобы если сломаешь его, то сможешь восстановить.
По сути если у тебя есть виртуалка, то просто копируешь машину, а потом делаешь из одной main сервер, другой standby. И выпроси хранилище для бэкапов, даже если кто-то заебашит raid-5 тебе будет это нужно.
Аноним 07/04/18 Суб 15:50:00  1169652
>>1169450
Работаю ETL-разрабом в развитии DWH полтора года. Oracle + Informatica. Мне норм, как тебе будет хуй знает. Лично мне платят хуево, собираюсь в ближайшее время перекатываться в другое место.
Аноним 08/04/18 Вск 02:43:19  1169938
E4HxU.gif (12Кб, 479x395)
>>1168280
В оракле, если не ошибаюсь, NULL определяется как строка в блоке с значением длины 0.
Аноним 08/04/18 Вск 02:59:17  1169943
>>1168065
>>1168073
Есть такая профессия, даже не обязательно Data science. Если ты делаешь хуйню для который нужна база, то это типичная задача бэкэнд-разработчика на язык-нейм.
Если ты делаешь с нуля или развиваешь ебическую, нетривиальную по объему и нагрузке базу на основе которой будут работать разные хуйни, то это отдельная профессия.
Аноним 08/04/18 Вск 03:04:28  1169944
tomkyte.jpg (8Кб, 198x255)
Посгрес сосатб.
Аноним 08/04/18 Вск 12:34:41  1170047
>>1169943
у меня вторая есть как отдельная задача, лол.
Проектировка БД. Причём приходится всасывать дохуя документации и иногда недокументируемые возможности, но я вообще программист-архитектор по профессии.
Аноним 08/04/18 Вск 12:54:18  1170057
>>1170047
>я вообще программист-архитектор по профессии

О!
Аноним 08/04/18 Вск 16:10:06  1170156
>>1168900
>Но это есть в книгах по Ораклу, не проще ли посмотреть там?.
Что там есть?
Аноним 08/04/18 Вск 18:52:11  1170251
кто есть?
Аноним 08/04/18 Вск 19:03:20  1170263
>>1170251
есть
Аноним 08/04/18 Вск 19:31:04  1170273
image.png (15Кб, 771x175)
>>1170263
Как мне создать триггер на удаление всех записей у которых одно поле равно удаляемому значению?
Аноним 09/04/18 Пнд 01:10:50  1170502
>>1170273
У тебя каскад получается, ты в курсе?
не проще удалить через where без триггеров.
Аноним 09/04/18 Пнд 01:15:22  1170504
>>1170156
Прибыл, Фейербах, Кайт. Читай.
Аноним 09/04/18 Пнд 01:18:08  1170505
Собираюсь написать СУБД-engine на js.
Аноним 09/04/18 Пнд 12:11:31  1170648
>>1169622
Спасибо, анон, за подробное разъяснение! Вообще с английским не очень дружу, то есть читаю, понимаю, но это занимает раза в 3 больше времени и сил, чем та же инфа на русском. Но книга реально крутая, буду разбираться.

Была мысль поднять по виртуалке на каждом сервере, основа - Дебиан, гостевая - Windows Server 2012 R2, но идея мне кажется дико костыльной, причем хз, можно ли ОЕМ-ключи к винде использовать на виртуалке.
Аноним 09/04/18 Пнд 13:40:49  1170707
Аноны, поясните мне за оптимизацию SQL запросов в MS SQL. Чо это такое, как это работает? Во допустим у меня есть обычный select * from hui.dbo.vruke where DateTime = ""
ну вот мне надо таких запросов послать 12 штук за один раз, при этом разница в них будет только в DateTime - по два часа, то есть первый запрос с DateTime равным 00:00:00, второй 2:00:00 и так далее. И вот чего, как это можно оптимизировать?
Аноним 09/04/18 Пнд 16:15:52  1170745
>>1169652
Не в зеленом госбанке случайно?
Аноним 09/04/18 Пнд 16:23:21  1170750
>>1170707
Ну эта, сморя чо те надо сделать.
Запросы-то не ради самих запросов отправляются, верно?
Если ты хочешь получить какую-то информацию за сутки, тебе и надо отправлять один запрос на сутки плюс группировка по 2 часа.
Аноним 09/04/18 Пнд 16:37:34  1170758
>>1167018 (OP)
Планирую начать использовать MongoDB, чтобы объединить в одном месте несколько больших наборов данных со множеством столбцов, где в случае SQL пришлось бы делать много таблиц.

Вот тут пишут, что из MongoDB неудобно делать запросы по типу SQL
https://habrahabr.ru/post/222083/

Если это так, то что, кроме упоминаемого Asterix, можно взять в качестве No SQL базы, чтобы можно было использовать команды, схожие с SQL ? Желателен модуль для Python.
Аноним 09/04/18 Пнд 18:45:50  1170826
>>1170504
> Фейербах, Кайт. Читай.
Нихочу.

>>1170502
>У тебя каскад получается, ты в курсе?
Да, я решил проблему.
Аноним 09/04/18 Пнд 20:07:54  1170869
>>1170707
Используй динамический sql
Аноним 09/04/18 Пнд 23:41:45  1170991
Безымянный.jpg (147Кб, 629x901)
Надо вкатиться в базы данных, с чего начать? Я не про учебник, а про само написание кода. Скачал с официального сайта MySQL, он требует .Net framework 4, скачал его с официального сайта, а он уже установлен, но на самом деле нет, и MySQL не хочет ставиться и .Net Framework не хочет ставиться, а я хочу ставиться по вене, анон помоги.
Аноним 10/04/18 Втр 00:05:10  1171012
>>1170745
Нет, в зеленом госбанке заебись платят, говорят.
Аноним 10/04/18 Втр 00:07:44  1171015
>>1170991
Попробуй поставить 4.5.2, а не 4.5
Сам базами не страдаю, так что сказал навскидку.
Аноним 10/04/18 Втр 02:24:39  1171047
Только что узнал про дистинкт и чет не понял, нахуя он нужен если есть джойны? Когда его надо использовать?
Аноним 10/04/18 Втр 07:47:46  1171074
>>1170750
>Если ты хочешь получить какую-то информацию за сутки, тебе и надо отправлять один запрос на сутки плюс группировка по 2 часа.
Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?
>>1170869
>Используй динамический sql
Это что такое? Как мне поможет?
Аноним 10/04/18 Втр 08:28:58  1171081
>>1171074
это например такая конструкция
yoba:=ti

select * from you.pidor where you.youba=:yoba

когда ты делаешь это динамично, то план составление и исполнения запроса выполняется 1 раз на дохуя данных. То есть ты берёшь и меняешь yoba на что-то другое, например yoba:=mamka. Время на данный select тратится в разы меньше, ведь ты уже делал такую же выборку, анон, да ведь?

Дальше каждая норм СУБД имеет расширенный sql, можешь написать функцию или materialezed view.


Вообще если ты регулярно делаешь такие вопросы, то почему ты не подумал ещё о partition table?

>>Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?

Ты не поверишь, но да. Можешь сделать вьюху с этими данными, а потом из перебирать. Вьюха это не только удобство, но и скорость.
Аноним 10/04/18 Втр 08:45:08  1171087
>>1171081
блин, это интересно, но мне не ясно, сработает ли в моем случае, я просто задачу упростил, дабы анонов не грузить. Я на шарпе пишу отчеты и тащу данные вот таким запросом
SELECT * FROM OPENQUERY(INSQL, 'SELECT
aL1_1_2\value, aL1_6_2\value, aL6_1_2\value, aL6_2_2\value, aL7_4_1\value, aP1_1_1\value, aP1_2_2\value, aP1_6_1\value, aP11_1\value, aP2_1_1\value, aP2_1_13\value, aP2_1_3\value,
aP2_1_5\value, aP2_2_1\value, aP2_2_13\value, aP2_2_3\value, aP2_2_5\value, aP3_1\value, aP7_8_7\value, aP7_8_8\value, aT1_2_1\value, aT2_1_12\value, aT2_2_12\value, aT24_4\value,
aT3_2\value, aT7_8_6\value, aV2_1_7_1\value, aV2_1_7_2\value, aV2_2_7_1\value, aV2_2_7_2\value
FROM WideHistory
WHERE DateTime = ""FinishTime""');
где в цикле заменяю FinishTime на нужное мне время 12 раз. Вот такое говно как то можно оптимизировать?
Аноним 10/04/18 Втр 11:11:40  1171151
>>1171087
Мм, вьюху делай
Аноним 10/04/18 Втр 12:41:36  1171212
>>1171074
>Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?

Зависит от структуры базы(особенно индексов) и природы данных. В общем случае так лучше и правильнее.
Если же мелкие запросы предпочтительнее, так тоже может оказаться, то их надо делать с bind переменными.


Аноним 10/04/18 Втр 12:49:24  1171214
>>1171087
Даже если не дойдешь до вьюшки или хранимки, сделай bind переменные. Сейчас у тебя самый хуевый вариант из возможных.
Аноним 10/04/18 Втр 13:07:43  1171220
>>1171214
>bind переменные
а чо, а как? я просто в ms sql не очень (только на уровне простых запросов и Entity Framework). В двух словах с небольшим примером можно? А то в гугле только про mysql нашел биндинг.
Аноним 10/04/18 Втр 15:16:04  1171262
>>1171220
Если ты используешь bind-переменные для запроса , который вызвается несколько раз, то СУБД гораздо, гораздо быстрее разберет и выполнит второй и следующие запросы, используя данные из кэша. Если ты формируешь запрос простой строкой, то с точки зрения субд каждый запрос - уникальный и возникают дополнительные расходы на парсинг и построение плана, кэш не используется. Если таких уникальных запросов много, то ДБА тебе руки не пожмут.
Если ты используешь openquery, то там нельзя просто так использовать bind-переменные, вот же говно, не ожидал.

На твоем месте я бы попробовал сделать хранимую процедуру и вызывал бы ее с подставленным в цикле значением (но сначала попробовал бы все-таки группировки. Опять же, зависит насколько часто твой отчетник дергает базу)

https://social.msdn.microsoft.com/Forums/en-US/5da9950d-c526-4afe-a6d7-30488db2fb26/calling-sp-using-open-query-in-sql-server?forum=transactsql
Аноним 10/04/18 Втр 17:15:46  1171299
>>1168489
Aqua data studio, на рутрекере есть крякнутая

Аноним 10/04/18 Втр 18:07:36  1171317
computers.gif (8Кб, 471x307)
>>1167018 (OP)
Задание: 1 ($erges: 2008-06-21)
Дима и Миша пользуются продуктами от одного и того же производителя.
Тип Таниного принтера не такой, как у Вити, но признак "цветной или нет" - совпадает.
Размер экрана Диминого ноутбука на 3 дюйма больше Олиного.
Мишин ПК в 4 раза дороже Таниного принтера.
Номера моделей Витиного принтера и Олиного ноутбука отличаются только третьим символом.
У Костиного ПК скорость процессора, как у Мишиного ПК; объем жесткого диска, как у Диминого ноутбука; объем памяти, как у Олиного ноутбука, а цена - как у Витиного принтера.
Вывести все возможные номера моделей Костиного ПК.

Есть идеи как такое решить?
Аноним 10/04/18 Втр 22:34:57  1171439
>>1171317
изи же. Но знаешь, sql-ex и ты идут на хуй.
Аноним 11/04/18 Срд 03:50:37  1171520
>>1171317
>Есть идеи как такое решить?

А у тебя? Хоть строчку написал? Где твои собственные соображения? М?
Аноним 11/04/18 Срд 10:54:32  1171584
Анон, поясни за базы данных на графах, например neo4j. Правда, что с ними быстрее селектить джоины? Вообще какие у них практические преимущества перед реляционной классикой?
Аноним 11/04/18 Срд 14:32:36  1171661
>>1171584
Джойнов нет, селектов нет.
Там используются RDF, RDFS, SPARQL, OWL, SWRL, ну и CYPHER.
Что это такое - смотри в интернете. Логика совершенно другая.
Возьми OrientDB и попробуй, првда там sql даже очень далек от 92. Но есть возможность запилить граф.
Если хочешь область применения - социальные сети. Там это оптимально в отличии от реляционной, и вот подумай почему.
Аноним 11/04/18 Срд 20:59:24  1171884
Сап. Посмотрел полторы лекции про индексирование и на вики просмотрел статью. Ничего не понимаю. Можете в двух словах, простым языком объяснить, что это?

Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных.
Что это за объект? В каком формате хранится? Как связан с таблицей?
Аноним 12/04/18 Чтв 03:07:20  1172042
>>1171884
>Что это за объект
СУБД содержит разные объекты - таблицы, индексы, хранимые процедуры, триггеры, вьюшки. Т.е. индекс - это объект, отличающийся от таблицы.

Самая простая аналогия - предметный указатель терминов в конце учебника.
По этому указателю ты можешь быстро найти нужную страницу. Например, мануале по автомобилю написано: Топливный фильтр, стр. 30, 55, 100. Если такого указателя нет, то тебе бы пришлось просмотреть все страницы, а с индексом-указателем ты сразу получаешь конкретные номера.

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


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

>Как связан с таблицей?
Индекс создается на одну или несколько колонок определенной таблицы.
Аноним 12/04/18 Чтв 08:50:59  1172076
>>1169622
Короче, сделал Hot Standby, слейв льет данные с мастера и доступен на чтение. Но как, и, главное, когда делать слейв мастером и наоборот! Читал про варианты с pgpool, достаточно удобно, но третий сервер для него мне никто не даст. Остается вариант постоянной проверки на слейве доступности мастера и, в случае его недоступности, продвижения слейва до мастера. И наоборот. Пока думаю решить это с помощью наколеночных батников, но вообще не уверен, будет ли это решение приемлимо работать. Очень большое желание вообще забить на все и уволиться, ибо знаний катастрофически не хватает, а процесс настройки затянулся уже более чем на две недели. Есть ли выход из тупика?
Аноним 12/04/18 Чтв 09:57:24  1172096
>>1172076
Есть система мониторинга в фирме?
Просто пилишь в нее тесты, и когда сервер 100% падает, тл перекатываешься на другой. Напиши батники для переключения серверов и кинь на каждую машину. На всякий случай научись быстро отключать слейвы и мастеры, если один из них накроется. И настрой бэкапы на слейве, но не юзай их без необходимости.
Аноним 12/04/18 Чтв 10:34:48  1172118
>>1172096
>Есть система мониторинга в фирме?
"А что это?" Серьезно, только 2 сервака с Windows Server 2012 r2 на борту. Ну там pgAdmin, но не думаю, что он чем-то поможет.

Основная проблема: ок, слейв переключился в мастер. Но когда мастер вновь поднимется, неизвестно же. То есть на момент запуска сдохшего мастера у нас параллельно два мастера. Как его вовремя задемоутить, чтобы не похерить базу? Запускать при загрузке службу только после проверки роли второго сервера? Это за гранью моего понимания.

Бекапы есть на мастере. Настроить на слейве точно так же, вроде, не проблема, это пока даже не горит.

Вообще это моя первая сколько-нибудь серьезная работа в IT, до этого только писал сайтики на вордпрессе и админил локалхосты в гос. учреждении. К понедельнику надо уже предоставить готовый отказоустойчивый кластер, и у меня все сильнее поджимает. Это вообще нормально тупить по 2 недели на таких задачах?
Аноним 12/04/18 Чтв 12:29:55  1172178
>>1172118
Выпроси сервер на который ты поставишь Zabbix тебе нужно сделать пару вещей, поставить модули забикса на эти серваки, и заставить их общаться. Если понимаешь, что один сервер ебанулся и не отвечает минут 5: то лезешь на машину и включаешь батник, чтобы слейв стал мастером. В это время, если у тебя есть доступ к мастеру, то гасишь деятельность сервера и переводишь его уже в слейв( обычно такое не работает, так как у тебя сеть/отказ системы/подыхание хардов) .


Далее план таков: система мастера воскрешается, если разницы в redo мало, и какой-то уебан не переключился на него во время его отключки и не внес изменения - догоняешь его со слейва, если внес - ищешь scn переключения, откатываешься на него и дожираешь redo со слейва.)

Если все очень плохо - ты же делаешь бэкапы? )
Тебе надо будет восстановить до слейва( поэтому я и написал про включение wal+backup на слейве), а потом поменять их с мастером.
Аноним 12/04/18 Чтв 12:31:33  1172179
>>1172042
спасибо
Аноним 12/04/18 Чтв 12:43:18  1172184
>>1167018 (OP)
База данных postgresql 10.
Делаю селект в psql, получаю такую ошибку.

>[22021] ERROR: invalid byte sequence for encoding "UTF8": 0xf0 0xe5 0xec 0xee

При выгрузке дампа и попытке его импортировать та же самая ошибка.

Посему несколько вопросов:
1) Как non-utf8 текст вообще попал в базу? Postgres при вставке не проверяет кодировку или не конвертирует в server_encoding?
2) Как это можно исправить на текущей бд?
3) Как это можно воспроизвести? Как вставить non-utf8 байты в базу? Я нихуя не понимаю. Это нужно будет чтобы протестировать исправление.
4) Как сделать так, чтобы это больше не повторилось?
Аноним 12/04/18 Чтв 13:00:10  1172194
>>1172178
Спасибо. А без внешнего сервера - никак? (сервер не выделят, потому что их просто нет, будет мифическая "циска", о которой никакой информации пока нет). Слейв сам может мониторить доступность мастера? Я вижу это так: тот же батник с автоматическим пингованием сервера (или проверкой доступности бд на нем, но это сложнее). Если пинг не проходит некоторое время, то все - становимся мастером. На клиенте (или на "циске", если такое возможно) можно тупо обращаться ко второму серверу, если первый не отвечает. Конечно, он может быть пока еще слейвом и не принять запрос, но это лучшее, что я пока придумал. В общем, мозгов у меня решительно не хватает, походу так и передам начальству.
Аноним 12/04/18 Чтв 13:16:01  1172205
>>1172194
Ну, клиенту надо как-то проверять доступность. У тебя нет брокера, поэтому есть системы мониторинга, которым можно прописывать сценарий.
Вот клиент ебашит на бд, а потос как он узнает, что бд упала и перешла на слейв? Поэтому ставят либо брокера, либо систему мониторинга.

В оракл к примеру на клиенте есть tnsnames в который можно писать куда конектится, если мастер упал.
И то у тебя должна быть недоступность мастера, чтобы кто-то не нашкодил. Если есть такой механизм, то все гуд и тебе лишь надо ловить момент когда падает мастер.
Аноним 12/04/18 Чтв 13:47:35  1172230
>>1172205
Как клиент проверяет доступность: пишет запрос, если он не выполняется, пингует сервак (или что-то там еще), если тот не отвечает, пишет запрос на другой сервак (сервака два, айпишники захардкожены). Это я сам только что придумал, но, думаю, реализовать будет несложно.

Насчет недоступности мастера не понял. Механизма такого, скорее всего, нет, если это не описанный мой выше бред.

Огромное спасибо, что тратишь время на меня. Но, походу, проебу я все-таки эту работу. Не помещается все это у меня в голове.
Аноним 12/04/18 Чтв 15:01:58  1172273
>>1172230
Мастер не должен пинговаться, дибо он должен усиленно всем показывать что он не мастер.

Чувак, нахуй ты за это взялся? Ты там на должность администратлра бд устроился?
Аноним 12/04/18 Чтв 15:36:30  1172294
>>1172184
Помоги с етой хуйней, Анон
Аноним 12/04/18 Чтв 15:46:27  1172300
>>1172273
Инженер-программист официально ) Месяц назад пришел, ну и скинули на новичка то, что сами не знают, как делать. В любом случае, поговорил с начальством, если вообще не будет получаться, наймем какого-ндь крутого ДБА для настройки.

Вот, кстати, на такую интересную штуку наткнулся:
https://habrahabr.ru/post/308950/
Там даже исходник есть. Надеюсь, завтра это решит все мои проблемы )
Аноним 12/04/18 Чтв 15:56:27  1172308
>>1172184
Set client_encoding to unicode
По умолчанию стоит.
Просто не копируй селекты из интернета в консоль. Он просит у тебя юник, а ты, блядь, кидаешь ему поганный 1251
Аноним 12/04/18 Чтв 16:07:10  1172316
>>1172308
Если и не так, то никакая база не декодирует в свою кодировку.
Смотря какой язык юзаешь, чтобы не мучаться в винде есть ATL конвертеры.
У тебя просто какой-то чувау может вводит данные в вин1251
В базе есть функции ascii, decode , encode. Последние для битовых данных.

initdb -E encodename

Автоматическая конверсация из пскл \encode win1251

Если есть прослойка то настрой libpq в приложении
Аноним 12/04/18 Чтв 16:27:24  1172335
>>1172042
а можешь привести пример?
есть таблица - id, имя, фамилия, отчество, год рождения и т.д. и она привязана через id к таблице техника сотрудника, где поля такие:
id техники, тип, модель, марка, серийный номер, номер ЦСО. Как индексация здесь может, что либо оптимизировать?
Аноним 12/04/18 Чтв 18:05:37  1172419
>>1172335
Сотрудников у тебя, положим, будет десять тысяч человек.
У каждого будет по десятку девайсов - итого в таблице девайсов 100 тыс. записей.

Допустим, у тебя есть условный сотрудник Сычев. Ты хочешь найти для него всю технику.
Без индекса тебе придется перебрать все 100 тыс. записей в поисках техники именно Сычева.
100 тыс. ради 10 записей. А если базу постоянно теребят даже несколько десятков человек, то все будет очень медленно. А если нужно получить список сотрудников с девайсами, то будет еще медленнее. А если таблица не помещается в память, то добавятся издержки дисковых операций.
Теперь создаем индекс для техники по ид сотрудника.
В общем случае строки в таблицах хранятся неупорядоченно, а индекс отсортирован (обновление происходит при каждом изменении автоматически).
На отсортированном наборе данных поиск происходит очень быстро.
Например, чтобы найти двоичным поиском на отсортированном наборе из 1000 записей одну, нужно просмотреть не более 10 значений, а на 100000 - не более 17.

Т.е. вместо просмотра n записей ты просматриваешь log (n) записей.

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

Итак, мы нашли кусок в индексе, который отвечает за технику Сычева. Теперь СУБД перебирает найденные значения индекса и вытаскивает оттуда указатели на физическое расположение строк в таблице девайсов. Т.е. не нужно перебирать 100 тыс. записей, а берем конкретный блок данных и берем конкретные записи в нем. Доступ к данным проходит на низком уровне, очень быстро.

Так же индекс помогает при удалении Сычева из таблицы сотрудников - нам ведь надо удалить или пометить null все его девайсы и других операциях с изменениями данных.

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








Аноним 12/04/18 Чтв 18:06:52  1172423
>>1172335
Мех. Немножко не так. Будет у тебя 100 сотрудников - будет 100 таблиц?
В таблицу техники добавляется айди того, кому она принадлежит.
Это проще апдейтить.

Чтобы запилить индекс тебе нужны уникальные айди, которые часто вызываются, но не равны 70% таблицы.

Давай такой пример.
У тебя есть таблица с документами и есть битовый признак обработки документа(1). Допустим у тебя 70% обработано и 30% нет.
Как ускорить таблицу? Инвертируешь признак обработки, то есть 0 - обработан, а индекс делаешь по оставшимся 30% .

То что ты описываешь скорее всего предпологает индекс-таблицу. Т.е. ты сортируешь данные по ключам. В твоем случае лучше делать ключи связанные с айди техники. Это лучший вариант, да и по айди техники тоже.
Но то что ты описал похоже на вложенную таблицу. То ест столбцы , а потом связанный по айди список техники, аля ообд.
Либо просто сделать первичный ключ по айди сотрудника, во второй бд первичныц по айди техникт, вторичный айди сотрудника
Аноним 12/04/18 Чтв 22:00:45  1172584
>>1172419
извините, что туплю. Белая собака в моем примере - это как определенный вид техники, да? То есть будет разумно создать индекс, например, для принтеров LaserJet p9313, чтобы узнать у кого такие принтеры?
Аноним 12/04/18 Чтв 22:15:20  1172593
>>1172308
>Просто не копируй селекты из интернета в консоль.
Ват.
>Он просит у тебя юник, а ты, блядь, кидаешь ему поганный 1251
Я нихуя не понел почему ты подумал, что я что-то откуда-то копирую. Просто делаю выборку на рабочей базе. Сама база на серваке под CentOS 7. Подключаюсь по ssh.
>>1172316

Алсо почему вы думаете, что это именно win1251?
Аноним 12/04/18 Чтв 23:49:23  1172652
>>1172593
Типичная ситуация.
Всегда найдеься хитрый сотрудник решивший залить clob например
Аноним 13/04/18 Птн 03:15:29  1172750
>>1172584
Да, это как определенный вид техники.
Если говорить о второй части вопроса, то индекс создается для колонки, а не для ее конкретных значений. Т.е. если у нас в колонке есть принтеры, сканеры, ксероксы и ноутбуки, то индекс будет содержать все эти типы. Можно, конечно, сделать функциональный индекс вида case when device_name = 'LaserJet1488' then 1 else 0 end но это довольно редкий прием - на каждый вид девайса индексов не напасешься.

Может помочь индекс по виду (принтер, ноутбук, сканер), по фирме-производителю, а можно сделать индекс по модели девайса (точнее, по upper(device_name)) или составной по нескольким полям, поставив более селективные поля вперед. Тут уже нужно смотреть по месту, как и что у тебя хранится и какие запросы наиболее характерны.

Допустим, сделали индекс по upper(device_name), тогда в запрос будем передавать введенную строку поиска в верхнем регистре и получаем набор записей для владельцев девайсов. А чтобы быстро расшифровать ид владельцев в их фио, поможет индекс по ид сотрудников - он будет уникальным и поэтому очень быстрый.
Аноним 13/04/18 Птн 09:37:43  1172804
>>1171262
спасибо, друже, просветил
Аноним 13/04/18 Птн 15:07:52  1172906
112.png (19Кб, 584x175)
Анонче, помоги составить запрос.
Есть таблицы на пикриле. Допустим в таблице users такие записи:
1 | Peter
2 | Fedor
3 | Vasily
В таблице stuff такие записи:
1 | 1 | shirt
2 | 1 | hat
3 | 1 | shoes
4 | 2 | gloves
5 | 2 | coat
6 | 3 | dress

Нужно составить запрос который вернул бы такой результат:
1 | Peter | shirt, hat, shoes
2 | Fedor | gloves, coat
3 | Valisy | dress

Я так понимаю тут нужно использовать агрегатную функцию и конкатенация, но как именно не могу сообразить.
Аноним 13/04/18 Птн 15:23:45  1172913
>>1172906
Разобрался, GROUP_CONCAT() нужна.
Аноним 13/04/18 Птн 21:28:14  1173161
https://2ch.hk/pr/res/1167018.html
Аноним 13/04/18 Птн 21:29:14  1173163
Добрый вечер.
Кидайте задачи, батя будет под пивас решать.
Пишу на оракле.
Аноним 13/04/18 Птн 21:48:48  1173183
>>1173163
- построчное резервирование
- хранимая поцiдура с проверкой значений
- журнал «кто что и когда делал с данными в таблице»
Аноним 14/04/18 Суб 00:58:19  1173335
>>1172906
Тут в каждой субд будет разная функция для этого.
Аноним 14/04/18 Суб 03:22:29  1173376
14287437345130.jpg (45Кб, 381x604)
>>1173183
Я не батя, но:
>построчное резервирование
Нахуя, в чем задача? Нихуя не понятно. Скорее всего ты имеешь ввиду триггер.
>хранимая поцiдура с проверкой значений
Тоже непонятно в чем подводный камень и зачем.
>журнал «кто что и когда делал с данными в таблице»
Через триггер. На практике, если такое нужно сделать, то заказчик наглухо ебанутый. Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом. В остальных случаях это бессмысленно. Если тебе нужен аудит юзеров с правами на DML, то ты лох, пидор и нахуй из профессии.
Аноним 14/04/18 Суб 09:49:50  1173428
>>1173376
Батя одобряет.
Аноним 14/04/18 Суб 09:56:36  1173430
>>1173376
>На практике, если такое нужно сделать, то заказчик наглухо ебанутый.
Что плохого в том, чтобы знать историю изменений записи?

> Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом. В остальных случаях это бессмысленно.

Поясни идею с полями, причем тут фронт-енд и тезис о бессмысленности, почему так?

>Если тебе нужен аудит юзеров с правами на DML

Что ты тут подразумеваешь?
Аноним 14/04/18 Суб 12:28:26  1173485
>>1173376
Эй еба-ораклист, ты бд то свою знаешь?
1) локи же есть. Ты просто избалован, так как у оракла это в ядре.
2) через триггер всегда делается
3) аудит средствами оракла, тебе про такое никогда не говорили?
Аноним 14/04/18 Суб 13:18:42  1173501
>>1173485
Я не он, можешь объяснить, какое отношение имеет триггер к проверке параметров хранимой процедуры?
Аноним 14/04/18 Суб 13:24:47  1173503
Polimery.jpg (18Кб, 446x280)
>>1173376
То, что вы на заводилова, дрочите —
ПИШИТЕ БЛЯДЬ, ЗУБАРЮ!!!
И запрашивайте, данные.

>Скорее всего ты имеешь ввиду триггер.
Вот и пиши триггер.

>Тоже непонятно в чем подводный камень и зачем.
Игорь, если я ещё раз такую хуйню, услышу — я запишу все расходы на комплексе — на вашу группу. Вы у меня штаны последние продадите.

>Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом.
Чо блядь у вас, дерьмократия?! Забудьте нахуй о дерьмократии. Пока у вас каждый кладовщик знает SQL, тут везде тоталитаризм, будет!

>>1173428
Нет потенции — сваливай нахуй, с рынка!!!

>>1173501
ПРОСРАЛИ ВСЕ ПОЛИМЕРЫ!!!
ВЫ ПРОСРАЛИ БЛЯДЬ!!!1111ы
Аноним 14/04/18 Суб 14:17:03  1173530
Триггеры нахуй не нужны. Хранимки и пакеты наше все.
Аноним 14/04/18 Суб 14:20:09  1173533
>>1173430
>Что плохого в том, чтобы знать историю изменений записи?
>Поясни идею с полями, причем тут фронт-енд и тезис о бессмысленности, почему так?
Само по себе ничего, ее и хранить в ней можно, но звучит как: "Есть важный ручной справочник и мне нужно знать какая именно макака его заполняющая накосячит, чтоб лишить ее премии". Заполнение пользователем справочника через dml говорит о незрелости процесса. В самой таблице должны быть заполняемые автоматически, скрытые для пользователя поля(кто добавил запись, время добавления итд.), за этим и нужен фронт, АРЕХ, например.
>>1173485
>аудит средствами оракла, тебе про такое никогда не говорили?
Говорили, но >Если тебе нужен аудит юзеров с правами на DML, то ты лох, пидор и нахуй из профессии.
К тому же эта штука медленная и базу нагружает.
>локи же есть. Ты просто избалован, так как у оракла это в ядре.
Я вообще задачи не понял. Зачем нужно построчное резервирование(репликация что ли?) и причем тут локи?
Аноним 14/04/18 Суб 14:36:06  1173538
>>1173533
Apex это фронт? Что же тогда бэк?
Штатное редактирование справочников dml? Это где такое есть? Все только через бизнес логику, и неважно где она- в хранимках или на сервере приложений.
Да и коннект пользователей в бд под уникальными логинами имхо анахронизм.
Аноним 14/04/18 Суб 14:41:09  1173540
>>1173533
>В самой таблице должны быть заполняемые автоматически, скрытые для пользователя поля
Не в той же таблице. А в отдельной схеме (schema), с другими правами доступа, создаётся точная копия каждой таблицы.
Аноним 14/04/18 Суб 14:42:10  1173543
>>1173538
>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм.
Андрей Орлов, «Записки автоматизатора».
Читать до окончательного просветления.
Аноним 14/04/18 Суб 15:57:22  1173607
>>1173540
Один из рабочих вариантов.
Серьезный минус - структуру таблиц поддерживать в двух местах.

Аноним 14/04/18 Суб 16:43:54  1173642
>>1173543
Книга хорошая, читал, хотя и не самую последнюю версию.
Если что я говорю про то, что коннект в бд происходит под одним логином, но имя пользователя (например, доменная УЗ) при этом передается и обрабатывается.
Аноним 14/04/18 Суб 17:25:19  1173671
>>1173533
>>построчное резревирование
Том Кайт, штудируй.
>>аудит DML
Фейербах, Прибыл. Есть безопасность на уровне строк.
Плюс кто тебе не позволяет анализировать undo/redo? Аудит можно хранить не на этой же бд, обычно так и делают.
Если есть проблема что какое-то говно срет в систему организуешь сбор доказательств включая выборочно аудит скриптов. Если конечно этот ебушка не срет анонимными блоками.
То что ты не можешь оптимизировать аудит, это пиздец твои проблемы.
Ты можешь сохранять все инсерты/апдейты из системных схем, и переносить их на спец.серверы или во внешний файл, а потом анализировать.
Аноним 15/04/18 Вск 21:12:01  1174461
>>1173671
>построчное резревирование
>Том Кайт, штудируй.
Ты объясни что это или напиши как называется на английском.
>Фейербах, Прибыл. Есть безопасность на уровне строк.
Хуербах, блять! Если ты не можешь выстроить ролевую модель и процессы так, чтоб тебе не понадобился аудит, то иди нахуй. Придумай хотя бы один кейс где это действительно нужно.
>>1173540
Зачем?
>>1173538
Есть такая штука как контекст.
>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм.
Хуясе, поясни.
Аноним 16/04/18 Пнд 01:21:35  1174665
Почему когда я запускаю MySQL из командной строки: "..MySQL Server\bin\mysql пароль" он вываливается с ошибкой, а MySQL Command line Client работает нормально с тем же паролем?

>>1172906
Что это за прикольная картинка? Мне сказали учить MySQL и там кроме командной строки нихуя нет.
Аноним 16/04/18 Пнд 01:26:14  1174667
>>1173671
аноны, есть книга где примеры наsql server 2000, у меня спермерка. что можно ставить, чтобы осваивать sql?
Аноним 16/04/18 Пнд 01:27:03  1174668
>>1174461
>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм.
>Хуясе, поясни.


Провокационное высказывание получилось, выше писал:
>>1173642

Речь идет о конечных пользователях, например Светлана Ивановна из бухгалтерии или Аня из кадров. Удобно, если для всех задач они используют единую УЗ. Особенно это удобно если приходится работать с несколькими разнородными БД.

Аноним 16/04/18 Пнд 06:34:57  1174716
DaAxR11UMAAGnVM.jpg (105Кб, 1080x1080)
27 лет, аналитик стагнирующий на уровне экселя. Не поздно ли? Расскажи мне анончик свою историю успеха
Аноним 16/04/18 Пнд 07:32:16  1174725
>>1174716

Не поздно. 27 лет - пустяки.
Аноним 16/04/18 Пнд 08:44:54  1174759
>1174725
Спасибо тебе, на добром слове анончик
Аноним 16/04/18 Пнд 11:20:07  1174814
изображение.png (106Кб, 225x225)
Сап, мейлач.
какой должен быть минимальный набор для освоения SQL?
имею спермерку или Linux.
Ставить Microsoft, Postgre, MySQL?
Аноним 16/04/18 Пнд 11:25:27  1174817
>>1174461
Блед. Я тебе говорю, у тебя построчное резервирование уже в бд есть. Допустим у тебя постят две пидорашки в одну таблицу, и у тебя ебучий айди генерится сам без задвоений. Кайт приводит, что этот пиздец не в каждой бд был и есть, и он охуел, когда узнал что в оракле это есть, а он сам это пилил.

По вторлму пункту. Это нужно, когда у тебя система может быть скомпрометирована, или какой-то мудень решил пошатать целостность. Буквально если ты работаешь в банках, то там в 90% случаях есть бд, которая копит аудит по абс, чтобы ты оптимизировал затраты и смотрел, чтобы пидорашко-программист правильно инсертил или апдейтил справочники.
То на что я тебя сослал это RLS. Допустим у тебя есть база клиентов общая, и каждое структурное отделение должно видеть только своих клиентов. Что сделать неуч? Создаст пол каждое подразделение вьюху, а ораклист ебанет RLS. Это простейшие политики безопасности. Позволяет так же следит за аудитом избранных юзеров, а не всех. Просто добавив им еще одну политику. Чтобы не быть голословным пакет dbms_rls.
Аноним 16/04/18 Пнд 17:34:32  1174992
>>1174814
бамп
Аноним 16/04/18 Пнд 18:02:54  1175011
>>1174814
Ищи платные гайды в свободном доступе.
Аноним 16/04/18 Пнд 18:53:40  1175026
>>1171047
Как ты обобщил джойны и дистинкт? джойны объединяют таблицы. Дистинкт в результатах выборки отсекает повторяющиеся значения в пределах стоблца, в котором он указан.
Аноним 16/04/18 Пнд 21:52:35  1175122
>>1175026
мне плоха
Аноним 16/04/18 Пнд 22:41:13  1175145
1407730161001.jpg (137Кб, 900x900)
>>1174817
>Допустим у тебя постят две пидорашки в одну таблицу, и у тебя ебучий айди генерится сам без задвоений.
ПОСТРОЧНОЕ РЕЗЕРВИРОВАНИЕ, БЛЯТЬ! Это называется изоляция транзакций. И как минимум REPEATABLE READ есть в любой современной СУБД. Хотя иногда даже READ UNCOMMITTED включают ради производительности.
Б
Аноним 17/04/18 Втр 00:20:35  1175165
>>1174817
>Буквально если ты работаешь в банках, то там в 90% случаях есть бд, которая копит аудит по абс, чтобы ты оптимизировал затраты и смотрел, чтобы пидорашко-программист правильно инсертил или апдейтил справочники.
Такое у всяких диасовтовских абс на сайбейсе, у оракла ни разу не видел отдельной базы под аудит(и можно ли такое вообще сделать?). В абс макаки инсертят через фронт. У разработчика вообще максимум права на селект должны быть проде и препроде. Такой способ защиты может помочь только от дба.
>Что сделать неуч? Создаст пол каждое подразделение вьюху, а ораклист ебанет RLS.
Лучше вообще никого в базу не пускать и ебануть отчет в BI, чтоб тетя срака не джойнила таблицу саму с собой десять раз и не вешала базу.
Аноним 17/04/18 Втр 01:30:48  1175193
>>1174814
>225x225
Пиздец ты мудак конечно.
Аноним 17/04/18 Втр 13:58:51  1175329
Привет ананас. Есть 2(tab1, tab2) таблицы со столбцами (a, b) и (b, c) соответственно. Как шлепнуть запрос, чтобы вывести (a, c). sqlite
Аноним 18/04/18 Срд 03:02:22  1175839
Сап аноны
прошу прощения за оффтоп
а для рашки зп в полтора косаря уе - это норма или хуйня для итшника или для обычного рабочего?
Аноним 18/04/18 Срд 03:45:15  1175853
>>1175839
>норма или хуйня
>для итшника или для обычного рабочего
True
Аноним 18/04/18 Срд 17:13:33  1176065
>>1174665
Это http://dbdesigner.net/
Конкретно к MySQL он никакого отношения не имеет.
Аноним 18/04/18 Срд 19:10:32  1176166
Котаны, кто в курсе, почему sql-ex.ru лежит?
Аноним 19/04/18 Чтв 12:11:42  1176567
XYN.webm (8471Кб, 483x420, 00:03:34)
Питонисты здесь есть?
Можете прояснить >>1176524 ?
Аноним 19/04/18 Чтв 16:33:46  1176749
>>1174716
Пошел работать в 21 учась на пятом курсе.
В 24 имею достойную ЗП, нашел годное место, счастлив, продолжаю расти как специалист
Аноним 19/04/18 Чтв 16:45:05  1176756
>>1175839
У меня 2к$ ровно на руках, на жизнь хватает, но вообще планирую зарабатывать побольше в будущем.
>>1176749
Аноним 19/04/18 Чтв 18:02:31  1176804
>>1176567
Причем тут питон?
Что тебя смущает? Если у тебя разовая загрузка, и все работает за устраивающее тебя время, то все норм.
То что не каждую запись коммитишь - правильно.
И что у тебя за БД?
Например, в Орагле есть специальная утилита для загрузки данных, которая на низком уровне хуячит гораздо быстрее, чем DML. В твоей БД есть такое? Если да, до парси XML до csv например и его скармливай загрузчику.

Аноним 19/04/18 Чтв 21:00:02  1176902
>>1174667
Под виндовс 7 ставятся все sql серверы вплоть до 2014го.
Аноним 19/04/18 Чтв 21:02:48  1176906
>>1174668
В какой СУБ это реализовано? В MS SQL можно разве что разрешить группе пользователей ОС входить в SQL, и каждый из них может подключаться под логином винды как trust connection.
Аноним 19/04/18 Чтв 21:33:46  1176938
>>1176804
>Причем тут питон? Что тебя смущает?
Наверное проблема в том что я не до конца понимаю session'ы и вообще "архетектуру" SQLAlchemy.
>То что не каждую запись коммитишь - правильно.
Окай.
>И что у тебя за БД?
PostgreSQL, только пару дней назад не без труда впервые накатил на винду.
>В твоей БД есть такое?
Аноним 19/04/18 Чтв 21:41:28  1176941
image.png (633Кб, 1282x592)
Я создал генератор. Ебнул 1500 записей, я хочу вставить это в таблицу. У меня же все одинаково, так почему эта ебанутая SQL ругается? Что за криворукие ублюдки ее делали?
Аноним 19/04/18 Чтв 21:43:03  1176943
Московские Стро[...].webm (11516Кб, 631x420, 00:04:33)
Бля, случайно прожал энтер.

>>1176804
>Причем тут питон? Что тебя смущает?
Наверное проблема в том что я не до конца понимаю session'ы и вообще "архитектуру" SQLAlchemy.
>То что не каждую запись коммитишь - правильно.
Окай.
>И что у тебя за БД?
PostgreSQL, только пару дней назад не без труда впервые накатил на винду.
>В твоей БД есть такое?
Я не хочу пока лезть во всякие тулзы, мне бы базово разобраться с реляционными СУБД и SQLAlchemy. Хотя похоже SQLAlchemy не очень подходит для такого переноса базы, но я продолжу пердолиться.
Аноним 19/04/18 Чтв 22:20:02  1176954
>>1167018 (OP)
Аноны, такая задача:
мне нужно собирать показания с прибора, ~200 цифровых значений каждые несколько минут.
Я уже начал гуглить и сравнивать БД для хранения временных рядов, но наткнулся на один пост в инете и задумался:
"А так ли нужна мне БД для этой задачи? Могу ли я обойтись файловой системой?". Вот смотрите:
1) Изменять данные не требуется, только записывать и (надеюсь когда-нибудь) читать.
2) Как именно, какими кусками и в какой последовательности данные будут читать я хз, на данный момент сказать сложно.
3) Я могу раскидать файлы по папкам, разделив, например, по месяцам и дням, т.е поиск не станет большой проблемой.

Внимание вопрос: какие подводные?

С многопоточностью проблем вроде быть не должно.
Если идея с ФС звучит норм, то какой формат данных подойдёт для моей задачи? csv + gzip (bzip2?), hdf5?
Ещё, возможно не по теме, но хочется хранить данные минимум в 2 местах, какую распределённую ФС можно выбрать под эту задачу? Какие вообще используются? Гуглёж показал что существует несколько вариков, да и я сталкивался поверхностно с HDFS, но не хотелось бы лезть в хадуп инфрастракчер.
Аноним 19/04/18 Чтв 23:06:05  1176976
Куклачёрт.webm (7123Кб, 316x420, 00:03:21)
Кстати, что значит/как расшифровывает "ctl" в названии бинарника pg_ctl, который запускает сервер постгреса?

А то я никак не могу запомнить эти три буквы, блять.
Аноним 19/04/18 Чтв 23:29:27  1176986
>>1176954
Идея с ФС хуевая.
Аноним 19/04/18 Чтв 23:30:27  1176987
>>1176954
А, ФС. Btrfs с софтверным рейдом.
Аноним 20/04/18 Птн 00:20:39  1177001
Продублирую вопрос в реляционном треде.

Как версионировать структуры?
Объекты понятно. Хез_мэни вержнс и создаем копию.
А что делать со структурами, когда, например, есть конкурс, который состоит из этапов, которые состоят из испытаний. У всего есть свои свойства, последовательность и т.п. Короче структура. И вот она со временем эволюционирует, меняется состав, порядок и сами сущности. При этом есть прошлое, в котором проходили соревнования по старым версиям и есть уже запланированное настоящее, которое хочется при выпуске новой версии тоже проапдейтить.
Вот как это блять изящно версионировать? Я понимаю, что ответ достаточно очевидный - копировать и поддерживать целостность. Но может существуют какие-то практики и я просто не знаю.
Аноним 20/04/18 Птн 01:29:55  1177011
>>1176987
Спасибо, Анон, буду копать глубже эту тему. А есть опыт работы с этой связкой, или это теоретическая рекомендация? Никогда просто о таком не слыхивал ранее! (тем ценнее рекомендация)

>>1176986
Можешь развернуть свою мысль? У меня была похожая как только сея идея посетила мою голову, но потом она перестала казаться мне такой уж тупой, ведь из всех ништяков настоящих БД мне нужна по сути только репликация.
Аноним 20/04/18 Птн 02:42:28  1177019
>>1176941
>Что за криворукие ублюдки ее делали?
Вот этот ублюдок накосячил :
>>1176941

На самом деле тебе нужно задать явный формат даты для загрузки в твоем скрипте, а не думать, что СУБД сама догадается.
Это из разряда good practice. СУБД может разные настройки, а скрипт должен работать всегда.
Поэтому распиши преобразование из строки в дату с явным форматом.
Аноним 20/04/18 Птн 15:51:38  1177240
>>1177019
Я генерирую данные в другой ИДЕ и просто вставляю. Ну ок, но скорее всего погуглю как правильно формат делать, и просто попытаюсь в кавычки вставить
Аноним 20/04/18 Птн 18:34:19  1177344
>>1175329
Ты совсем дурак, бля? Ты не мог даже чуть-чуть теорию почитать? Будешь с каждым вопросом сюда приходить? Иди на хуй пидорас
Аноним 20/04/18 Птн 20:22:26  1177389
y49eecc41.jpg (91Кб, 460x666)
Объясните ньюфагу, отличается ли чем-то запуск Постреса под виндой как net start postgresql-x64-10 от pg_ctl start?
pg_ctl службу запускает или нет?
Аноним 20/04/18 Птн 23:09:37  1177482
>>1177389
Так зайди в список служб и проследи, хули ты как этот
Аноним 21/04/18 Суб 00:34:15  1177532
>>1176954
Все зависит от того для чего ты хранишь данные и какие задачи будешь решать. По твоему описанию может подойти все что угодно.
Аноним 21/04/18 Суб 01:05:55  1177551
>>1177532
>все что угодно
а чо там выбирать? NoSQL вместо выбора ФС и key+value вместо выбора формата данных, ведь для снятия статистики творческого мигания светодиода на ардуинке постгрес в его случае нинужен
Аноним 21/04/18 Суб 04:50:56  1177593
1346429847210.jpg (6Кб, 205x200)
>>117755
Ты Ванга? откуда ты знаешь что нужно в его случае?
>~200 цифровых значений каждые несколько минут
Ардуина будет генерировать ~овер 6*10^8 значений в год. Если нужен какой-нибудь Ad hoc-анализ "что за хуйня произошла позвачера", то лучше всего запилить выгрузку csv-лога с ротацией.
Если нужен анализ с машинлернигом и всей хуйней за 100 лет, то Hadoop. Если за год, то Python + csv-лог в фс.
Если нужен отчет в котором будет динамика скорости мигания светодиода в разбивке по датам, то RDBMS-name.
Если на основе основе данных ардуины нужна какая-нибудь операционная хуйня с огромным количеством чтений, то key-value(самый невероятный вариант).
Аноним 21/04/18 Суб 04:51:31  1177594
>>1177551
>>1177593
Аноним 22/04/18 Вск 04:29:49  1178124
>>1177593
>Python + csv-лог в фс
Perl+BerkeleyDB с теми же самыми key/value
Аноним 23/04/18 Пнд 13:22:07  1178222
>>1177011
> А есть опыт работы с этой связкой, или это теоретическая рекомендация?
Есть опыт в разных ситуациях и конфигурациях.

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

Смотри:

> Как именно, какими кусками и в какой последовательности данные будут читать я хз, на данный момент сказать сложно

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

Мой тебе совет: бери хоть реляционку, хоть нереляционку, и делай свою хуйню, стараясь не выебываться.
Аноним 23/04/18 Пнд 15:39:28  1178256
1367168339862.jpg (106Кб, 387x370)
>>1178124
Haskell+Teradata+твоя мамаша
Аноним 23/04/18 Пнд 15:56:21  1178259
>>1178256
в JSON пердоль, чо как не пердоля?
Аноним 24/04/18 Втр 12:35:38  1178723
Вопрос по постгресу. Уменя есть колонка в таблице с варчар данными, которые есть обычный json. Типа:
{"Lat":"123","Lon":"231"}
Суть в том, что мне нужно сделать из неё jsonb, но так, чтобы значения были нумерик, а не текст. Обычный alter, который set type jsonb using col::jsonb переводит в обычный текст (значения в кавычках), а мне нужно от этих кавычек избавиться. Как быть?
Аноним 24/04/18 Втр 13:02:18  1178743
>>1167018 (OP)
>сиквел
Сиквел (англ. «sequel» [siːkwəl], от лат. «sequella» — «продолжение», «приложение») — книга, фильм или любое другое творческое повествование, по сюжету являющееся продолжением какого-либо произведения.

Ты ваще о чём?
Аноним 25/04/18 Срд 16:26:09  1179449
Поясните зачем вообще нужна эта ваша релятивность/реляционность? Вот пришел я такой на первую работу, там был мускуль. Ну я смотрю там все таблицы разбросаны ПРОСТА ТАК, БЕЗ СВЯЗЕЙ, ну я и давай их связывать как дебил. Ну связал и что дальше? Не нельзя удалить юзера какого-нибудь, если не удалил его высеры на форуме например - ок, ну или наоборот можно все высеры разом удалить - удалив юзера? Кайф, ну да как бы, но на деле больше гемора с этим, потому что связи в базе не всегда древовидные, иногда блядь все вообще в цикл закручено и надо через боль и ад что-то менять. В общем как это нанесло мне в юности травму, так я и забил хуй на это всё. Работается нормально в вебе без этого всего в небольших проектах, а связи они главное в голове и в коде. Так собственно мб я что-то упускаю или не понимаю?
Аноним 25/04/18 Срд 16:56:35  1179468
kote-negodue.jpg (46Кб, 604x402)
>>1179449
Аноним 25/04/18 Срд 17:06:28  1179473
>>1179468
Ну главное то, что ты дартаньян, да.
Аноним 25/04/18 Срд 17:43:36  1179496
>>1179449
> ПРОСТА ТАК, БЕЗ СВЯЗЕЙ
Главный вопрос тут такой: зачем вообще брали РСУБД? Господи, сколько я подобных быдлобаз переделал — не сосчитать.

> нельзя удалить юзера какого-нибудь, если не удалил его высеры на форуме например
ON DELETE CASCADE. СУБД следит за целостностью данных, а разработчик при создании таблицы не указал политики удаления данных.

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

> мб я что-то упускаю или не понимаю?
Упускаешь и не понимаешь. Смысла вот только пояснять нет, ибо ты уже выразил скепсис, не разобравшись в теме абсолютно. Либо ты понимаешь, что делаешь, либо нет.

И никто тут особо не против нереляционщины, бородатых адептов Кодда в треде нет. Просто такие ребята и в Монге такую хуету городят, что глаза на лоб лезут.
Аноним 25/04/18 Срд 21:20:52  1179662
Господа, посоветуйте что можно почитать по делфи что бы быстро привязать к нему базу данных из 12 таблиц, но так что бы было только одно окно интерфейса. Кнопочную форму я сделать как додумался, а вот сделать все на одной форме в одном окне что бы менять можно таблицу было и запросы туда поставить не могу.
Аноним 25/04/18 Срд 21:53:04  1179674
>>1179662
Попробуй найти примеры открытия одной бд, потом остальные так же открываешь и аппендишь, что-ли.
Аноним 26/04/18 Чтв 04:12:16  1179827
>>1179449
>в вебе
>в небольших проектах

Тебе не нужно искать ответы на свои вопросы, потому что ты веб-макака — пародия на разработчика. Оставь реляционную алгебру специалистам совершенно другого уровня квалификации и продолжай пилить говносайты за мелкий прайс.
Аноним 26/04/18 Чтв 09:16:56  1179861
>>1179674
Вот тут то и проблема, не могу найти годный пример для этого. Да и я не особо это все понимаю, мне бы вот литературы какой или туторчиков на ютубе что бы с нуля все делать.
Аноним 26/04/18 Чтв 10:12:25  1179874
>>1179861
А почему именно делфи? Чем богоизбранный быдлер на плюсах не угодил?
Аноним 26/04/18 Чтв 10:19:37  1179876
>>1168224
Если студент может быть в нескольких группах.
Иначе лучше вязать группу прям в студента.
Аноним 26/04/18 Чтв 10:58:53  1179891
>>1179876
Восстановление, переводы.
Аноним 26/04/18 Чтв 11:15:12  1179899
>>1179861
Гугли ADO компоненты в Delphi (не ADO.NET, это другое). Сейчас уже не помню подробности, но все необходимое имеется. Можно, например, сделать комбо-бокс с выбором таблицы и отображением результатов в гриде. Можно вывести в грид результаты запроса или хранимой процедуры. И не нужно ничего дополнительно устанавливать (как в BDE), все уже встроено в винду.
Аноним 26/04/18 Чтв 14:21:19  1180031
screen.png (10Кб, 527x130)
Ньюфаг просит помощи. Есть одна таблица sql server и с ней что-то не то. После того, как я создал для неё проект Entity Framework и инсертнул туда строку(нет, хуйни не творил, просто скопировал код из учебника), проебалась индексация по первичным ключам. Теперь это выглядит вот так и не хочет фикситься удалением строк. Что я сделал не так и как это говно пофиксить?
Аноним 29/04/18 Вск 14:08:50  1181521
>>1179449
Во всяких dwh вообще нет связей. Такие базы очень больше, со связями кучу задач просто не решить. Связи - это инструмент, использовать его или нет решать тебе.
Аноним 30/04/18 Пнд 20:12:39  1182203
14860445987750.jpg (144Кб, 873x948)
>>1167018 (OP)
Ньюфаг с платиной и ms-sql на связи.
Как вы работаете с дохуя количеством данных в интерфейсе?
Вот например есть абстрактное овердохуя количество записей (с байтмасивами) и если я попытаюсь сделать просто
>select * from zhopa
ляжет прога.
Так вот, следовательно, максимум пока что я придумал - поставить юзверю 2 поля - с какого поля и до какого поля вывести записи с таблицы, а там он уже сам разбереться.
Как вообще это на практике выглядит и как делают местные олдфаги?
Есть какой-то сайт с платиновых процедур?
Нужна процедура которая выдает таблицу с н-ного начала и до н-ного конца.
Есть ли в таблице конкретно № записи, не поле-айдишник, а именно № записи (чтобы циклом в процедуре выше пройти)?
Или я слишком заморочился?
Аноним 30/04/18 Пнд 21:32:39  1182282
>>1182203
Ты вообще хуево структурировал базу, переделывай. Столбцы в таблицу добавлять — не такое же рутинное мероприятие, как добавление строк.
Аноним 30/04/18 Пнд 21:58:54  1182303
>>1182282
Нихуя не понял, причем тут структура базы, я ее вообще не упоминал и не за это спрашивал.
Аноним 30/04/18 Пнд 23:09:27  1182341
>>1182303
у тебя говно намешано на уровне бд, раз в бд столько столбцов, которые не нужны конечному пользователю.

Обычно конечный не должен видеть лишнего, либо делай вьюшку, либо еби конём свою структуру.
Аноним 30/04/18 Пнд 23:10:35  1182343
А теперь вопросы к ораклистам:

Как вам доки к 18?

Есть у кого книга про advanced tuning от Бурлесона?
И вообще есть ли аналоги данной книги?
Аноним 30/04/18 Пнд 23:18:05  1182346
>>1182282
> я ее вообще не упоминал
Это не значит, что я не имел возможности понять, какой пиздец у тебя там творится.

> не за это спрашивал
Тебе нужно решить проблему, я тебе говорю, куда нужно смотреть. Костылями и изолентой можно сделать то, что ты хочешь, но это один из самых тупорылых вариантов. Переделывай, тебе нужно твои дохуя столбцов вынести в отдельную таблицу. Совета конкретнее дать при таких данных нельзя.
Аноним 30/04/18 Пнд 23:34:51  1182352
>>1182346
>>1182341
Сём, блять, нормально же блять вроде вопросы сформулировал.
Какие нахуй блять столбцы ты себе нафантазировал, какая блять впизду вьюшка?
Я не за выборку спрашиваю, я спрашиваю за отображение записей в конечном графическом интерфейсе для околоадмина/заказчика и как лучше/правильнее с этим совладать, кроме как выгрузить сразу всю базу, а то на что ты отвечаешь это уже совсем другой вопрос.
Или это такой местный тролинг тут?
Аноним 30/04/18 Пнд 23:41:26  1182355
>>1182352
Ты не разбираешься в самых азах. Всю базу выгрузить для интерфейса — вообще лхуительные истории.
Аноним 30/04/18 Пнд 23:46:58  1182356

САП ДВАЧ, Я НЬЮФАГ, КАК НАПИСАТЬ ХЕЛОУ ВОРЛД
@
-СХОДИ В КАЧАЛКУ И ПСИХОЛОГУ, ПОБРЕЙСЯ, ПОЧИСТИ ЗУБЫ И КЛЕЙ ТЯНОЧЕК НА УЛИЦЕ
@
НО Я ВЕДЬ Я ЭТО НЕ УПОМИНАЛ
@
-ЭТО НЕ ЗНАЧИТ ЧТО Я НЕ ИМЕЛ ВОЗМОЖНОСТИ ПОНЯТЬ ЧТО У ТЕБЯ ПРОБЛЕМЫ С ТЯНКАМИ
@
НЕ ЗА ЭТО Я СПРАШИВАЛ
@
-ТЕБЕ НУЖНО РЕШИТЬ ПРОБЛЕМУ, Я ТЕБЕ ГОВОРЮ КУДА СМОТРЕТЬ


Тащемта я вообще не ожидал что мне тут даже отпишут, лучше чем ничего.
Аноним 30/04/18 Пнд 23:51:42  1182358
>>1182356
Ты хуйню несешь и никакой конкретики не даешь.

САП ДВАЧ, Я НЬЮФАГ, НО У МЕНЯ ЕСТЬ ЕБАНУТЫЙ ВОПРОС И ЕБАНУТОЕ ПОНИМАНИЕ СУТИ ПРОБЛЕМЫ
@
НЕ ДЕЛАЙ ХУЙНЮ, СДЕЛАЙ НОРМАЛЬНО И ПРОБЛЕМЫ НИКАКОЙ НЕ БУДЕТ
@
ТЫ ХУЙНЮ НЕСЕШЬ, ЖДУ ДРУГИХ СОВЕТОВ
@
НЕ ДЕЛАЙ ХУЙНЮ, ПОДУМАЙ
@
ТУПЫЕ АНОНЫ ОПЯТЬ ПЫТАЮТСЯ МЕНЯ ЗАТРОЛЛЕТЬ


Скинешь схему БД — поясним конкретно.

> Вот например есть абстрактное овердохуя количество записей (с байтмасивами) и если я попытаюсь сделать просто
> select * from zhopa
Почитай описание селекта в документации. Там есть ключевые слова LIMIT и OFFSET. Никто никакую базу никуда не загружает, если не совсем долбоеб. Гугл на твой вопрос за секунду ответит.
Аноним 30/04/18 Пнд 23:51:47  1182359
>>1182355
Как и сколько записей по дефолту выгружаешь ты?
Аноним 30/04/18 Пнд 23:53:39  1182360
>>1182359
Одну. Ты не понимаешь, что делаешь. Пиздуй читать статьи для ньюфагов. Тебе абсолютно бесполезно отвечать на данном этапе.
Аноним 30/04/18 Пнд 23:54:16  1182361
>>1182358
>LIMIT и OFFSET
Вот это уже ближе, спасибо
Аноним 01/05/18 Втр 00:06:48  1182362
>>1182358
Так ладно, попытаюсь по другому пояснить:
Мне надо (все столбцы блжад) конкретную таблицу (из которых может выбрать пользователь) вывести для просмотра. Сейчас у меня затычкой в программе стоит
> select * from zhopa
но, так как записей в будущем может быть теоретически дохуя, я резоно подметил что мое конечное говноприложение может лагать при загрузке/просмотре.
И поэтому все что я пока изобрел либо загружать в мою прогу допустим по 1к записей из таблицы либо дать возможность пользователю выбрать по какому-то фильтру (например загрузить с 40 по 1200 запись).
И поэтому спрашиваю как выводят таблицу для просмотра местные гуру-аноны.
Аноним 01/05/18 Втр 00:14:39  1182366
>>1182362
Либо пагинация используется, либо запрашивается для листинга минимум данных, а при необходимости запрашивается уже и остальное. Никто всё в памяти не держит, это типичная ошибка мудаков, которым лень статьи для самого начального уровня почитать.

https://doc.qt.io/archives/qq/qq07-big-tables.html
Аноним 01/05/18 Втр 00:19:21  1182367
>>1182366
Вот так вот и сразу, спасибо
>Никто всё в памяти не держит
Отобразить же мне как-то нужно изначально
Аноним 01/05/18 Втр 00:23:20  1182369
>>1182367
> Отобразить же мне как-то нужно изначально
Это не требует того, чтобы все в памяти держать. Насколько я понимаю, у тебя там сишарпопараша, наверняка ASP.NET, поэтому кури пагинацию, как у всех остальных. Если все же под десктоп пилишь что-то, то просто таблица нужна, держущая в памяти только определенное «окно» (видимая часть плюс еще по N строк выше-ниже; только не ручками говнокодь, а приложи усилия и изучи гугл на эту тему, чтобы нормальную обертку написать).
Аноним 01/05/18 Втр 09:35:20  1182424
>>1182362
если ты хочешь заебаться, то можешь сделать подгрузку, как в крутых TOAD/Workbench.
грузишь первые 500, когда пользователь пролистал до 500, то подгружаешь ещё 500.
Но если твой заказчик такой мудак, что хочет за раз 10к записей без фильтров, то тебе пиздец.
Ицик Бен-Ган пост Someone someone 01/05/18 Втр 14:03:40  1182552
image.png (99Кб, 264x225)
Читаю статью Ицика, где он правит джойны и объясняет, как всё работает. Может кто объяснить тупому, что вообще происходит после Figure1? Вижу, что он сначала сравнивает иннер жойны, потом сравнивает результат с аутер жойнами и у него что-то там появляются две лишних строки, почему-то ему это не нравится и он чего-то правит. Что вообще происходит? Хуйцов соснул, из пистолета убился, не помогло.

http://www.itprotoday.com/microsoft-sql-server/logical-query-processing-clause-and-joins
Аноним 01/05/18 Втр 14:54:45  1182587
>>1182552
А, понял, у него там иннер жойн и аутер жойн выдавали один и то же результат, даже когда были non-matches, потому что он не там ON поставил.
Аноним 02/05/18 Срд 06:27:21  1182953
>>1182203
Пользователю дохуя записей в интерфейсе не нужно. Для того, чтобы получить вменяемое количество записей нужны фильтры.
Если же все-таки ты думаешь, что тебе нужно таскать из базули тысячи записей для отображения в интерфейсе (на самом деле нет), то посмотри что такое пейджинация.

>овердохуя количество записей
>с какого поля и до какого поля вывести записи с таблицы
Ты не путаешь поля со строками? Полагаю, что путаешь, потому что динамически выбирать поля для большого списка - крайне сомнительная и странная затея.

Как я понял тебе нужно вытаскивать данные большого объема. Поскольку ты сразу выбираешь сотни записей, то и байтмассивы твои не нужно вытаскивать, пока на то не будет явной необходимости. Т.е процедура для списка должна показать тебе только те поля, которые дают общее представление о записи, а уж потом, когда пользователь выберет конкретную запись - подгрузить объемные данные.
Если у тебя можно бегать по записям стрелками вверх и вниз, то есть смысл сделать загрузку дополнительных данных после того, как пользователь постоял на записи 0.2 - 0.5 секунд. Ну или явно по нажатию кнопки подгружать.

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

Аноним 02/05/18 Срд 15:16:03  1183150
Леса.png (438Кб, 570x585)
https://ru.wikipedia.org/wiki/Join_(SQL)#LEFT_OUTER_JOIN
>Оператор левого внешнего соединения LEFT OUTER JOIN соединяет две таблицы. Порядок таблиц для оператора важен, поскольку оператор не является симметричным.
>Порядок таблиц для оператора важен, поскольку оператор не является симметричным.
Серьёзно, блять?
Аноним 02/05/18 Срд 18:43:56  1183232
>>1183150
Абсолютно серьёзно. Левый внешний выдаст строки из левой таблицы, которым нет соответствия в правой.
Аноним 02/05/18 Срд 19:02:33  1183239
15135802519310.mp4 (8579Кб, 482x360, 00:03:11)
Решил, что пора научиться делать эти ваши БД сам учу Пистон уже 3 месяц, скачал MySQL, получил этот красивый черно-белый терминал. Как получить красивое GUI как на оп-пиках? >>1168478 Верно говорит, и надо эту штуку качать? Или есть ещё что-то более классное.

Так же вдруг оказалось, что я как еблан поставил MySQL 5.Х вместо последней восьмой версии. Скачал ее, а она предлагает обновить shell и connector, но не сервер. Это нормально? Сервер с 5 до 8 версий не менялся вообще что ли?
Аноним 02/05/18 Срд 19:13:49  1183246
>>1183239
https://github.com/dbcli/mycli
Аноним 03/05/18 Чтв 04:40:20  1183511
1372101043836.jpg (172Кб, 921x985)
>>1183232
Так, оказалось что я >>1183150 просто ёбнулся.
Вот это
>Порядок таблиц для оператора важен, поскольку оператор не является симметричным.
Я упорно читал как
>Порядок таблиц для оператора не важен, поскольку оператор является симметричным.
Аноним 03/05/18 Чтв 19:48:58  1183837
image.png (25Кб, 642x461)
>>1183239
консолька оказалась лучше всех gui
Окей, начал вкатываться. Почему я могу использовать alias balance в order clause, но не могу в where clause? Так и должно быть или я чего-то не понимаю?
Аноним 04/05/18 Птн 02:47:15  1184058
>>1183837
Так и должно быть.
order by в последнюю очередь выполняется, ему уже доступны алиасы.
Чтобы в where можно было использовать нужен селект из селекта:

select balance
from (select avail_balance as balance
from account whre status = 'ACTIVE' and avail_balance > 2500)
where balance > 300000
Аноним 04/05/18 Птн 12:45:20  1184149
Посоветуйте книги/курсы SQL. Когда учился в университете были у нас пары по этой хуйне. У меня что-то даже получалось. Щас хочу пойти работать в процессинговый центр в банк. Там одно из требований знание SQL.
Аноним 04/05/18 Птн 12:49:32  1184150
>>1184149
Алан Бьюли, Том Кайт... и практика, практика, практика.
И готовься к тому, что на собеседованиях там спрашивают хитрый джойн таблицы с ней же самой, да ещё и с группировкой :-(
Аноним 04/05/18 Птн 12:53:59  1184152
>>1184150
Хорошо. Спасибо
Аноним 04/05/18 Птн 14:56:01  1184183
>>1184058
Спасибо
Аноним 04/05/18 Птн 17:09:36  1184238
>>1184149
Книги хорошо читать как дополнение к практике.
Задачки по SQL можно решать на
sql-ex.ru
если совсем с нуля, то раздел Arcade->SQL на codefighting.
Аноним 05/05/18 Суб 22:24:31  1184817
image.png (125Кб, 1197x1157)
>>1184238
Что не так?
Аноним 05/05/18 Суб 22:40:47  1184828
Привет, допустим мне в одно поле нужно положить json, который потом вырастет до 1Мб и больше. Я могу это сделать в рамках sql (хотелось бы mariadb) или нужно переходить на noSQL?
Аноним 06/05/18 Вск 01:10:08  1184873
>>1184828
Тебе нужно запросы к этим JSON'ам обрабатывать или там они будут просто валяться?
Аноним 06/05/18 Вск 03:18:31  1184920
>>1184873
Да, будут запросы
Аноним 06/05/18 Вск 08:23:39  1184944
>>1184920
Для этого лучше постгрес взять, там полная поддержка JSON со всеми индексами без костылей. Ну или же документоориентированное что-то, конечно.
Аноним 06/05/18 Вск 08:57:51  1184949
Screenshot1.jpg (48Кб, 886x483)
>>1184817
У меня когда-то такое решение прошло.
Аноним 07/05/18 Пнд 00:00:19  1185468
сап, программач! помогите нубу - не могу сообразить, мне нужно вычесть последнее значение выборки из первого значения той же выборки? Как это правильно сделать? Мне в голову приходит лишь мысль сделать два запроса с limit 1, а потом уже считать, но наверняка есть более изящное решение(субд mysql)
Аноним 07/05/18 Пнд 00:03:00  1185469
>>1185468
Найдется решение в один запрос, конечно, но по эффективности у двух селектов оно будет сосать.
Аноним 07/05/18 Пнд 00:09:10  1185473
>>1185469
да там селекты с джоином ещё, ну ладно, буду пытаться, спасибо
Аноним 07/05/18 Пнд 00:13:59  1185475
>>1185473
Так оно и делается. Если есть возможность на стороне приложения кэшировать в какой-нибудь redis крайние значения, то это будет самый лучший вариант. Если нет, то делай вьюху. Еще лучше — материализованную, но для неё нужно будет с триггерами и процедурками поебаться, так как искаропки нет их, кажется. Будешь просто при необходимости обновлять значения в ней. Впрочем, с индексами первое и последнее значение все равно не дорого получать.

Аноним 07/05/18 Пнд 01:22:46  1185495
>>1184949
Охуеть, все дело оказалось в distinct. Интересно, что у них за проверочная база такая, у которой есть зачем-то одинаковые записи в Laptop таблице.
Спасибо за ответ.
Аноним 07/05/18 Пнд 19:13:05  1185770
ninaandalexander.png (429Кб, 603x593)
Базаны, есть вопрос:
Как правильно хранить вектора большой длины (несколько сотен минимум) в БД при условии, что по этим векторам нужно будет осуществлять поиск?
Аноним 07/05/18 Пнд 19:15:08  1185772
image.png (10Кб, 472x121)
Делаю лабораторную по базам данных
oracl
c#
мне нужно подключить базу данных к вижуал студио
когда я пытаюсь это сделать, вылезает ошибка
что делать? как исправить?
вообще говоря, нужно ли над базой данных производить еще какие-нибудь действия, кроме ее наполнения и написания всяких запросов и триггеров?
импортировать каким нибудь образом?
я полный профан очень нужен ваш совет
Аноним 07/05/18 Пнд 19:17:43  1185774
>>1185770
Уточни, что ты под векторами подразумеваешь.

>>1185772
У тебя 64-битное приложение пытается 32-битные либы загрузить. Это невозможно. Либо оракловский SDK нормальной битности ставь, либо сишарпохуйню свою собирай под 32 бита.
Аноним 07/05/18 Пнд 19:21:50  1185775
>>1185774
не собирается ток под 64 и 86
под 86 тоже самое
Аноним 07/05/18 Пнд 19:39:16  1185780
>>1185774
Вектор как упорядоченная последовательность элементов.
Аноним 07/05/18 Пнд 19:45:04  1185783
>>1185780
MySQL MariaDB, PostgreSQL, MsSQL?
Аноним 07/05/18 Пнд 19:49:15  1185786
>>1185783
SQLite наверное?, потому как будет несколько независимых друг от друга наборов таких векторов и к ним должен быть доступ из мобильного приложения без интернета.предполагается, что пользователь скачивает сразу весь набор и пользуется ими
Аноним 07/05/18 Пнд 19:59:23  1185792
>>1185786
http://www.sqlitetutorial.net/sqlite-order-by/
Аноним 07/05/18 Пнд 20:09:17  1185798
>>1185792
>http://www.sqlitetutorial.net/sqlite-order-by/
При чём тут order by?
Аноним 07/05/18 Пнд 20:11:36  1185800
>>1185798
Блядь, так и знал, что ты приебешься. Его рассматривают на примере упорядоченного списка.
Аноним 07/05/18 Пнд 20:28:58  1185810
>>1185800
Мне кажется мы друг друга не поняли.
Сущность, хранимая в базе, имеет следующий вид:
x,y,z, feature_vector(500)
В ходе работы с базой мне нужно будет выполнять запросы типа
select * from entities where x = x_value+- error, y = y_value+=error...
Так для всех трёх координат и для каждого элемента вектора.
У меня стоит несколько вопросов:
1. Хули делать с вектором? Делать 500+3 столбцов кажется странной затеей, как обычно такую проблему решают?
2. Подойдёт ли для этого SQLite в плане производительности? Есть ли альтернативы?
Аноним 07/05/18 Пнд 20:44:54  1185824
>>1185810
Понял. Тебе тогда лучше две таблицы сделать, наверное, и unique повесить на (x, y, z). У тебя тут классический one to many будет. Если в feature_vector не предусмотрена перестановка мест элементов, то можешь при селекте сортировать по PK, в противном случае придется еще одну колонку для порядка городить. В принципе, если тебе так удобно, ты можешь свой список сериализовать и обрабатывать его в приложении, чтобы с реляционками не ебаться, если тебе не интересно это. Будет всего одна таблица, не нужно будет с джойнами разбираться и все такое.

> Подойдёт ли для этого SQLite в плане производительности?
Еще не знает история случая, когда бы на Андроиде производительность в SQLite упиралась. Ты же не бэкенд для хайлоада делаешь, ну.
Аноним 07/05/18 Пнд 21:16:41  1185842
>>1185824
А что даст уникальность x, y, z?
А с сериализацией неплохая идея, я правда хуй знаю, хорошая ли идея постоянно строки разбивать и конвертировать. Надо будет потестить, может лучше окажется в bytearray в блоб засунуть.
Спасибо за помощь.
Аноним 07/05/18 Пнд 21:31:58  1185851
>>1185842
> А что даст уникальность x, y, z?
Отсутствие подводных камней с дублированием объектов плюс индексы.

> хорошая ли идея постоянно строки разбивать и конвертировать
Видно, что ты с реляционками почти не знаком и сделаешь хуйню. Так ты сделаешь меньше хуйни. Потом всегда будет возможность разобраться в технологии поглубже, но пока что ты будешь хуйней маяться вместо решения задачи. Добра.
Аноним 08/05/18 Втр 18:29:59  1186284
2c6482f0b69e8f8[...].jpg (38Кб, 512x512)
>То чувство, когда, работая веб-макакой в довольно мелком проекте, половину рабочего времени тратишь на индексы и дрочь на снижение total cost запроса с 1000 до 950
Аноним 08/05/18 Втр 18:33:11  1186288
>>1168766
Годная схема. Что за софт?
Аноним 09/05/18 Срд 05:39:45  1186627
Что-то не могу нагуглить. "FROM col_name c" - это просто сокращённая версия "FROM col_name AS c"?
Аноним 09/05/18 Срд 10:32:02  1186683
>>1186627
Да.
Аноним 09/05/18 Срд 16:56:51  1186959
Спрошу здесь:
Как лучше всего в базе данных реализовать учёт рабочего времени?
Аноним 09/05/18 Срд 22:54:37  1187261
Что из себя представляет работа ETL developer-ом????
Аноним 10/05/18 Чтв 00:27:11  1187344
>>1187261
Пилишь потоки, маппинги всякие в ETL-инструменте, консультируешь аналитиков, оптимизируешь скрипты. Плюс еще куча всяких связанных задач. Что конкретно тебя интересует?
Аноним 10/05/18 Чтв 02:22:40  1187399
>>1186959
На такой неконкретный вопрос ты не получишь нормального ответа.
Аноним 10/05/18 Чтв 07:10:22  1187443
>>1187399
Как конкретизировать мой вопрос?
Аноним 10/05/18 Чтв 07:23:34  1187446
>>1187443
Чье рабочее время ты собираешься учитывать? В каком контексте? Какие задачи должны быть решены?
Аноним 10/05/18 Чтв 07:30:35  1187448
>>1187446
>Чье рабочее время ты собираешься учитывать?
Просто регистрировать время ухода и прихода работников.

>Какие задачи должны быть решены?
Учёт рабочего времени: сколько часов в день, неделю месяц, год по отдельным сотрудникам и целым отделам, а так же опозданий и ранних уходов.
Аноним 10/05/18 Чтв 07:49:10  1187454
>>1187448
Ну ок.

Какие твои собственные соображения по теме? Что непонятно/вызывает сложности?
Аноним 10/05/18 Чтв 11:20:28  1187511
>>1186959
Первая очевидная мысль - таблица с периодами, привязанная к работникам, с парой таймстемпов или tsrange.
Аноним 10/05/18 Чтв 17:58:17  1187773
>>1187454
>>1187511
Создаётся таблица Сессия, в ней три обязательных пункта "ИД", "начало" и "конец"
DataRecievied создаёт строку с ИД и временем в "начало". Если ИД повторяется, то просто добавляется время в "конец".

А вот что дальше?
Аноним 10/05/18 Чтв 18:03:26  1187778
>>1187773
Какой ид повторяется?
Очевидно, что ид сотрудников не должны быть уникальными. Потом по ним дергаешь все рабочие сессии и уже их обрабатываешь, как хочешь.
Аноним 10/05/18 Чтв 18:05:12  1187781
>>1187778
>Какой ид повторяется?
RFID-тэг.
Аноним 10/05/18 Чтв 19:19:40  1187826
Читаю этого вашего Алана. Анон, объясни логику здесь. Почему серверу надо прочитать все 24 записи в этом случае? Взял таблицу аккаунты нашел по индексу записи, с соответствующими id и взял из этих записей avail_balance, и все. Почему надо создавать индекс для пар (id, avail_balance) ?
Аноним 10/05/18 Чтв 19:30:58  1187841
>>1187826
И почему в этом упражнении правильный ответ - создать индекс на пару (дата_транзакции, количество), а не на все 4 колонны вместе, как делается индекс на все используемые колонны в предыдущих картинках.
Аноним 10/05/18 Чтв 20:55:27  1187922
>>1187773
>Потом по ним дергаешь все рабочие сессии и уже их обрабатываешь, как хочешь.
А примерно, как должна выглядеть такая БД?
Аноним 10/05/18 Чтв 21:50:50  1187963
image.png (48Кб, 1354x393)
Анончики, выручайте. Завтра за щеку брать. Как гуглить проблему: У меня сначала в процедуре просто по входному параметру устанавливал поля с разным значением. Теперь я джойню две таблицы и хочу, чтобы в последней я смог поменять одно поле. Как это сделать?
Аноним 10/05/18 Чтв 22:17:04  1187984
Аноны, а в чём вы схемы рисуете?
Мне вот подкинули ТЗ на йобо-фитнесс-приложение и там довольно интересная схема таблиц выходит и что бы не запутаться и контактировать с другими разрабами думаю перенести мысли по БД в графическую среду.
Под руку попадаются лишь сомнительные онлайн сервисы, а есть ли что-то десктопное и мощное?
P.s. планируем юзать postgresql+mongodb
Аноним 10/05/18 Чтв 22:19:09  1187986
>>1187984
пиши схемы в виде текста, а визуализация пусть происходит автоматически какой-нибудь тулзой.
Аноним 10/05/18 Чтв 22:29:44  1187990
>>1187986
Вот меня и интересуют тулзы для такой визуализации текста
Аноним 11/05/18 Птн 04:11:55  1188064
>>1187773
Турникет понимает, в какую сторону прошел человек - вход или выход?
Поля Начало, Конец обязательными делать нельзя - у тебя он даже просто войти не позволит, будет ругаться на то, что Конец пустой. Но это не все - допустим, у тебя выключили свет с утра , всех пустили в обход турникета, люди выходят вечером - никого выпустить не можем.

Я бы хранил так (навскидку, не претендую на абсолютную истину):
Таблица pass --Факты входа - выхода

pass_id number --Уникальный идентификатор факта прохода через турникет
device_id number --Идентификатор терминала
card_id number --Идентификатор карточки пропуска
pass_date date --Момент прохода через турникет
pass_direction number --Направление прохода (0/1)
pass_status number --Статус (ошибка, успешно)

Таблица рабочих сессий work_session:

work_session_id --Уникальный идентификатор сессии
employee_id number --Сотрудник
work_session_begin date --Момент начала сессии
work_session_end date --Момент окончания сессии
begin_pass_id number --Ссылка на факт прохода для начала сессии (может быть пустой)
end_pass_id number -- Ссылка на факт прохода для окончания сессии (может быть пустой)
work_session_begin_user varchar --Кто проставил начало - нужно продумать
work_session_end_user number varchar--Кто проставил окончание - нужно продумать
work_session_begin_reason_id --Причина начала работы nullable
work_session_begin_reason_id --Причина окончания работы nullable

Тут нужно оставить возможность заполнять моменты начала и окончания работы вручную и автоматически (на основе базового режима работы сотрудника)- на случай отказа турникета.
Разумеется, если время прописалось турникетом, то изменять его уже нельзя.
Т.е. если система видит, что условный Алеша Сычев пришел на работу 5 июня, а до этого он пришел 3 июня в 7 утра и с тех пор не выходил, то она должна свериться с дефолтным режимом работы (допустим 8 часов) и автоматом проставить что Алеша 3 июня закончил работать в 15 часов.
У определенной группы пользователей должна быть возможность редактировать эти данные, естественно, с ведением аудита - кто, что и когда менял.
Можешь добавить причины начала и окончания сессий - если тебе нужно будет потом отличить отгулы на полдня от прогулов.

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






Аноним 11/05/18 Птн 06:40:46  1188080
>>1188064
Спасибо за развернутый ответ.
>Поля Начало, Конец обязательными делать нельзя - у тебя он даже просто войти не позволит, будет ругаться на то, что Конец пустой. Но это не все - допустим, у тебя выключили свет с утра , всех пустили в обход турникета, люди выходят вечером - никого выпустить не можем.
Там сетевой контроллер, который не видит разницу между входом и выходом, только факт срабатывания считывателя (очень древняя технология древних).

>Как должна выглядеть БД - вопрос странный.
И если честно, мне нужен учёт времени и хранение полученных результатов (по дням, месяцам, годам) и отделам, с учётом того, что люди могут выходить из здания по делам и возвращаться обратно в течение смены. Не хранить же для каждого сотрудника таблицу в 365 дней и рабочими датами?
Аноним 11/05/18 Птн 09:21:10  1188109
image.png (4Кб, 228x164)
>>1188080
Если у тебя просто срабатывание датчика, то тогда колонка с направлением движения не нужна - ты ее не сможешь заполнить.

Учет времени и хранение у тебя будет по определению. СУБД для того и нужна - хранить.
Если у тебя всего одно здание, то какой поток в день? 1000? 2000? Это все очень маленькие количества записей.

Для каждого сотрудника будет несколько записей на день, да, это нормально. СУБД справится, не переживай.










Аноним 11/05/18 Птн 16:56:33  1188299
14560781863370.webm (2893Кб, 480x360, 00:01:28)
Что читать после Learning SQL? Что-нибудь по созданию самих баз, как правильно делать таблицы, чтобы все было нормально, как делать БЫСТРЫЕ sql запросы, чтобы выполнялись за 1нс и т.д.
Аноним 11/05/18 Птн 20:03:32  1188380
>>1188109
>Учет времени и хранение у тебя будет по определению. СУБД для того и нужна - хранить.
А вот как лучше всего это реализовать - я без понятия. Важно же не только хранить, но и получать доступ к хранимой информации.
>Если у тебя всего одно здание, то какой поток в день? 1000? 2000? Это все очень маленькие количества записей.
500 примерно.
Аноним 11/05/18 Птн 21:42:25  1188450
>>1188109
И ещё: есть какие-нибудь хитрые инструменты, облегчающие учёт времени в SQL?
Аноним 11/05/18 Птн 23:11:58  1188501
>>1188299
Тома Кайта.
Аноним 12/05/18 Суб 10:04:54  1188625
>>1188450
Какие инструменты? Че несешь? Уже с timestamp'ом без мокрописек совладать не можешь?
Аноним 13/05/18 Вск 19:59:34  1189314
>>1188625
Да я про разные. Например как при подсчёте общего времени учитывать только будние дни?
Аноним 13/05/18 Вск 20:04:50  1189319
>>1189314
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
> DAYOFWEEK
Это называется документацией.
Аноним 13/05/18 Вск 20:25:42  1189351
>>1189319
Ну вот, а теперь как лучше всего это использовать в учёте времени?
Аноним 13/05/18 Вск 20:27:40  1189356
>>1189351
Читай книги и статьи, никто за тебя ничего реализовывать не будет.
Аноним 13/05/18 Вск 20:30:25  1189360
>>1189356
Я же не прошу сделать за меня базу данных, просто спрашиваю как люди решали эту проблему.
Аноним 13/05/18 Вск 20:57:58  1189390
>>1189360
Ты еще даже со схемой не определился. Чтобы с тобой говорить, нужно её самому за тебя сделать, а потом примеры запросов показывать. Повторяю, никто этим заниматься не будет. Задача у тебя простейшая, за время, прошедшее с создания твоего вопроса здесь, ты бы её уже худо-бедно решил.
Аноним 13/05/18 Вск 21:16:46  1189396
>>1189390
>Ты еще даже со схемой не определился.
Так мне нужна идея, как это реализовать правильно, а не сами запросы (пока что). Пока что есть идея при создание нового пользователя создавать отдельную таблицу, где один столбец будет общим временем за день, второй - датой этого времени.

Аноним 13/05/18 Вск 21:22:17  1189399
>>1189396
> при создание нового пользователя создавать отдельную таблицу
Иди, блядь, читай, идеи свои охуительные отбрось и хоть немного разберись в теме. Потом поймешь, как мне тяжело сдерживаться и не покрывать тебя хуями. Ты свое время проебываешь и нихуя не делаешь. Пиздуй, блядь, читать. У тебя задача самого вводного уровня, соберись.
Аноним 13/05/18 Вск 21:25:28  1189402
>>1189399
>Иди, блядь, читай, идеи свои охуительные отбрось и хоть немного разберись в теме.
Так где можно почитать про учёт времени через sql?
Аноним 14/05/18 Пнд 00:54:59  1189459
>>1189402
гугли opensource СКУД системы. если получится, то молодец.
Вообще что тебе нужно.
1) сделать опозанание где вход, а где выход.
2) Если человек не вышел, то ставить время 00:00, например.
3) додумать закрытие для случая два, если он вышел в 00:00.

Если ты не можешь спроектировать бд, то пиздец, блядь, купи готовое решение.
Аноним 14/05/18 Пнд 05:12:47  1189493
>>1189396
Вот это круто, на каждую запись новую табличку. Дейтом теперь только подтереться можно, нормальные формы, отношения, кортежи, муть какая-то.
Так и делай, анон, потом покажешь, что получилось. Думаю, получится отличное решение, тиражируемое и масштабируемое.

Похоже ты совсем нулевой. Почитай хотя бы как вообще БД используются, хотя бы простейшие примеры как делается список сотрудников. Если ты думаешь, что таблички - это типа как файлики, то спешу разочаровать, это не так. Я тебе даже примеры таблиц написал, но судя по всему ты это вообще не воспринял. Иди на sql-ex.ru, читай все с нуля, тред сохрани, потом (если) осилишь саму идею РСУБД перечитаешь. Пока что тебе особого смысла нет объяснять, у тебя нет элементарных знаний.
Аноним 14/05/18 Пнд 06:42:00  1189497
>>1189459
Вообще, мне нужен СКУД, мне нужно хранение данных о времени, что бы в любой момент можно было запросить то, сколько часов человек работал в мае 2018 года.

>>1189493
>Вот это круто, на каждую запись новую табличку.
Ну так назови альтернативу, что бы можно было хранить данные по каждому дню у каждого сотрудника.
Аноним 14/05/18 Пнд 08:00:11  1189507
>>1189497
хуле ты такой тупой то?

хранишь id сотрудника timestamp тип события(вход, выход)

а потом селекты нормально составляешь.
Аноним 14/05/18 Пнд 08:38:45  1189514
>>1189497
>Ну так назови альтернативу

Назвал уже, перечитывай пока не поймешь:
>>1188064

Аноним 14/05/18 Пнд 14:39:42  1189658
image.png (64Кб, 704x645)
Зачем нужен этот курсор? Ну хочу я прогнаться по каждой строчке в моей БД, почему он выводит 3 или более таблиц, если я прошу его строчку ебнуть-то?
Аноним 14/05/18 Пнд 16:17:16  1189704
>>1189514
>Назвал уже, перечитывай пока не поймешь:
И я уже писал: проблема не в контроле доступом, а в хранение результатов полученных результатов.
Аноним 14/05/18 Пнд 16:23:50  1189705
>>1189507
>хранишь id сотрудника timestamp тип события(вход, выход)
Работник может и 15 раз за день выйти.
Аноним 14/05/18 Пнд 16:38:50  1189714
>>1189705
Колонки:
id (сессии; автоинкремент, PK), id_сотрудника, время_начала, время конца. Мудак ты ленивый, ты бы уже после первого же тутора для детей понял, как это хранить можно. Но ты всё ждешь, когда за тебя все тебе в рот положат и разжуют.
Аноним 14/05/18 Пнд 16:43:33  1189718
>>1189714
Повторяешь мою же идею, которую я упомянул вначале - >>1187773
Аноним 14/05/18 Пнд 16:44:58  1189719
>>1189718
Нет, у тебя идиотская идея. Никуда время не добавляется. Начинается новая сессия, запросом уже просуммируешь продолжительности сессий, но делать ты это будешь сам.
Аноним 14/05/18 Пнд 16:49:58  1189720
>>1189719
>Нет, у тебя идиотская идея. Никуда время не добавляется. Начинается новая сессия, запросом уже просуммируешь продолжительности сессий, но делать ты это будешь сам.
Так ведь вопрос был и в этом: куда суммировать время так, что бы потом можно было его легко и просто достать.
Аноним 14/05/18 Пнд 16:52:05  1189721
>>1189720
SELECT ... GROUP BY employee ... SUM(%time_delta%).

Аноним 14/05/18 Пнд 17:12:18  1189732
image.png (390Кб, 488x446)
>>1189704
Еще раз почитай. Там все ключевые моменты есть, но могу еще раз повторить - анализируй сырые данные с девайса и заполняй таблицу рабочих интервалов.

Единственная сложность - это то, что данные с девайса не дают тебе 100% данных для учета, в случае, если девайс на время выйдет из строя, тебе нужно предусмотреть возможность как автоматически, на основе каких-то правил или режимов работы, так вручную, с помощью клиентского приложения, разрулить входы без выходов, выходы без входов и ударную работу по 36 часов во время авралов.

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

Никаких вопросов про тонкости обработки дат в SQL быть не должно. Это все разжевано в документации к БД.

Аноним 14/05/18 Пнд 17:16:14  1189734
>>1189721
А если надо взять данные за месяц у отдела N?
Аноним 14/05/18 Пнд 17:17:07  1189735
>>1189734
На этот вопрос ты ответишь себе сам, когда освоишь джоины и агрегации.
Аноним 14/05/18 Пнд 17:18:38  1189736
>>1189735
Что-то мне подсказывает, что ты тот ещё дилетант в работе с СУБД.
Аноним 14/05/18 Пнд 17:38:32  1189745
>>1189736
Я спорить не буду. Порекомендую тебе съебаться из треда и начать что-то делать, но если останешься, то с удовольствием понаблюдаю за тобой.
Аноним 14/05/18 Пнд 17:40:08  1189749
>>1189745
Небось ещё по IP пробиваешь.
Аноним 14/05/18 Пнд 18:03:07  1189758
>>1189736
А ты прям мастер хуястер. Здесь вообще никого нормального нет.
Аноним 14/05/18 Пнд 21:58:42  1189894
>>1189705
ты тупой? Ты настолько ленив, что не можешь считать суммы в процедурах?
ебать ты.

Я мог бы тебе написать всё это, но бабла у тебя конечно же нихуя нет, как и мозга
Аноним 16/05/18 Срд 09:47:45  1190825
sql-mongo.jpg (106Кб, 718x724)
Аноним 16/05/18 Срд 10:17:07  1190836
Котаны, я макакий умеющий в JS. Решил понемногу , для духовного роста, вкатиться в БД. Хочу начать с sql понятно что логичнее с noSql, но все же sql поголовно везде
Подскажите какой нибудь sql учебник для самых маленьких.
Аноним 16/05/18 Срд 19:51:40  1191145
>>1189658
>select * from ... where sale = @idSale
А где гарантии, что у тебя там одна запись по этому условию?
Аноним 16/05/18 Срд 23:19:26  1191303
1.png (117Кб, 569x434)
Помогите с запросом.
Есть одна таблица в которой требуется найти дубли по двум столбцам и сгрупировать их. Так вот есть один запрос, выделен на пикче, нужно его оптимизировать-перепилить.
Дубли должны находится по колонке CommunicationType и SearchNumber, как и делает мой запрос. Однако, как на выходе не получать лишних "групп"? Например, на пикче есть две группы, но нужно что-бы была только одна т.к. первая полностью входит во вторую, но есть условие что в группе не может быть меньше 2х записей. сори за качество пикчи
Очень нужна помощь HALP PLZ
Аноним 17/05/18 Чтв 01:51:48  1191384
image.png (62Кб, 886x439)
Аноны, нормально ли такое(связи между таблицами)?
Что убрать? Или оставить как есть?
Аноним 17/05/18 Чтв 03:27:20  1191398
>>1190836
Мартин Грубер Понимание SQL.
Дейт - Введение в СУБД.
В процессе чтения обязательно задрачивай тысячи запросиков - на sql-ex.ru или на codefight.com в разделе Arcade -> SQL
Аноним 17/05/18 Чтв 04:32:48  1191407
>>1191384
Нет, это ненормально, а очень и очень плохо.

Связи на картинках не будут нормально работать. Допустим, ты завел 2 типа упражнений с десятком подтипов в каждом, запустил систему, в табличке упражнений появились десятки тысяч записей. Затем ты меняешь в табличке типов название - и у тебя все перестает работать, т.к. записи в Exercise и ExerciseSubType будут ссылаться на несуществующее значение. Запросы вернут 0 записей.

Связи должны быть по первичному ключу - то есть по %table_name%_id.
Кстати, рекомендую называть колонку с первичным ключом по такому шаблону, потом удобнее джойнить будет. Добавь primary_key по этим колонкам и сделай ссылки на ExerciseTypeId, ExerciseSubTypeId и т .д.
Эти колонки должны заполняться из уникальной последовательности, т.е. если у тебя была запись с Id = 100, потом ты ее удалил и добавил новую, то новая запись должна иметь Id = 101, даже если предыдущая запись получится Id = 99 и эти Id у записей никогда и никем не должны изменяться.
Также нужно проставить для колонок-ссылок внешние ключи на таблицы-источники, построить по ним индексы и определить политику при удалении.

Вот тогда с точки зрения связей все будет правильно.

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

И еще один момент - предлагаю тебе объединить табличку типов и подтипов в одну.
Во-первых, по сути это и есть одна сущность, во вторых - ты можешь строить иерархии с глубиной больше 1, в третьих меньше кода придется писать.

Будет это примерно так:

ExerciseTypeId number
ExerciseTypeParentId number
ExerciseTypeName
ExerciseTypeDescription
ExerciseTypeBegin date --дата начала действия записи
ExerciseTypeEnd date --дата окончания действия записи

Последние две колонки дают тебе возможность легко вести историчность записи, например, Тип стал неактуальным и его теперь не используют. Однако удалять его нельзя - на него ссылаются множество упражнений. Устаревшей записи проставляют ExerciseTypeEnd, при показе данных из справочника проверяется дата и показываются только актуальные - либо с не наступившей датой окончания, либо с пустой.

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

Советую посмотреть книжки из поста выше - судя по твоей схеме тебе будет крайне полезно, узнаешь много нового.
Аноним 17/05/18 Чтв 11:08:15  1191452
>>1191407
1. Понял про ключи, спасибо(дело в том, что я ORM юзаю, и тут с этим проще, оно само привязывается к primarykey unique с автозаполнением).
2. Можешь чуть подробней пояснить про типы/подтипы в одной таблице?
P.s. Спасибо за книги
Аноним 17/05/18 Чтв 14:31:04  1191532
Репощу тут. Есть около 50 миллионов записей по ~килобайту, нужно запилить удобный просмотр, сортировку и т.д. Вопрос по производительности. В идеале бы запилить в вебе чтоб не таскать везде БД, но я так понимаю с таким размером нужен оверпрайсный сервак если больше 3.5 человек будет пользоваться? На какие вообще скорости рассчитывать и сколько сожрет оперативки? В локальной БД же нормально будет шевелиться или на рядовой кофеварке 2ядра/4гига тоже будет больно?
Аноним 17/05/18 Чтв 17:38:25  1191636
>>1167018 (OP)
призывается бородатый бдшник

ситуация: есть одна sqlite3 бд, в ней 130+ таблиц. В эти таблицы постоянно пишется дата, которая парсится с некого api. В тоже время, из этой базы берется эта же дата на обработку. То есть постоянные insert'ы и select'y.

Как бы ускорить это дело? все, конечно, на python
Аноним 17/05/18 Чтв 17:49:00  1191646
>>1191636
> SQLite
Заменить на что-нибудь более серьезное. Остальные оптимизации не подсказать без экстрасенса, да и бесплатно никто не будет этим заниматься.
Аноним 17/05/18 Чтв 18:45:02  1191689
Как отсортировать по foreign_key (если есть) а иначе по id?

т.е.:

things(id, thing_id)

id: 1, thing_id: 3
id: 2, thing_id: null
id: 3, thing_id: null
id: 4, thing_id: null


Нужно отсортировать, что бы было 1 и 3 были рядом, например:


1,3,2,4

Как?
Аноним 17/05/18 Чтв 19:19:12  1191710
>>1191689
Пример точно правильно написал?
Аноним 17/05/18 Чтв 22:34:30  1191866
15255595850130.webm (3954Кб, 960x540, 00:01:15)
>>1188299
Бамп вопросу!

>>1188501
>Тома Кайта
Гугл выдал 6 учебников по ораклу, который вроде как не надо использовать потому, что он охуенно мощный и дорогой. В общем адская дрочильня для серьезных заданий, а не для вкатывальщика.
Мне бы что-то по MySQL, Postgre или по SQL вообще. Именно как делать все не только select, join а ещё например создание юзеров, таблиц, процеры какие-то, о которых у Алана ни слова, зачем, и как делать это быстро.
Аноним 17/05/18 Чтв 22:59:28  1191897
>>1191866
>>1188299
> как делать БЫСТРЫЕ sql запросы
EXPLAIN ANALYZE
Аноним 17/05/18 Чтв 23:09:13  1191908
>>1191646
поглядел кучи рецептов по ускорению, вплоть до эксплоитов на плюсах, кажется.
Индиксация мне не подходит, потому что постоянный Insert. Думаю, остановится на многопоточности и реализации шаблона consumer. Еще говорят, есть кучи конфигов, которые не гонятся за производительностью.
Может быть вместе и сработает. Ну а еще докучи буду писать в память и только читать. Раз в какое-то время дампить в базу на диске.
какие подводные?
Аноним 17/05/18 Чтв 23:20:46  1191917
.png (6Кб, 360x360)
>>1191897
Объясни.

>>1191908
1) Какое отношение инсертов к селектам?
2) Каков процент фуллсканов больших таблиц в селектах?

3) Выбрасывай нахуй sqlite и меняй на оракл или postgre. Sqlite исключительно однопоточный и писать туда во много тредов что намеренно ссать себе на лицо.
Аноним 17/05/18 Чтв 23:27:49  1191928
>>1191908
> Ну а еще докучи буду писать в память и только читать.
Кэшировать недьзя данные?

>>1191917
> Объясни.
Ищешь тяжелые места, исправляешь, повторяешь, запоминаешь испробованные приёмчики.
Аноним 17/05/18 Чтв 23:29:12  1191930
>>1191917
>меняй на оракл или postgre
- инсерты к селектам: 1 к 3
- 135 таблиц в бд. По 7M полей. Фулом не обхожу. Все вычисления из последних сотен тысяч.

так и поступлю
Аноним 17/05/18 Чтв 23:32:29  1191937
>>1191928
>Кэшировать недьзя данные?
>буду писать в память
Аноним 17/05/18 Чтв 23:39:09  1191946
>>1191937
Ты через жопу свои охуительные идеи описываешь. То, что ты озвучил, больше похоже на базу в tmpfs. С кэшированием данных иногда все просто, а иногда сложно и почти бесполезно, поэтому нужно смотреть по задаче. Вот я и спросил.
Аноним 17/05/18 Чтв 23:45:17  1191954
>>1191946
убедили переходить пока не совсем поздно на Postgress
Аноним 17/05/18 Чтв 23:47:11  1191955
>>1191954
Поддерживаю тебя в этом. Не забудь, что там есть полноценная поддержка JSON, что где-нибудь тоже может помочь в срезании углов.
Аноним 17/05/18 Чтв 23:51:19  1191960
>>1191955
зацените на грани бреда: а что если, я сделаю каждую работу с таблицей как отдельную базу данных? И буду в 135 потоках ебашть в них асинхронно? Ну и запрашивать в этом же потоке.
Может так быть? все на питоне
Аноним 17/05/18 Чтв 23:52:09  1191962
>>1191955
формирую джсон уже на фласке и в рест апи
Аноним 17/05/18 Чтв 23:56:05  1191964
>>1191928
Я траллел, а ты не понял.
>>1191930
> - 135 таблиц в бд. По 7M полей
И как sqlite работает? Не лопается к хуям?
>>1191954
Ты мог бы посмотреть в сторону игнайта, тебе и встроенный кэш, и SQL какой-никакой, и масштабирование до плюс бесконечности, и встроенные мап редьюс операции близко к данным, но у тебя объемы крошечные, поэтому бери постргре и успокойся.
>>1191960
Ебаклак просто. Возьми любую базу данных, которая нормально поддерживает многопоточность, не обосрись с блокировками (вдруг), обеспечь, чтобы твоя приложуха срала и жрала говно с БД также многопоточно и все будет хорошо.
Аноним 17/05/18 Чтв 23:58:35  1191967
>>1191964
>все будет хорошо.
Аноним 18/05/18 Птн 00:01:33  1191968
>>1191967
Ну ладно, ты будешь идти на улице, тебя арестует нацгвардия, потом окажется, что у тебя в кармане был аргентинум и пойдешь по 228.
Аноним 18/05/18 Птн 09:38:58  1192067
>>1191689
вроде да, а что?

1 и 3 связаны, их надо выводить рядом при сортировке
Аноним 18/05/18 Птн 12:58:20  1192132
Как лучше всего хранить отформатированный текст в БД?
Аноним 18/05/18 Птн 13:29:05  1192142
>>1192132
В БД.
Аноним 18/05/18 Птн 13:45:00  1192144
>>1192067
Так это у тебя иерархический запрос, только сортировку по веткам нужно будет сделать обратную.
Гугли "иерархический запрос CTE"

Аноним 18/05/18 Птн 13:59:26  1192154
>>1192142
Я имею ввиду, в каком формате? Есть три опции: html, Markdown и JSON. Сам склоняюсь в пользу последнего.
Аноним 18/05/18 Птн 14:02:40  1192156
>>1191452
>2. Можешь чуть подробней пояснить про типы/подтипы в одной таблице?

Да вроде все сказал, куда уж понятнее.
Когда у тебя рубрикатор в виде дерева, ты можешь поддерживать вложенность любой глубины, хоть 10 уровней. В твоем варианте ровно два уровня. Через две недели после запуска к тебе придет Машенька из отдела маркетинга и скажет - "а неплохо бы нам сделать три уровня для упражнений". И твоя схема поплывет - как в части рубрикатора, так и в части его использования - теперь у тебя для одного подтипа получается три уровня иерархии, а колонок только две.
Нужно делать новую таблицу, новую колонку, новую форму, новые запросы и т.д.

А когда все в иерархической структуре лежит, то тебе все нужно написать один раз. Конечно, код получится немного сложнее, но его в итоге будет меньше. Максимально возможную глубину иерархии ты можешь вынести в конфигурационную табличку, если нужно жестко ограничить пользователей тремя уровнями, например.

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

Если что-то непонятно, то задавай более конкретный вопрос.
Аноним 18/05/18 Птн 14:06:30  1192157
>>1192154
> html
Уже отрендеренный.

> Markdown
Который нужно рендерить.

> JSON
Который нужно рендерить.

Ты не понимаешь, чего хочешь. Тебе нужно еще подумать.
Аноним 18/05/18 Птн 14:23:00  1192162
>>1192157
Мне надо хранить текст, созданный с помощью react-draft-wysiwyg. Функции для рендера и конвертации одно в другое там есть. Хочу хранить в JSON потому что в СУБД, которую я юзаю (PostgreSQL), есть полноценная поддержка работы с ним.
Аноним 18/05/18 Птн 17:49:36  1192257
>>1192162
А что тебе с текстом нужно делать в базе?
Аноним 18/05/18 Птн 18:17:17  1192281
>>1192162
> Хочу хранить в JSON потому что в СУБД, которую я юзаю (PostgreSQL), есть полноценная поддержка работы с ним.
Дядя, ты дурак? Ты будешь делать запросы к отрендеренным постам в бложике? Отвечу: не будешь. Хуйню думаешь, думай ещё.
Аноним 18/05/18 Птн 19:24:14  1192328
>>1192156
> все в иерархической структуре лежит
Вот насчёт этого сможешь пояснить? Как она будет выглядеть ирл, структура такая, на реальных данных.
Аноним 18/05/18 Птн 19:44:16  1192342
>>1191303
вместо dense_rank() юзай row_num() over (partition by communicationtypeid order by number. потом обобщай запрос и отсекай те записи у которых row_number() будет > 1.
Аноним 18/05/18 Птн 23:25:18  1192450
1.png (45Кб, 1005x709)
Есть одна БД. она прикручена к спрингу но не суть
Смысл: есть юзеры. у юзера есть возможность создавать таблички(проекты?) в программе.
Например табличка нравится / не нравится. Записей может быть разное количество. Нравиться 5, не нравиться 8 и т д.
Количество записей в каждом проекты может варьироваться. То есть типизировать проекты и записать в 1 не получиться.
Как сделать БД? Разбить каждую запись в отдельную таблицу? Объединить все к хуям в большую?
Аноним 19/05/18 Суб 00:33:05  1192473
>>1192144
Погуглмл, что то сильно замудренные ответы. Я думал средствами sql это намного проще (
Аноним 19/05/18 Суб 15:38:12  1192719
>>1192328
https://www.db-fiddle.com/f/pVaH5v2wfuFvsxeRYHFuQy/0
Аноним 19/05/18 Суб 17:23:04  1192777
>>1192719
Спасибо, буду разбираться
Аноним 20/05/18 Вск 11:38:40  1193102
>>1192473
У тебя тут получается обход дерева, по сути это и есть сортировка, только по особым правилам.
Если у тебя ровно два уровня, то можно и самоджойном обойтись, а если уровней несколько может быть, то нужно рекурсивно обходить.

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

Если у тебя всегда ровно два уровня может быть (т.е. в твоем примере 3 на втором уровне и у этой записи thing_id всегда пустой), то это проще сделать.
Аноним 20/05/18 Вск 13:05:34  1193169
Какой тип данных лучше использовать для хранения номера телефона: text или bigint?
Аноним 20/05/18 Вск 13:10:10  1193172
>>1193169
Я в тексте храню. Можно и в bigint.
Аноним 20/05/18 Вск 13:27:16  1193205
>>1193169
8-800-555-35-35
8(800) 555 35 35
Аноним 20/05/18 Вск 15:55:30  1193394
>>1193169
Лучше в тексте.
Рано или поздно придется сохранить номер с решеткой или звездочкой, или добавочный какой-нибудь.
Аноним 20/05/18 Вск 16:51:55  1193430
>>1193172
лучше разбить номер на все составные: регион int, оператор int, номер int. Дальше можно реляционные таблицы сделать к оператору, регионы и тд. Это в случае, если тебе нужно максимально быстро делать выборку
Аноним 20/05/18 Вск 17:08:06  1193432
>>1193430
У меня нет такой выборки. Храним в базе просто номера клиентов. Для смс рассылок достаточно, у нас тем более клиентов всего 30к и все из РФ, поэтому не имеет смысла.
Аноним 20/05/18 Вск 17:29:06  1193444
>>1193432
Если для рассылок - храни текстом, можно завести еще одно поле для типа контакта - телефон, почта, учетка телеграм, что там еще есть.
Аноним 20/05/18 Вск 17:30:41  1193445
>>1193430
>int
А если ведущий ноль?
Аноним 20/05/18 Вск 17:33:48  1193447
>>1193444
Мальчик, ну ебаный в рот, я конечно понимаю всё, но не учи отца ебаться. У тебя еще молоко, а может и не молоко, на губах не обсохло, когда я начинал с sql работать.
Аноним 20/05/18 Вск 17:34:27  1193448
Аноны, а вы умеете делать минимизацию?
Аноним 20/05/18 Вск 17:34:58  1193450
>>1193448
Минимизацию функциональных зависимостей*
Аноним 20/05/18 Вск 18:13:45  1193478
>>1193447
30 лет-то перевалил, отец?

Если ты такой гуру, то вопросов как хранить контакты быть не должно.

Если хочешь по существу пообщаться - скажи, чем плохо хранить все контакты в одной таблице с указанием типа контакта (сотовый, мессенджеры и т.п.)?

Аноним 20/05/18 Вск 18:15:42  1193481
>>1193478
Разменял 4 десяток 2 года назад. По заданным тобою вопросам ответа не знаю. Извини меня пожалуйста. Мне нечем заняться в воскресенье вечером. Я одинок и мне грустно. Одна отрада траллить на харкаче.
Аноним 20/05/18 Вск 18:20:01  1193487
>>1193481
>мне грустно.
Можешь ссать детям итт в ротешники, настроение повышается
Аноним 20/05/18 Вск 18:40:11  1193505
>>1193481
Просто удивился такой реакции на безобидное предложение.

Я в твоем возрасте (сейчас 38) тоже один был, тоже грустно было, а сейчас вспоминаю те времена - свои плюсы тоже были.
Сейчас у меня другая крайность - семья, дети мелкие, никуда толком не выбраться в одно лицо, заботы, хлопоты и рутина, только на дваче урывками и сидеть осталось.



Аноним 20/05/18 Вск 19:05:13  1193521
1.png (33Кб, 1094x662)
>>1192450
Сам себе не ответишь никто не ответит
Появилась идея сделать не каждую отдельную таблицу на каждый тип проетка юзера, а сводную по всем полям всех проектов. Насколько это хуевая идея?
Почему то навикет импортирует эту хует в 10й постгресс с ошибками, Реквест на другой проектировщик БД с экспортом
Аноним 20/05/18 Вск 19:20:57  1193531
>>1193521
Просто не совсем понятно, что ты хочешь сделать, анон.
Да, можно все атрибуты описать в одной таблице, есть такой подход. Погугли Entity-Attribute-Value.
Но нужно понимать, что это далеко не панацея и у этого подхода есть серьезные минусы.





Аноним 20/05/18 Вск 19:37:21  1193542
>>1193531
>Entity-Attribute-Value
Сейчас загуглю. Спасибо. Хоть будет откуда копать.
Несколько видов сущностей, которые могут отличаться между собой количеством полей, и каждое поле не обязательно...и количество не регламентировано.
Как список за / против составляется. 2 колонки - 1 за 1 против. И там и там есть какие то записи. Их может быть произвольное количество.
А в другом варианте еще появляется произвольное количество колонок..
Аноним 20/05/18 Вск 19:53:43  1193556
>>1192450
Что это за красивая бд с картинками? Тоже такую хочу!
Аноним 20/05/18 Вск 20:22:57  1193591
>>1193556
Navicat.
Аноним 20/05/18 Вск 21:11:09  1193624
>>1193172
>>1193394
Спасибо. Выберу вариант с текстом.
Аноним 21/05/18 Пнд 07:52:01  1193832
Посоны. Помогайте. Есть 2 таблицы
table1:
ID
Name
cID

table2:
ID
cID
value

Для 1й записи может храниться множество значений во второй таблице.
Необходимо забрать только последнее значение из table2. Помогайте, горю.
Аноним 21/05/18 Пнд 10:41:49  1193880
>>1193832
SELECT value FROM table2 ORDER BY ID DESC LIMIT 1;
Аноним 21/05/18 Пнд 10:55:30  1193888
>>1193832
Пиздец ты даун.
Аноним 21/05/18 Пнд 11:05:57  1193893
>>1193888
Не ругайся. Достаточно адекватный вопрос для треда. В начале не всё интуитивно понятно, и системный подход к обучению тут тоже не сразу начинает работать. Он же не просит схему на %курсовая_нейм% ему быстро накидать и объяснить всё.
Аноним 22/05/18 Втр 18:46:01  1194910
>>1193880
Спасиб, решил вопрос так:
SELECT
table2.Value
FROM
table2
LEFT OUTER JOIN table1
ON table2.cID = table1.cID
WHERE table2.cID = 1
GROUP BY table2.cID

>>1193888
Шел бы ты кукарекать в /b/, петушок.
Аноним 22/05/18 Втр 20:29:01  1194999
>>1194910
> GROUP BY table2.cID
Зачем?
Аноним 22/05/18 Втр 20:40:13  1195011
>>1194910
Где гарантии, что ID первой записи всегда 1?

>>1194999
Подождите, а каким хуем этот запрос вообще будет работать? Not group by expression
Аноним 22/05/18 Втр 20:55:10  1195021
>>1195011
> каким хуем этот запрос вообще будет работать?
Хз, где-то, может, и сработает.

> Где гарантии, что ID первой записи всегда 1?
В условии задания, полагаю.
Аноним 23/05/18 Срд 17:00:25  1195548
Анон!!! Помоги, пожалуйста. Заставили срочно посчитать количество записей за один определенный месяц, причем количество по значению типа. Вообщем на сколько я смог додуматься это
select type, count()
from table
where time >= to_date('01.01.2017')
and time < to_date('01.02.2017')
group by type;
Но блин проблема в том, что уже 71 минуту считает, а результата нет.
Там таблица по фрагментам разбита, например я знаю что можно сделать запрос по одному фрагменту
select
from table partition(p_01_01_2017)
но как сделать запрос по диапазону фрагментов??? Или как иначе можно ускорить??
Аноним 23/05/18 Срд 23:37:09  1195870
image.png (166Кб, 379x499)
Анон, принеси мне эту книгу плз. Понял начала все эти, селекты, джойны, хочу более сложных вещей. Вот тут https://www.datapine.com/blog/best-sql-books/ Ее советуют. А ее нет нигде. Что гугл, что яндекс забиты одной рекламой лол. Остальные книги без труда нашел, а эту не могу. Ну или может что другое посоветуешь почитать, про серьезные дела, чтобы я не пошел на работу, умея только джойнить свой анус в селект ерохи.
Аноним 23/05/18 Срд 23:59:41  1195891
>>1195870
http://www.booksee.org/s/?q=SQL+Cookbook+Molinaro
Аноним 24/05/18 Чтв 00:00:27  1195893
>>1195548
>Но блин проблема в том, что уже 71 минуту считает, а результата нет.
Наверное, индексов нет.
Аноним 24/05/18 Чтв 09:43:15  1195969
>>1195548
Распаралель запрос, или задай range для partition
Аноним 24/05/18 Чтв 09:44:31  1195970
>>1195893
>>1195548
Двачую, наверняка на time индексы не повесили и СУБД шагает по абсолютно всем строкам. Но индексы у тебя ещё дольше будут делаться, поэтому жди окончания запроса или делай как >>1195969
-кун говорит.
Аноним 24/05/18 Чтв 15:51:59  1196105
>>1195548
A s planom zaprosa-to kak? Kak s planom-to?
Аноним 24/05/18 Чтв 16:51:31  1196141
>>1195893
Там все нормально я думаю настроили. Это я просто не умею пользоваться
>>1195969
А что такое range для partition?
>>1195970
>>1196105
Я не знаю даже что это такое...

Вообщем ночью придумал запрос выполнять по каждому фрагменту таблицы по отдельности. Прикинул что в одном месяце 30 дней, то есть 30 фрагментов. И сидел запускал 30 раз ночью такой запрос:

select /+ parallel(32) /type, count(*)
from table partition(p_01_01_2017)
group by type;

Потом результат каждого вставлял в librecalc. В конце в librecalc просуммировал формулой всех 30 дней значения и получил результат за месяц. Для ускорения использовал parallel, хотя его запрещают использовать почему то. Надо все таки как то фундаментально этот sql выучить, а то так запаришься.
Всем спасибо за помощь, пацаны!
Аноним 24/05/18 Чтв 17:51:29  1196169
>>1196141
Ну блеать, просишь свою субд explain и она тебе план запроса говорит. Оптимизация и тюнинг эт пиздец. Люди книги на эту тему пишут
Аноним 24/05/18 Чтв 19:02:49  1196207
>>1196169
Ну блин я понял, они реально шарят, уважение им.
Аноним 25/05/18 Птн 11:14:00  1196568
Добрый день, делаю теги.

Допустим есть таблица с постами:
post_id, post_text
таблица с тегами:
tag_id, tag_name
и таблица связей
tag_id, post_id

У меня вопрос, как мне селектить все посты, что бы к каждому посту еще и массив тегов летел в каком-то виде? Желательно что бы каждый тег еще был отдельным элементом, а они не были склеены скажем в строку, спасиб.
Аноним 25/05/18 Птн 15:27:47  1196694
>>1167018 (OP)
У нас бэкэнд на MongoDB. Нужно хранить в БД оче большие файлы. Требуется собирать файлы по частям перед заливкой в бд. Оказалось, что это требование возникло из-за того, что GridFS не позволяет обновлять файлы в базе (дописывать к ним байты). Есть ли NoSQL СУБД, в которой реализован аппенд к файлам,уже хранящимся в бд? Как с этим дела в CouchDB?
Аноним 25/05/18 Птн 15:31:37  1196701
>>1196568
Тип сделай описательный. Либо запрос с order by post_id
Либо сделай анонимный блок, который будет тебе возвращать в loop селект от айди поста и все теги столбцом для этого поста.
Аноним 25/05/18 Птн 15:34:33  1196703
>>1196694
Монго же большие файлы вообще хранить не умеет. Пробовал хранить не сами файлы, а ссылки на них? А для ссылком развернуть распределенную файловую систему?
Аноним 25/05/18 Птн 15:36:38  1196704
>>1196703
>Пробовал хранить не сами файлы, а ссылки на них?
А почему все бд не делаю так? В чем профит хранить сам файл в БД вместо какой-нибудь строки "c:/yoba/cp/peperoni_pizza.png" ?
только вкатываюсь
Аноним 25/05/18 Птн 15:37:18  1196706
>>1196703
>А для ссылком развернуть распределенную файловую систему?
Как это сделать? Есть мануал?
Аноним 25/05/18 Птн 16:01:10  1196721
>>1196703
>>1196704
Сказали, что недостатки монги мимо нашей задачи. Хранение файлов в распределенной ФС позволяет их редактировать. А нам нужно запретить редактирование. Но при этом надо позволить скачивать эти файлы.
Аноним 25/05/18 Птн 16:04:03  1196724
Целый час думал об этом. Я правильно понимаю CAP утверждение?
1)Оно о distributed data storage. То есть каких-то баз данных, которые разделены между разными компьютерами. А то я сначала не понимал, как, выбрав Availability, кто-то сможет получить ответ от моей БД, если она только на 1 моем пк расположена и в данный момент лежит мертвая.
2)Consistency значит, что запрашивающий будет получать самую новую информацию, up-to-date то есть. Я пока пишу\учусь только на своем 1 пк, но я предполагаю, что в серьезных ебах видимо есть куча нод, которые принимают-отправляют транзакции, а есть какая-то группа главных еб, которая занимается сбором и учетом транзакций с остальных нод. И при выборе consistency мы или получаем от ответ от одной из главных нод, где учтены все изменения, либо идем нахуй, если нода лежит. А при выборе availability мы обращаемся сначала к главной ебе, если она не отвечает, то к ебе поменьше, и так, пока не получим ответ. Даже если он немного устарелый и в нем не учтены все транзакции.
Это так работает? Я все понял? Если я вкатываюсь в джуна, мне достаточно пока иметь это представление , и не пытаться понять, как вся эта адова машина работает на практике в серьезных предприятиях?

Ещё, я правильно понял, что consistency в CAP означает то, что я сказал - up-to-date информация. А consistency в ACID означает, что в бд есть защита от умников, которые в поле "возраст" вместо целого числа попытаются забить "23.5" или строку "23 с половиной годика"?
Аноним 25/05/18 Птн 16:24:24  1196733
>>1196721
Запрети редактирование, лол. Рфс может ебашить не только, как таковая. Ставишь перед рфс - машину брокера и все.

Или йопта, купите отраслевое решение у оракла, он теперь в носкл может, что вам и нужно, а его клобы/блобы до 2 тб

Если решение прямо стоит с монго, то можешь программно все сделать с делением файлов.

А так ты попал со своими NoSQL

>>1196704
Читай курс по субд и танненбаума. Это под разные задачи.

Вариант с хранением далеко и не в базе снижает нагрузку, однако надо мучиться с политиками безопасности.
Аноним 25/05/18 Птн 16:29:50  1196739
>>1196724
Нет, не прав.

Согласованность - все узлы не противоречат друг другу в одмн эпизод времени.

Доступность - любой запрос к рс завершается корректно, но не факт что данные совпадут.

Устойчивость к делению - расщепление не приводит к некоректности ответа от каждой секции.

Почитай про Stand by system например у Оракла. Там все расписано, правда документы большие.
Ты в любом случае получаешь три режима ca cp ap
Аноним 25/05/18 Птн 16:39:06  1196743
>>1196733
>Запрети редактирование, лол
Обсудил это с лимлидом. Говорит: лишний слой, не хочу.
Аноним 25/05/18 Птн 16:41:28  1196746
>>1196743
А еще говорит, что после стадии MVP на этом слое будут серьезные изменения.
Аноним 25/05/18 Птн 17:03:16  1196762
Поговорил еще с тимлидом. Он мне прислал песенку "Сделать на отъебись" и посоветовал иногда ее слушать, лол.
Аноним 25/05/18 Птн 18:20:54  1196806
посоветуйте годный видеокурс по postgres
анон пророчил боль, анон знал что пророчил
Аноним 25/05/18 Птн 18:35:44  1196819
>>1196806
>видеокурс
>postgres
Лол, поищи аудиокнигу
Аноним 25/05/18 Птн 21:17:29  1196880
1.png (49Кб, 750x451)
Есть 3 таблицы и 2 стула.
Юзеры, их роли и третья. Как найти все роли одного юзера?
Хотя бы в какую сторону гуглить.
Аноним 25/05/18 Птн 21:30:13  1196885
>>1196880
Джйонишь таблицы и фильтруешь по юзеру.
Аноним 25/05/18 Птн 22:43:33  1196928
>>1196885
К сожалению я далек от SQL. Можно по подробней?
Аноним 25/05/18 Птн 22:59:39  1196934
>>1196880
select r2.role_id, r2.role_name from
(select user_id from app_user where условия на одного юзера) u inner join user_role r1 on u.user_id = r1.role_id inner join app_role r2 on r1.role_id = r2.role_id;

Аноним 25/05/18 Птн 23:03:06  1196935
>>1196934
Спасибо. Я примерно такое же сам писал.
Аноним 25/05/18 Птн 23:03:29  1196936
>>1196934
Хуйню написал.
>>1196928
Погугли. Ключевые слова для поиска дал.
Аноним 25/05/18 Птн 23:06:02  1196937
>>1196936
>Хуйню написал.
>пук
А объяснить что не так слабо?
Аноним 25/05/18 Птн 23:07:08  1196939
>>1196936
Ну вообще работает.>>1196934
А почему инер-джоин?

SELECT r.id,role_name FROM roles r
JOIN user_role ur ON r.id=ur.role_id
JOIN users u ON u.id=ur.user_id
WHERE u.nickname = 'User'

Названия строк не много не совпадают но думаю понятно.
Выдает то что надо. То есть фильтровано по имени пользователя, его роль.
Аноним 25/05/18 Птн 23:10:44  1196942
Ну и задача немного специфическая. >>1196880
Чтобы возвращало объект в хибернейте.Всем спасибо.
Аноним 25/05/18 Птн 23:22:47  1196944
>>1196939
Потому что план выполнения эффективнее чем та дрисня.
Аноним 25/05/18 Птн 23:45:46  1196951
>>1196942
Нахера тебе запрос писать тогда, там же аннотации есть для маппинга.
Аноним 25/05/18 Птн 23:50:59  1196952
>>1196951
Чтобы лохи из зекача бесплатно сделали за меня всю работу.
Аноним 26/05/18 Суб 11:04:08  1197082
>>1196951
Там сложные запросы все равно надо писать.
Легкий да. Xui findByXui(String s) и все
А сложные оборачиваешь в аннотацию и погнал писал на диалекте хибернейта. Но все равно весь бойлерплейт за тебя делается. Не гемора как в чистом JDBC.
Аноним 26/05/18 Суб 12:15:26  1197107
Насколько реально найти фриланс на sql и pl/sql?
У меня есть фуллтайм работа и денег хватает, но я бы хотел ещё в свободное время ебашить.
Аноним 26/05/18 Суб 12:28:15  1197112
>>1197107
>но я бы хотел ещё в свободное время ебашить
Лично я в свободное время летом собираюсь подрабатывать уличным музыкантом для души.
Аноним 26/05/18 Суб 15:18:34  1197157
image.png (164Кб, 1275x897)
РРРЯЯЯЯЯЯ

Чет PostreSQL посложнее MySQL. Я правильно понимаю, что ситуация такая:
1) У MySQL есть удобный интерфейс для запуска сервера - Notifier - где можно просто жмякнуть 'start server' и все заработает, но приконнектиться к нему можно только через консольку mysql.exe.
2) А у PostgreSQL наоборот - надо сначала создать БД через initdb, потом запустить через pg_ctl, но зато есть охуенный графический интерфейс в виде Pgadmin хотя можно и консолькой через psql?

Вопрос: почему об этом нигде не написано? В MySQL в первой же книге на первых страницах: "вот так запустить, вот так подключиться, чтобы писал sql запросы". А в PostreSQL "есть psql, есть pgAdmin, иди нахуй". Нашел только в оф документации всю эту инфу про initdb и pg_ctl. Может я не там ищу и не то читаю, анон? Подскажешь что-нибудь другое? Я смогу запускать сервер через pg_ctl только? Просто офф документация описывает ситуацию на Линуксе с созданием другого юзера вместо рута, который будет запускать postgres.exe. А я на шинде, у меня тут такого нет.

Кстати, почему мой сервер уже делает по 5 транзакций в секунду? Я даже никаких команд ему не пишу. Что он там самостоятельно крутит?
Аноним 26/05/18 Суб 16:55:55  1197250
>>1197157
Ты что такой окукленный? Все бд через консоль включают. Это самый важный навык, а ты еще все это на винду накатил, долбаеб.
Аноним 26/05/18 Суб 16:58:07  1197252
>>1197157
>Кстати, почему мой сервер уже делает по 5 транзакций в секунду? Я даже никаких команд ему не пишу. Что он там самостоятельно крутит?
Твой сервер майнит кому-то битки.
Аноним 26/05/18 Суб 17:10:00  1197259
image.png (12Кб, 611x212)
>>1197250
>Все бд через консоль включают
Да я и не против. Просто у MySQL сразу сказали, что и как сделать. А у постргреса вообще никаких упоминаний об этом. Сиди и ищи в документации сам.

>а ты еще все это на винду накатил, долбаеб.
Кстати, что с этим делать? Пикрил. Каким хуем вообще "кодовая страница консоли отличается от основной"? Кто это придумал? А почему не сделать вообще случайные кодовые страницы для каждой итерации запуска cmd? Ну и дальше, я меняю кодовую страницу на указанную, и что? Сообщение об ошибке psql не выдает, но я получаю нечитаемую хуйню. И как мне жить теперь?
Аноним 27/05/18 Вск 10:48:53  1197584
Так получилось - я столкнулся с windows xp. Под неё нужен mysql (mariadb) или любая БД. Майсиквел версию не могу найти последнюю под ХР. Анончики, выручайте.
Аноним 27/05/18 Вск 11:23:34  1197605
>>1197259
Накати линукса и будь человеком
Аноним 27/05/18 Вск 11:34:14  1197613
>>1197584
https://mariadb.com/kb/en/library/deprecation-policy/

Во второй таблице Deprecated-платформы со ссылками на последние релизы для них. В следующий раз попробуй сам погуглить.
Аноним 27/05/18 Вск 12:37:06  1197640
>>1197613
Лучи добра, анон! Гуглил, но не нагуглил. Спасибо. А mysql версия 5.5.х какая последняя поддерживаемая windows xp?
Аноним 27/05/18 Вск 12:59:37  1197651
>>1197640
Понятия не имею и гуглить лень. Скажу лишь, что на Windows ты хуёв насосешься.
Аноним 27/05/18 Вск 13:22:54  1197664
>>1197651
Почему? Я в середине нулевых сидел плоьно на хрюше и спермосерверк 2003, помню, что mysql не было проблем.
Аноним 27/05/18 Вск 13:23:10  1197665
Допустим, у меня есть отчёт на БД Oracle, который я хочу продублировать из SSRS в Tableau. Это BI инструменты и вам их знать совершенно не обязательно, мой вопрос будет про оракел.
Текущая реализация в SSRS: несколько процедур с выходным параметром типа sys_refcursor.
При перекате на Tableau я столкнулся с проблемой: в неё нельзя передать курсор из процедуры, только обычный SQL запрос.
Мне не хочется копировать эти запросы втупую. Во-первых, я не уверен, что мне удастся избавиться от PL/SQL полностью, во-вторых, я хочу, чтобы весь код был в одном месте.
Напрашивается использование pipelined function.
Оцените, пожалуйста, эту идею с точки зрения производительности и трудоемкости.
sys_refcursor vs pipelined function
Аноним 27/05/18 Вск 16:44:05  1197771
>>1197665
Да вроде норм.
Можно еще курсор через XML пробросить, но это скорее всего медленнее будет.
Аноним 28/05/18 Пнд 10:08:08  1198158
>>1167018 (OP)
БД-бояри взываю Вас. Вообщем есть бд в фокспро, нужно ее перетащить в пхпмайадмин делаю экспорт бд4 кодировка 1252(или какая она там) вообщем пхп орет что
>#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около '?v????' на строке 1
крч какая то залупа. Вопрос можно ли как-то открыть код бд и поглядеть его блокнот и нотепаде не помогает я хз у же че делать
Аноним 28/05/18 Пнд 12:34:53  1198224
>>1198158
Конвертер ебашь бд, или выгружай весь код бд в анси sql
Аноним 28/05/18 Пнд 12:39:45  1198227
>>1198224
а блять как код то выгрузить, все дело идет из галактики в фокспро я могу тока смотреть
Аноним 28/05/18 Пнд 13:14:42  1198242
>>1198227
У тебя есть среда где запросы выполняешь? Черещ нее проси код для каждоц таблицв или бд. Возьми VFP и сделай экспорт.
Аноним 28/05/18 Пнд 13:22:40  1198246
>>1198242
хех, вот в этом и прикол мб слышал о такой штуки как ЕРПИ ГАЛАКТИКА так вот выгрузка идет с нее, но о коде и речи и не идет, она автоматически создает бд и туда вбивает все нужные данные, такие вот дела
Аноним 28/05/18 Пнд 14:06:29  1198259
image.png (52Кб, 1127x247)
image.png (15Кб, 603x191)
Продолжаю изучать постгрес. Смотри анон, какая штука (я даже подчеркнул). Вопрос, почему если я сделаю reject для строки под IPv4, я все равно смогу подключаться к бд, а если под IPv6, то нет? Ведь если я сделаю IPv4 reject, то при проверке подключения к бд эта строка будет проверена первой, и должна тут же отключить меня. Там же адрес 127.0.0.1, это же и есть локалхост, когда я подключаюсь к бд с того же компа, где ее сервер крутится.
Аноним 28/05/18 Пнд 14:43:17  1198272
>>1198246
У нее преднастроенная база поумолчанию, хуле ты? А это значит, что ты можешь с ней сконнектиться
Аноним 28/05/18 Пнд 14:45:51  1198273
>>1198259
Она проверяет все строки. Нет такого, что проверил одну и дропнул.
блядь, анон, не ставь на винду постгресс. Поставь себе линукс уже

Если не забуду я тебе книг насоветую вечером по постгрессу.
Мимо Ораклист с опытом постгре
Аноним 28/05/18 Пнд 14:46:06  1198275
>>1198272
чет пхпмайадмин говорит что хуй, так как при создании она использует устаревший ситаксис, и на это админ ругается, и вот ебя труп пытаюсь ее затолкать в пхп
Аноним 28/05/18 Пнд 15:36:44  1198310
>>1198273
>Она проверяет все строки. Нет такого, что проверил одну и дропнул.
Но ведь подчеркнутое говорит обратное: как только попадается подходящая строка, проверяет только по ней, и если что не так - дропает. Вот я думаю, что сервер и должен проверить по IPv4 просто потому что он выше в файле и сразу дропнуть. А он почему-то дропает только если указать reject в IPv6. Может я чего-то не понимаю, и почему-то подключение к самому-себе не подходит под 127.0.0.1/32 ?

>>1198273
>Поставь себе линукс уже
В соседней доске посоветовали виртуальную коробку и на нее линукс сверху. Попробую в скором времени.

>>1198273
> книг насоветую
Было бы неплохо. Взял Learning PosgreSQL by Juba, но кроме первых двух глав она никакая вообще. Читаю документацию.
Аноним 28/05/18 Пнд 17:01:08  1198372
14257535869741.jpg (1042Кб, 2560x1440)
Давайте рассмотрим ситуацию в вакууме.

Допустим есть посты. У постов есть всякие стандартные атрибуты как id, author_id, time, body и т д.

Далее у постов могут быть картинки, допустим как на дваче, до 8 картинок к посту. Картинки лежат соответственно в отдельной таблице и там id, post_id, file_name например.

Далее есть теги, теги тоже лежат в отдельной таблице: id, tag_name
Ну и так как тегов у поста может быть много, и 1 тег может быть у нескольких постов, то есть еще таблица связей вида: id?, tag_id, post_id где свалка many_to_many организована.

Что бы еще такого приплести, допустим у постов есть комментарии - пусть просто нечто вроде урезанных постов без картинок и тегов, но у комментариев есть авторы, то есть в таблице с комментариями всё выглядит как-то так: id, post_id, author_id, body.

Теперь собственно вопрос, желательно для опытных ребят, как бы вы организовали запросы в такую базу? Начать можно с простого варианта, где скажем нужно заселектить 1 пост. Изи можно приджойнить к нему автора, а сопутствующие вещи такие как картинки, теги и комментарии+авторов комментариев можно параллельно запросить отдельными запросами, вместо того что бы писать монстр запрос, который я даже не знаю как будет выглядеть.

Но что делать, когда у нужен допустим список постов какого-нибудь автора со всей вот этой сопутствующей мишурой (теги, картинки, ответы), тут уже просто невозможно выкрутиться подобным способом: не будешь же потом в цикле для каждого поста слать по 3 дополнительных селекта? Если у тебя постов скажем много?
Как с подобными вещами работают? Как вообще с такой базой подружиться?
Аноним 28/05/18 Пнд 18:15:18  1198409
>>1198372
Обычные селекты с джойнами. Такие вещи делаются в рамках одного запроса, СУБД это быстро прощелкает. Это уже с действительно сложными запросами имеет смысл дробить запросы и считать что-нибудь в приложении, но у тебя дженерик вебпараша, где подобных проблем не существует.

Накати ORM, включи дебаг запросов и смотри, как там такое делается. В начале пути очень может помочь. Но не увлекайся, потому что учить SQL и учить ORM — очень разные вещи.
Аноним 29/05/18 Втр 13:55:22  1198830
Использую в своё сраном дипломном проекте встроенные сортировки и поиск из mysql, а мне надо их надо как-то описать, да ещё и сложность вывести. Какой воды можно налить страницы на две хотя бы?
Аноним 29/05/18 Втр 14:58:57  1198850
>>1198830
Это быстрые сортировки. Вычислительная сложность у них возрастает медленнее, чем линейно.
Миграции SQL Аноним 29/05/18 Втр 19:40:06  1199020
Такие уж дела, дорос до того, что на продакшене надо обновлять структуру с БД, но тупо снести все к хуям и выполнить запрос на создание таблиц не выйдет.
Ибо нужно сохранять данные, ибо сервисом уже активно пользуются и потеря данных недопустима.

Поэтому нужно мутить какой-то механизм миграций.
Есть 2 пути. Разработка через миграции.
То есть, когда-то создали некий baseline.sql с первоначальной структурой, а дальше ТОЛЬКО хуячишь файлы миграций с изменениями структуры и данных.
Этот подход плох тем, что, во-первых, писать эти изменения надо вручную. В итоге я нихуя не вижу текущую полную структуру БД.
Сейчас у меня вся структура в одном файлике, я целиком и полностью вижу все таблицы. Я я именно проектирую БД, а не пишу ссаные миграции.

Тут бы нужен некий инстурмент, чтобы я все так же описывал структуру в файлике, а эта ютилита брала предыдущую версию файлика и текущую и выдавала автоматом запросы sql, позволяющие получить новую структуру.
То есть, грубо говоря, нужен инструмент, который позволит автоматически создать sql-запросы, позволяющие из файла1 получить файл2.
Тогда бы технически вся разработка была через миграции, но я бы не пердолился с написанием этих самых миграций (максимум, проверял бы их корректность), а занимался именно изменением одного файла.

Короче, я хочу миграции, но не хочу вручную их писать.
Какие могут быть решения?
СУБД MySQL.
Аноним 29/05/18 Втр 20:56:53  1199077
>>1199020
> Тут бы нужен некий инстурмент, чтобы я все так же описывал структуру в файлике, а эта ютилита брала предыдущую версию файлика и текущую и выдавала автоматом запросы sql, позволяющие получить новую структуру.
В жизни бы такую хуйню даже из любопытства не трогал. На проде с большим количеством данных вообще только вручную ебашить, если у тебя там не переименование столбцов.

По теме ничего сказать не могу, из всех мокрописек вокруг СУБД использую только автоматические рисовалки схем — и то схемы удобнее в текстовом редакторе накидать.
Аноним 29/05/18 Втр 20:57:13  1199081
>>1198850
А что насчёт поиска?
Аноним 29/05/18 Втр 20:59:36  1199084
>>1199081
Посмотри EXPLAIN запроса и прикинь. Только данных побольше захуячь, потому что индексы СУБД на трех с половиной записях использовать даже не подумает.
Аноним 30/05/18 Срд 00:09:18  1199179
>>1199020
Если мсье проектант ленится сохранять промежуточные скрипты ddl, то пусть изволит проследовать сюда: https://dev.mysql.com/doc/workbench/en/wb-design-schema.html или пусть погуглит db schema compare tools.
А еще пусть не выебывается и сохраняет скрипты для каждого вносимого изменения в упорядоченном виде, в системе хранения исходников.
Аноним 30/05/18 Срд 03:46:19  1199229
Screenshot112.png (108Кб, 810x614)
>>1199179
Спасибо, уже понял, что один хуй нужны скрипты миграций и так или иначе они необходимы, буду писать я их сам или генерить.
Скачал этот workbench, уже обрадовался что можно быстро сгенерить запросы миграции, так эта хуйня откуда-то фантазирует несуществующие маня-ключи.
Что это вообще такое?
Таблица вообще не менялась.
Аноним 30/05/18 Срд 17:25:24  1199493
image.png (41Кб, 627x482)
Как так, почему это matte of style? Ведь при втором мы проверяем каждую строку и, если она подходит, добавляем в result set, потом проверяем весь result set на where. А при первом мы делаем декартово произведение, возможно получая огромнейшую таблицу 10кк*10кк, а потом проверяем это адовую огромную ебалу на where. Или нет? Планировщик запросов сам во всем разберется, и джойны надо делать только там, где без них ну вообще никак не обоитись? Но таких ситуаций нет.
Аноним 30/05/18 Срд 17:50:17  1199512
>>1199493
>Или нет?
Да.
Аноним 30/05/18 Срд 23:45:37  1199746
>>1199493
Это просто разный синтаксис.
Запросы дадут одинаковый результат.

На то он и SQL - язык для менеджеров, чтобы можно было быстро таблички посмотреть без привлечения программистов, поэтому ты пишешь что ты хочешь получить, а не как.
СУБД разберется.
Аноним 31/05/18 Чтв 14:12:30  1199946
Сап двач
Есть одна бд SQLite. Там есть таблица с заданиями и таблица человеков. Для каждого человека нужно хранить все задания которые он выполнил. Как лучше такое хранить? В поле со всеми ид заданий или в отдельной таблице с строками человек-выполненое задание?
Аноним 31/05/18 Чтв 14:20:16  1199949
>>1199946
Насколько я понял, это работает так:
Если у каждого задания может быть только 1 человек то это one-to-one или many-to-one relationship - хранишь указание на человека, которому дано задание, в таблице заданий.
А если у каждого задания могут быть разные человеки, то это many-to-many relationship - делаешь таблицу типа person-task, где хранишь пары человек-задание.
Аноним 31/05/18 Чтв 18:40:56  1200082
image.png (5Кб, 640x51)
Я решил сделать таблицу, где будут номера комнат, и время брони на них. Значит, для любой новой брони надо убедиться, что время бронирования не пересекается с предыдущим. Я решил, что проще всего это сделать проверкой того, что нижний предел брони больше любых верхних. А тут такое: никаких субзапросов в ограничении. И как мне обойти эту проблему?
Аноним 31/05/18 Чтв 23:19:37  1200331
>>1199229
Бамп! Объясните, что за левые ключи на пиках?
Аноним 01/06/18 Птн 08:45:53  1200412
>>1200331
Похоже ты сделал одинаковые измнения с помощью гуи-тулзы и на среде разработки, и на боевой.
Поскольку ты поленился назвать FK нормально, то тулза сгенерила имена по своему усмотрению в обоих случаях. А с точки зрения сравнения это разные FK, несмотря на одинаковое содержимое.
Аноним 01/06/18 Птн 12:24:16  1200500
анон, прогоняю код-марофон, и затупил чет..

как создать sqlite3 файл базы? сам на питоне. пипец. Обещаю в течении недели ответить на несколько вопросов.
Аноним 01/06/18 Птн 12:32:07  1200502
>>1200500
вопрос снят.
Вот бывает же такое, нигде нет ответа, потому что сильно банально. Всего лишь надо вызвать коннект... но между прочим, не очевидно.
Аноним 01/06/18 Птн 13:07:00  1200522
Screenshot20180[...].png (100Кб, 641x572)
>>1200502
Действительно.
Аноним 01/06/18 Птн 13:28:31  1200552
>>1200522
Там заморока. Ведь я помню, что все решается как-то незаметно. А через шел, терминал и проч. я точно не делал. всего-то:
path_db = os.path.abspath("D:/db/anal_data.db")
conn_anal = sqlite3.connect(path_db )
c_anal = conn_anal.cursor()
Аноним 01/06/18 Птн 13:42:23  1200569
>>1200552
Просто признай молча, что ты либо ньюфаг, либо даун.
Аноним 01/06/18 Птн 15:33:30  1200674
Впервые ITT, не бейте, лучше обоссыте.
Пишу веб морской бой. Хочу хранить состояние поля на момент каждого хода в базе, как это лучше сделать? Поле 10х10 представил в виде массива из 100 элементов, чтобы не создавать двухмерного массива. Но как это в sql хранить?
Создавать таблицу с сотней булевых полей и парой связывающих? Это разумно?
Дайте советов мудрых.
Аноним 01/06/18 Птн 16:19:57  1200709
>>1200674
Бери постгрес и интовую матрицу используй. Там так можно.
Аноним 01/06/18 Птн 16:27:36  1200715
image.png (146Кб, 1280x1024)
Анон, поясни за всякие графические интерфейсы. Они нужны? Их используют серьезные базаделы? Или ненужная хуйня, кто не пишет в консольке тот пидор etc etc? А если нужная, то какую взять? Сейчас у меня взломанный navicat 12, вроде работает. Но мне не нравится, что он взломанный. А бесплатное ПО, что я пробовал до этого для MySQL было совсем не очень.
Аноним 01/06/18 Птн 17:53:32  1200770
>>1200674
>Создавать таблицу с сотней булевых полей и парой связывающих? Это разумно?
Нет, не разумно.

Предположим, тебе сказали сделать морской бой 1212 клеток. Твои действия? Колонки добавлять? А 100100? И как с этим жить потом?

Второе - а зачем тебе вообще хранить ходы в виде массивов? Стартовое положение кораблей не меняется, достаточно сохранить его один раз, как-то так:

ship_id number;
game_id number PK;
player_id number;
ship_size number; --Количество клеток
ship_orientation number; --Признак того, как направлен корапь - по горизонтали (0) или по вертикали (1)
ship_row number; --ряд, в котором находится первая клетка корабля
ship_col number; --колонка, в котором находится первая клетка корябля

а ходы игроков хранить в такой примерно таблице:

shoot_id number; -- Ид выстрела
game_id number; -- Ид партии
player_id number; -- Ид игрока
ship_row_index number; -- Строка
ship_col_index number; --Столбец
ship_id number; --Id корабля в который попали, null - промах
shoot_result number; --null промах; 0 - попадание; 1 - уничтожение.
shoot_ts timestamp; --Момент выстрела

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

В такой структуре ты можешь хранить любые размеры полей, не обязательно квадратные, заметь. Можно делать поле 10000*10000 со стотрубными пароходами, например.
А еще ты всегда легко воспроизведешь игру и так тебе гораздо легче анализировать ход игры - на каком ходу в среднем попадают в 4-х трубник? а в двухтрубник? Ну и прочую статистику собирать.

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

Еще нужна табличка партий, где хранятся правила (размер поля, можно ли ставить корабли углами друг к другу и пр.)

Если что непонятно - спрашивай.
Аноним 01/06/18 Птн 18:23:56  1200792
>>1200770
>Второе - а зачем тебе вообще хранить ходы в виде массивов? Стартовое положение кораблей не меняется, достаточно сохранить его один раз
Я почти сразу после отправки поста спросил себя именно это. Но так далеко мысль не зашла, спасибо.
Аноним 01/06/18 Птн 18:27:46  1200800
>>1200082
Перед добавлением вызывай запрос, который проверит валидность.
Аноним 02/06/18 Суб 07:45:44  1201225
>>1200569
да, 4 года еще не о чем не говорит

Аноним 03/06/18 Вск 12:33:43  1201899
image.png (275Кб, 800x533)
Сап аноны, совсем новенький в базах данных и мне нужна ваша помощь. Хочу сделать 2 базы данных: в одной будут продукты, в другой рецепты. Как можно реализовать проверку продуктов для рецептов? Допустим, есть у меня в бд продуктов яблоко, банан и йогурт, а в бд рецептов фруктовый салат, который чтобы приготовить нужны как раз эти продукты. Как оформить бд рецптов, чтобы реализовать проверку?продуктов в рецепте может быть разное число: от 1 до 7 Пишу на c#+xamarin и кажись использовать буду SQLite, т.к для мобильного приложения
Аноним 03/06/18 Вск 13:59:30  1201942
>>1201899
Ну и зачем тебе две базы данных?
Аноним 03/06/18 Вск 14:08:43  1201954
>>1201942
А как предлагаешь?
Аноним 03/06/18 Вск 14:10:54  1201955
>>1201899
Я бы сделал это так:
1. Таблица Product с полями id (первичный ключ), name, ну и дальше какие тебе поля нужны
2. Таблица Receipt с полями id, name и тд
3. Таблица ReceiptsAndProducts с полями receiptId и productId, которые ссылаются на первичные ключи таблиц Receipt и Product.
Это классическое many-to-many-отношение, которое делается через промежуточную таблицу.
Аноним 03/06/18 Вск 22:50:40  1202196
1384352904486.jpg (553Кб, 1915x1037)
Даун на связи.
Может вы мне поможете. Как устроены данные типа ХАРКТЕРИСТИКА в табличных СУБД.
Кароче мне надо сделать так клиентсерверный фул рест апи что бы у обїектов номенклатуры, контрагентов, физических лиц были настраиваемые характеристики. Или проще говоря свойства.
Что бы к ебучей паре сапог можно было привязать цвет, тип материала, размер.
А к типу номенклатуры ЕДА жирность, порция итд. И что бы блядь в сапогах или в сущности ДИРЕКТОР не было жирности.
При этом надо что бы пользователь сам задавал какого типа будут данные, целочисленные, текстовые, дата, объекты.
Пытаюсь представить связи, и ум за разум заходит. Как понял нужно создавать по табличке на каждый простой тип данных, типа ключ значение.
И одну таблицу со связями к ключам других таблиц .
Но не уверен.
Думаю задача до меня решалась тысячу раз, но когда пытаюсь что то нагуглить натыкаюсь или на 1С или на что то совсем другое.
Может кто то поделиться каким то учебным материалом как организовывать такие данные, или где посмотреть модель готовых решений?
Аноним 03/06/18 Вск 22:54:12  1202197
>>1200715
>кто не пишет в консольке тот пидор etc etc
Это только на дваче такую хуйню встретишь.
Когда дело касается настоящей работы - речь о деньгах.
Значит надо использовать наиболее быстрые и безопасные инструменты.
Лаже системы контроля версий используют с гуи.
Никому не надо что бы долбоеб выебывающийся как он ахуенно пишет в vim испоганил проект на который убили кучу денег и времени.
Аноним 03/06/18 Вск 23:03:19  1202199
>>1201954
Думаю он про то что ты не правильно термины используешь.
Не базы данных, а таблицы. Все происходят в рамках одной базы.
Аноним 03/06/18 Вск 23:03:39  1202200
>>1202199
>неправильно
Фикс.
Аноним 04/06/18 Пнд 00:06:48  1202236
>>1202196
Гугли Entity-Attribute-Value, EAV
Аноним 04/06/18 Пнд 00:09:30  1202239
14362830189341.jpg (119Кб, 1920x1080)
>>1202236
Спасибо. Походу то что надо.
А есть какие нибудь ъорошие книжки на тему? А то на русеке даже на википедии перевода нет.
Вроде реаляционным базам столько лет, а нет.
Аноним 04/06/18 Пнд 00:51:41  1202250
>>1202239
Английский учи, дятел.
Аноним 04/06/18 Пнд 02:03:57  1202284
>>1202239
https://www.google.ru/search?q=сущность-атрибут-значение

Книжек, лекций и прочих материалов по РСУБД на русском очень много, посмотри тред, в постах есть названия хороших книг для новичков.

И да, вот этот анон >>1202250 дело говорит, учи, без ангельского никак.
Аноним 04/06/18 Пнд 13:24:11  1202534
Где в постгрессе храняться метаданные таблиц которые сделал я?
Вот в паблике мои таблицы, как получить всех имена и занести в отдельную таблицу?
Аноним 04/06/18 Пнд 16:48:41  1202636
Как выбрать всех users, у которых нет posts за этот месяц?

пробовал через not in, но не получается(

SELECT `posts`.* FROM `posts` WHERE (`posts`.`created_at` BETWEEN '2018-05-04 13:47:16' AND '2018-06-04 13:47:16')
Аноним 04/06/18 Пнд 18:08:36  1202702
>>1202199
да, в терминах запутался
Аноним 04/06/18 Пнд 18:09:05  1202703
>>1201955
Спасибо за ответ,анон
Аноним 04/06/18 Пнд 18:15:35  1202709
>>1202636

http://sqlfiddle.com/#!9/c55ac6/2

select
u.user_id,
u.user_name
from user u
where not exists (
select 1
from post p
where p.user_id = u.user_id
and p.created_at between sysdate() - interval 1 month and sysdate())
Аноним 05/06/18 Втр 15:52:59  1203371
Когда я накидаю всяких grant'ов в постргесе, я могу потом через \dp узнать, какую таблицу кто может трогать и как. А как сделать наоборот? Узнать, какие таблицы может трогать каждая роль?
Аноним 05/06/18 Втр 17:12:41  1203424
image.jpeg (373Кб, 700x1139)
Стоит ли вкатываться в БД с изучения пикрил?
Аноним 05/06/18 Втр 17:14:44  1203427
>>1203424
Зачем же тебе вкатываться в БД?
Аноним 05/06/18 Втр 17:16:57  1203428
>>1203427
Не знаю, может в будущем пригодится. Я тут наткнулся на odbc в дрисятке, оказывается можно хоть xls, хоть txt использовать как источник БД. PHP умеет работать с odbc, чутка поигрался - понравилось. Вот думаю познакомиться с sql подробнее.
Аноним 05/06/18 Втр 21:24:48  1203551
image.png (31Кб, 1154x121)
Анон, смотри какая хуйня. По дефолту в Постргресе у публичной роли есть привилегия на подключение к любой бд. При этом, подключившись, она может видеть все таблицы. Можно ли это как-то исправить, и делают ли так в продакшене? Это же полный пиздец, понятно, что доступа к различным таблицам по дефолту нет, и их надо выдавать через GRANT, но сам факт того, что вообще любая роль с login привилегией может подключаться к вообще любой базе и увидеть вообще все таблицы, включая all_my_fancy_passwords, или salaries_table_that_we_use_to_pay_our_employees мне кажется охуевшим. Тем более, что через \d они и структуру этих таблиц узнать могут. Или это нормально, и я паранойю? В том же MySQL например все наоборот - пока прав не дадут вообще ничего не увидишь.
Аноним 06/06/18 Срд 14:28:43  1203949
>>1203551
Только к схеме паблик.
Ты дебил там держать важные таблицы? Там обычно держат справочники общие и прочее.
Пароли храни с солью, благо постгресс теперь умеет.

А теперь вопрос. Вчера за вечер сдедал задания на хакер-ранке, скл-ех пройден. Есть ли что-то такое же на pl/sql например?
Аноним 06/06/18 Срд 19:26:11  1204173
>>1203949
>Только к схеме паблик.
В документации об этом не написано. Попробую сегодня схемы потеребить.

>Пароли храни с солью
Это что значит? При создании бд через initdb указал, чтобы хранил пароли с scram-sha 256.

>хакер-ранке
Кстати, а это что за сайт? А sql вроде ещё на codewars был.
Аноним 07/06/18 Чтв 10:20:14  1204482
>>1204173
В доках это было, а ты что думал про схему public? Она же тебе сразу говорит для чего она.

Да, у тебя соль включена.

Ты чувствуешь разницу между pl/sql и sql?
Аноним 07/06/18 Чтв 10:28:57  1204486
>>1204482
Да вряд ли для pl/sql будет такое.
Но если найдешь - отпиши, интересно будет глянуть.
Аноним 07/06/18 Чтв 15:49:57  1204761
image.png (194Кб, 765x759)
Продолжаю читать, как вам моя account таблица? Нормально, что нигде нет not null constraint т.к. регэксовые ограничения и так горантируют, что колонны не будут пустыми? Я так же не нашел способ проверить имя без регулярок, т.к. не нашел какой-нибудь isalpha() функции как в том же Питоне на проверку того, что строка состоит только из буков.
Аноним 07/06/18 Чтв 16:21:41  1204803
>>1204486
Я нашел quiz от Оракла. Но ты наверно про него знаешь
Аноним 07/06/18 Чтв 23:07:23  1205106
image.png (51Кб, 1224x454)
image.png (16Кб, 1098x66)
Анон, вот как это решить? Почему я не могу в where clause ссылаться на ту же таблицу, из которой я беру все значения ну, которая from_item? Я понимаю, что могу свой подзапрос на пк с минимумом ОЗУ выделить в with clause, но в справке по теме CTE не указаны, значит можно обойтись без них. К тому же можно вместо noram заново написать весь этот подзапрос на пк без ОЗУ. Но это же ебанина какая-то. В общем, как сделать хорошо и правильно?

Кстати, иннер джойны использовать только если я Питонист и explict better than implict? Второй пик именно про это?
Аноним 07/06/18 Чтв 23:18:46  1205120
image.png (33Кб, 712x490)
>>1205106
Ебать, вот только написал, сразу же пришла идея выбрать одновременно и минимальную ОЗУ, и максимальную скорость для пк с минимальной памятью, а потом сджойнить со всеми пк. И никаких подзапросов ебаных. Что скажешь анон, так нормально?
Аноним 08/06/18 Птн 17:22:54  1205644
Почему при указании типа numeric я могу указать только precision, забив на scale, о не наоборот? Мне нужно, чтобы числа с точностью до 2х цифр с запятой, и я не ебу, сколько цифр они будут занимать вообще. Может там будет 20.33, может будет 935714.84, я не знаю. И что мне делать? numeric(100000000000000000000000000000000, 2) ?
Аноним 08/06/18 Птн 17:41:01  1205663
>>1205644
Тупица ты ебаная, используй float/double/decimal.
Аноним 08/06/18 Птн 22:14:46  1205959
>>1205663
float/double хранят n знаков после запятой, а мне нужно именно 2, а decimal это синоним numeric, тупица ебаная
Аноним 09/06/18 Суб 01:03:49  1206074
>>1205959
Блядь, скотина, открой мануал к своей БД и чекни типы данных, которые я привел выше, они как раз позволяют делать то, что тебе нужно.
Аноним 10/06/18 Вск 14:38:46  1207054
Пишу условно
Есть две таблицы таблицы
В первой
Nane ID1 ID2
Петя 1 2
Вася 1 1
Дима 2 2
Настя 2 2

Во второй
ID2 X
1 10
2 20

Как получить сумму X по каждому ID1, то есть, что бы ID1(1) = 20+10, ID1(2)=20+20?
Аноним 11/06/18 Пнд 00:43:47  1207521
image.png (77Кб, 1249x791)
image.png (98Кб, 1259x901)
>>1207054
Джойнишь к первой таблице вторую по ID2, группируешь по ID1, суммируешь Х, отдаешь мне свои 300кк.

Смотрите что нашел на sqlex, анализатор блять, 30 заданий прорешал, потом только заметил. Есть вопросы - есть ли то же самое в том же Постгресе? Только в MySQL видел время на запрос после каждого запроса, но ничего такого детального. То, что там в stmtext это что-то типа байткода Питона? Нет, я понимаю, что sql не компилируется\интерпретируется, я про то, что это какой-то второй более глубокий\сложный язык под капотом, который выплевывает оптимайзер в ответ на мой запрос так же как байткод питона выплевывает какая-то дрочильня пот капотом оного в ответ на данный интерпретатору код? Нужно ли мне прямо сейчас задрачивать эту оптимизацию и этот язык утверждений, если я хочу пойти джуном уже куда-то? Или это high level и мне лучше вернуться к этому после того, как стану миддлом, заработаю 300кк, и выучу весь матан включая реляционную алгебру?
Аноним 11/06/18 Пнд 17:44:15  1207808
>>1207521
>есть ли то же самое в том же Постгресе?

В любой современной СУБД есть.

Почитай что такое план запроса и что и как СУБД вообще делает с момента запуска скрипта до момента выдачи результата. Это будет полезно в любом случае. Обязательно внимательно прочитай и запомни основные моменты про bind-переменные - это архиполезно.

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

Можешь добавлять и убирать индексы, менять условия и сразу смотреть, как меняется план.
Очень наглядно все.
Аноним 11/06/18 Пнд 21:32:47  1207980
Есть ли какой-нибудь сайт с упражнениями на SQL запросы, от простого к сложному? Или что-нибудь типа codewars только для SQL-холоповгоспод?
Аноним 11/06/18 Пнд 21:34:02  1207981
Т.е. чтобы уже были данные, интерфейс и т.д. Тебя просят взять такие-то данные, возможно с ограничениями, и ты хуяришь запрос
Аноним 12/06/18 Втр 02:46:26  1208102
>>1207981
sql-ex.ru
codefights.com --> arcade --> sql
Может анон еще подскажет
Аноним 12/06/18 Втр 06:40:50  1208128
Думаю что пришел с классической проблемой.

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

Пока что этот селект прогоняется в цикле из двух итераций.

На первой итерации собирается весь поиск и прогоняется селект с целью подсчета строк.

На второй итерации добавляются уже лимит и оффсет для получения собственно самих строк.

Как разрешить эту задачу и избавиться от дублирования запроса в базу в этой ситуации?
Аноним 12/06/18 Втр 20:47:04  1208597
>>1208128
Курсор?
Аноним 13/06/18 Срд 07:41:10  1208814
>>1208128
можешь считать общее количество записей в отдельную колонку аналитической функцией, если твоя субд позволяет
типа count(*) over () cnt
Аноним 13/06/18 Срд 13:29:58  1208948
>>1207980
hackerrank
Аноним 13/06/18 Срд 13:56:37  1208997
>>1207980
http://sql-ex.ru/

Правда я там только до 8 упражнения дошел, считаю нужно больше задач на самые основы, что бы надрочиться нубам типа меня, а то после изичной хуйни сразу дают джойн и груп бай и сижу не могу постичь до сих пор что там как правильно решать.
Аноним 13/06/18 Срд 20:19:54  1209297
Screen Shot 201[...].png (81Кб, 1892x314)
>>1208102
>>1208997
>sql-ex.ru
Отличный сайт, чаю.
Поставил первый раз сразу рейтинговые и охуел от пикрила.

>Правда я там только до 8 упражнения дошел, считаю нужно больше задач на самые основы, что бы надрочиться нубам типа меня, а то после изичной хуйни сразу дают джойн и груп бай
Дошел до 9, так и не понял где там можно было GROUP BY использовать.
Щитаю самые основы и вообще SQL должен сначала сам изучить, по крайней мере знать какие-есть возможности у языка в общем, а сайт чисто для практики и "набивания руки".

Все таки туториалов по SQL в интернете вагон, в отличии от сайтов с практикой, так лучше пускай сосредотачиваются на ней, а не распылаются дополнительно на уроки. Те же примитивные упражнения есть на W3 или как-его там, но их очень быстро заебывает делать, если они совсем простецкие когда ты по сути пишешь по 20 раз один и тот же запрос только меняешь название столбцов и таблиц.
Аноним 13/06/18 Срд 21:55:25  1209369
Screen Shot 201[...].png (203Кб, 1913x796)
Хотя я сам соснул на 14 с GROUP BY и HAVING, помогите.
Аноним 15/06/18 Птн 01:04:53  1210152
>>1207808
>Почитай что такое план запроса и что и как СУБД вообще делает с момента запуска скрипта до момента выдачи результата. Это будет полезно в любом случае. Обязательно внимательно прочитай и запомни основные моменты про bind-переменные - это архиполезно.
Есть советы, что почитать? Какие книги? Что-то типа 'Definitive guide to fast as fuck sql queries 300kk/ns'?
Аноним 15/06/18 Птн 01:25:33  1210156
>>1209369
Выведи ещё и тип продуктая не издеваюсь, просто сделай это, не удаляя ничего
Аноним 15/06/18 Птн 02:13:51  1210168
>>1210156
Так нельзя, в group by можно выводить только столбцы по которым идет группировка или агрегирующие функции.
Я уже нарешал за 30+ упражнений, но это так и не осилил.
Аноним 15/06/18 Птн 03:13:08  1210174
>>1210168
Я тебе говорю, что можно сделать так, как я сказал. Я так сделал, и на форуме многие так сделали. Сиди и думай. Или не думай, мне то похуй.
Аноним 15/06/18 Птн 14:35:06  1210371
Screen Shot 201[...].png (101Кб, 1268x672)
Screen Shot 201[...].png (94Кб, 1041x729)
>>1210174
Ну не тролль, во-первых я конечно это попробовал еще на этапе решения своими силами, даже зная что-так нельзя, но мало-ли, вдруг благодаря HAVING COUNT(Distinct P.type) = 1 машина выводит возможность использовать атрибут в селект. Потому что, например, что-то похожее можно делать при использовании WHERE = (Query) если результат Query одно значение.

Но нет, так нельзя.

Не знаю что ты там пробовал, на форуме этой задачи я вообще не нашел.
Аноним 15/06/18 Птн 16:12:35  1210453
image.png (67Кб, 1239x484)
>>1210371
Не троллю, ты просто тугой. Я не говорю тебе вывести просто колонну type, конечно это не сработает. Я говорю вывести тип продукта. А как это сделать при такой группировке собственно и есть само задание. Хотя конечно можно и по-другому сделать, но будет больше текста и cost плана выполнения.
Под форумом я имел в виду именно топик этой задачи, который становиться доступным после ее решения - кнопка 'обсуждение упражнения на форуме'
Аноним 15/06/18 Птн 23:22:11  1210676
>>1210453
>ты просто тугой.
Лол, есть немного. Теперь дошло. Спасибо за наводку.
Аноним 18/06/18 Пнд 15:25:54  1212448
15286464882891.mp4 (2928Кб, 852x480, 00:00:22)
>>1210152
Бамп бамп бамп.
Хуле ваш тред самый тухлый из всех?
Аноним 18/06/18 Пнд 21:08:58  1212763
Народ, вкатываюсь в БД, с нуля. Скачал MySQL + pgAdmin 4

На сайте написано
"pgAdmin is available for Windows™ 7 (desktop) or 2008R2 (server) and above. The packages below include both the Desktop Runtime and Web Application"

Где он в десктоп рантайм? Почему блять у меня только ебучий веб. Неудобно пиздец, хочу обычное приложение. Помогите плс.
Аноним 19/06/18 Втр 13:21:57  1213151
>>1212763
Mysql workbench скачай и подключайся
Аноним 20/06/18 Срд 20:57:09  1214015
Uchiha Obito - [...].mp4 (22711Кб, 1280x684, 00:03:18)
>>1212448
Bump bump bump
Why the fuck is your thread the slowest of all?
Аноним 21/06/18 Чтв 05:55:08  1214355
image.png (27Кб, 634x308)
>>1214015
Количество постов в треде видишь?
То-то же.
Аноним 22/06/18 Птн 14:09:50  1215212
>>1214355
Ну и что, это тематика, тут полтора анона, и 1.4 его сидит в нюфаг треде. Здесь небампанные треды годами живут.
Аноним 25/06/18 Пнд 12:05:27  1217093
ребята, каким необходимым минимальным уровнем знаний нужно обладать, что бы получить предложение о работе связанной с Базами Данных? Хочу вкатиться, запросы писать умею, но не сложные. Шапки у треда нет, поэтому был бы рад вашим советам.
Аноним 25/06/18 Пнд 14:04:44  1217151
>>1167018 (OP)
привет всем задам тут
неработают кнопки ине отображаются данные что делать
https://pastebin.com/zs3pvjsq

Learning SQL Аноним 25/06/18 Пнд 17:30:02  1217226
image.png (441Кб, 704x923)
image.png (130Кб, 732x941)
Кто-нибудь изучал SQL по книге "Learning SQL" от Alan Beaulieu? Как вам удалось подсоединить файл с примерами "LearningSQLExample.sql"? Мне выдает кучу ошибок, версия MySQL 5.7, шестой версии на офф сайте не существует.
Аноним 25/06/18 Пнд 19:40:19  1217272
>>1217093
слишком дохуя.
Знание архитектуры и работы бд, как таковой.
Расширенный sql. ( pl/pg/t)
Начальные навыки администрирования бд.

Надрочка на какую-то технологию бд тоже норм.

Обычно работа с бд, как основа, это проектирование, систематизирование бд. То есть ты должен понять, как работать с бд в качестве чистого продукта( полный цикл поддержки), знание объектных методов и глубокие понимания абстракции данных.

Плюс тебе надо заточить что-то, что поможет писать API, GUI.

У меня C++/ Pl/SQL. Уже пару лет горбачусь архитектором, и знаешь, иногда приходиться читать документацию самой бд. Многие книги по тонким моментам не доступны в интернете и приходиться платить 75 баксов( со стоимостью), чтобы тебе томик Бурлесона доставили в Московию.
Аноним 26/06/18 Втр 08:46:24  1217553
>>1217272
анон, можно с тобой контактками обменяться,с целью дальнейшего общения? Там телега, почта или ещё чего. Просто я на полном серьёзе хочу вкатываться в базы и уже много чего учу и прохожу курсы. Был бы благодарен тебе за такую возможность.
Аноним 26/06/18 Втр 17:04:00  1217709
image.png (112Кб, 1237x738)
>>1217226
Потому что ты какую-то хуйню делаешь, по ошибкам кажется, что ты ему html документ скормить пытаешься.

Аноны, а помогите теперь вы мне с 118 задачей sqlex.
Вот ее текст, мое решение и результат, а так же первое решение, что я нашел по гуглу и ctrl-c ctrl-v, чтобы проверить, работает ли.
pastebin.com/MPt8U3J1
pastebin.com/s9weVUQD

Я не могу разобраться в коде, который дает правильный ответ. Он невероятно большой. Но почему мое решение не катит? Поясняю: я беру каждый год и прибавляю ему от 0 до 8 лет. Насколько я понял из википедии, год високосный если делится на 400, или делится на 4 но не на 100. Так что среди года, и восьми последующих точно будет хотя бы один високосный. Потом я беру 6 первых дней апреля этого года, среди которых точно будет понедельник, и прибавляю к этому понедельнику 1 день. Беру битву, дату, и минимальный вторник апреля високосного года (ведь беру 8 лет подряд, может получится больше одной такой даты). И че не так то, два дня с этим ебусь
Аноним 26/06/18 Втр 17:16:13  1217711
>>1217709
СУКАБЛЯТЬ накатал эту огромную пасту, от безысходности решил просто так блять проверить не первые 6, а первые 7 дней апреля, и все заработало нахуй. Да пошло все блять в пизду
Аноним 26/06/18 Втр 18:24:14  1217740
>>1217553
humangdman на рамблере
Аноним 27/06/18 Срд 11:00:39  1218166
Сап, аноны.
В какой среде можно развернуть пикрил и сделать пару команд?

хочу потренироваться по этим вопросам сам
https://www.jitbit.com/news/181-jitbits-sql-interview-questions/
Аноним 27/06/18 Срд 11:20:24  1218179
>>1218166
скачал MySQL с Wokbench. Там ты можешь развернуть такую бд, а потом построить схемку.

У Oracle + TOAD такое же есть, да и вроде в стандартных тулзах оракла есть.
Аноним 27/06/18 Срд 11:24:50  1218182
>>1218179
>MySQL с Wokbench
спасибо.
попробую.
Мне тут советовали SQLite Studio и OpenServer
Сам еще думах ХАМПП попробовать. Решит ли оно задачи?
Аноним 27/06/18 Срд 11:30:02  1218189
>>1167018 (OP)
Посоветуйте литературу для совсем ньюфага по бз
Аноним 27/06/18 Срд 11:38:32  1218193
>>1218189
дунаева попробуй. тонкая.
только там примеры на древней мs SQL, но ты установи что-то типа mysql или около того.
или sololearn на телефон установи. там курс sql есть. весьма хорошо для нюфань. потом уже можно книжки от дядек читать и документацию по Ораклу или чему там надо.

мимо ньюфаг после курса сололёрн
Аноним 27/06/18 Срд 13:10:26  1218236
cancer1.png (1732Кб, 1024x1128)
может кто объяснить, что такое local и remote представления, чем они отличаются?
мимо даун начал познавать foxpro
Аноним 27/06/18 Срд 22:07:36  1218548
Умоляю перекатите.
Аноним 27/06/18 Срд 23:59:50  1218611
>>1218236
> начал познавать foxpro
Где мой 1998, лол
Аноним 28/06/18 Чтв 00:27:14  1218623
Расскажите, как предотвратить добавление уже существующей записи в БД?
Какие-то там индексы делать, или нет, не ебу вообще. В моем DB Browser ничего дельного, по идее, кроме каких то индексов нет.
Аноним 28/06/18 Чтв 09:40:00  1218707
>>1218182
попробуй. Хуже не будет.
Аноним 28/06/18 Чтв 09:40:29  1218709
>>1218611
Через 20 минут экзамен по этой залупе. Люблю свою шарагу
Аноним 28/06/18 Чтв 09:40:49  1218710
>>1218623
сделай колонку со значениями unique.
ALTER TABLE ALTER COLUMN
Аноним 28/06/18 Чтв 09:41:31  1218711
>>1218611
видел эту бд в продакшене пару лет назад.
Аноним 28/06/18 Чтв 16:52:39  1218927
Есть кто решил 127 задачу с sql-ex? Я уже заебался, никак не проходит проверочную базу.
Аноним 28/06/18 Чтв 18:18:25  1219003
>>1167018 (OP)
Сделал в постгре полю id тип данных SERIAL.
Если при инсерте в поле с UNIQUE указать уже существующее значение, то произойдет ошибка (ожидаемое поведение), но этот id при верных данных уже будет недоступен, следующая запись получит id + 1, получиться последовательность с дыркой. Как это фиксить?
Аноним 28/06/18 Чтв 18:39:35  1219021
>>1218709
В полку оплота российской ИТ индустрии прибыло. Блядь, что же там за преподавательский состав-то? Хорошо хоть не filemaker или ms access.

>>1218711
Я в кровавом ынтерпрайзе плаваю, окромя filemaker/mysql/постгре/оракл нихуя в жизни не видел.
Аноним 28/06/18 Чтв 19:24:18  1219047
>>1209297
Прости что долго не отвечал - тупо на работу устроился и времени нету, первые 3 недели - чистый ад в плане налаживания режима и прочей мозговой нагрузки.
Я мог ошибаться поэтому с тем на чем там завис.
В общем первый пикрил - то что у меня пройдено.

И соответственно попробовал сейчас решить 8е и вот такой вот посос.
Аноним 28/06/18 Чтв 19:25:37  1219048
>>1219047
С первым пиком подобсрался, лол.
Аноним 28/06/18 Чтв 21:35:50  1219146
как жаль что прогерские треды такие медленные, в то время как какая-нибудь параша в вг или в /b перекатываются по разщу в денб
Аноним 29/06/18 Птн 16:24:01  1219603
image.png (840Кб, 1220x885)
image.png (141Кб, 1239x906)
Анон, ну как решить 127, я уже не знаю че делать с этой хуйней. Второй день ебусь. После кучи проверок заметил подсказку о том, что cd это строка. И нет я не забыл про это, ебучая подсказка, но ведь и строки '12x' и '13x' будут сравниваться так же, как и числа 12 и 13 т.к. '2' как символ меньше '3'. Но окей блять, может у них там есть строки '12a' и '12b', а мне важно только число, сделал ебаучую рекурсивную CTE cds0 чтобы это число вытащить.. И все равно нихуя не работает. Добавил уже даже ебанутые проверки на p.model = 'fuck 127' потому что вдруг наврали и там есть одинаковые модели для разных типов ну, пк с моделью 123 и принтер с моделью 123, попробовал также и avg() и sum()/count() для требования "При расчёте среднего отсутствующие цены не учитывать.".
Ну не работает блять вообще ничего и я не знаю что делать, бляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
Аноним 29/06/18 Птн 17:17:41  1219635
image.png (57Кб, 605x632)
>>1219603
А почему у тебя в одном месте тип 'PC', а в другом 'pc'?

И с CTE явно ты переусложнил, наверняка там просто хватит дополнить слева строку нулями до длины строки в 10 символов, скажем.
Аноним 29/06/18 Птн 18:25:50  1219675
>>1219603
>>1219635
Ничего себе вы монстры, мб вы скажете что не так с моим 8 упражнением?
Аноним 29/06/18 Птн 19:03:14  1219727
Пиздец, что вы дрочите на скл-ех? Меня эта хуйня вообще бан выдала почему-то года два назад, ну я и послал ее нахуй.

Мимо ораклист.
Пс. Кто-то сдавал экзамен на оракл программинг про?
Аноним 29/06/18 Птн 19:18:02  1219745
>>1219635
>А почему у тебя в одном месте тип 'PC', а в другом 'pc'?
Потому, что я уже очень заебался с этой задачей. Но это и не важно, текст в sql case insensitive все равно.

>дополнить слева строку нулями до длины строки в 10 символов
И как бы это помогло? Было бы например две скорости: первая - '20x', вторая - '1хуйпизда'. И хуйпизда бы тогда выиграла т.к. на втором месте у первой был бы ещё 0, а у второй уже 1. Может и в этом ошибка, это же ебаный varchar, откуда мне знать, что у них там записано. 'fast'? 'reallyfast'? 'sonicthehedgehoc'? Ты сам то решил 127ю?


>>1219675
Во-первых если у тебя except то distinct не нужен т.к. except сам уберет все дубликаты. Во-вторых в таблице product есть модели, не указанные ни в одной из таблиц printer, pc, laptop.
Аноним 29/06/18 Птн 22:38:22  1219887
>>1218710
Тоже думал насчет этого, но я помню, что как-то отсекал подобное на входе, когда посылался insert
Аноним 30/06/18 Суб 19:04:30  1220181
>>1219745
Ну решил, ничего хитрого там нет, делается обычным avg, рекурсия не нужна, джойны по типу тоже и вообще дело не в скорости CD - она задана в виде 2x, 12x (скорость и в конце икс, все элементарно сравнивается).

Ошибка во втором блоке, нужно дополнительно проверять что prs.price is not null и prss.price is not null
Аноним 30/06/18 Суб 20:39:02  1220296
>>1167018 (OP)
Начал читать "Введение в системы баз данных" Дж. Дейта, чтобы понять теорию баз данных. Вроде все правильно, но как-то муторно. Есть ли книги как-то по-лучше или нужно дотерпеть и дочитать.
Аноним 30/06/18 Суб 21:56:39  1220373
image.png (35Кб, 1254x286)
>>1220181
ААААААААААААААААААААААААААААБЛЯЯЯЯЯЯЯЯ Я ПРОСТО ОРУ
Ещё и подсказка эта ебаная про cd, только о них и думал, а оказывается все из-за цен. Пиздец. Спасибо.
Аноним 01/07/18 Вск 15:14:06  1220745
Такой к вам вопрос:
Есть две вставки и две точки сохранения.
INSERT INTO plsqll01_purchase VALUES
('Small Widget1, I, 44-JUL-03', 'CA');
SAVEPOINT a;
INSERT INTO pls'qll01_purchase VALUES
('Medium Wodget', 75, 44-JUL-03', 'BB');
SAVEPOINT sp_2;

Если я сделаю ROLLBACK a, то сохранится ли первая вставка?
Проверить возможности, увы, нет
Аноним 01/07/18 Вск 15:16:00  1220747
>>1220296
Попробуй это
https://www.ozon.ru/context/detail/id/139953550/
Аноним 01/07/18 Вск 15:16:31  1220749
>>1220745
pl sql, если что.
Аноним 01/07/18 Вск 15:19:29  1220752
Смотрите, что нашёл
https://www.ozon.ru/context/detail/id/140212979/
Аноним 01/07/18 Вск 15:54:43  1220774
>>1220745
>Если я сделаю ROLLBACK a, то сохранится ли первая вставка?
У тебя откатится вторая вставка, а первая пока что так и не будет зафиксирована, т.е. она будет видна только из-под этой сессии. Чтобы 100% сохранилась, нужен коммит.
Аноним 01/07/18 Вск 15:55:28  1220776
>>1220296
Попробуй Мартин Грубер Понимание SQL.
Аноним 01/07/18 Вск 15:56:15  1220778
>>1220774
Спасибо
Аноним 01/07/18 Вск 16:06:29  1220787
Перекот, аноны.
https://2ch.hk/pr/res/1167018.html#1218623
Аноним 01/07/18 Вск 19:51:37  1220928
Мы можем создать два разных индекса (например битовый и б-дерева) на одну таблицу? Ускорит ли это как-то работу?
Аноним 02/07/18 Пнд 09:55:10  1221125
Уёбки, где перекат?
Аноним 02/07/18 Пнд 11:49:33  1221159
>>1219887
триггер ставишь.
и
Аноним 02/07/18 Пнд 12:21:42  1221172
>>1221159
не дописал, кароче Merge можно юзать.
Аноним 02/07/18 Пнд 13:12:51  1221199
2018-06-30-0116[...].png (439Кб, 1280x800)
>>1218179
Спасибо тебе анон за хороший совет
Аноним 02/07/18 Пнд 13:37:09  1221210
Ну рибят ну сделайте перекат
Аноним 02/07/18 Пнд 14:06:42  1221230
>>1221159
Какой триггер? Я "работаю" через DB. Browser, там нихера подобного нет, только индексы какие-то.
Аноним 02/07/18 Пнд 15:47:51  1221274
>>1218179
А для постгри что-то подобное есть?
Аноним 02/07/18 Пнд 18:35:45  1221382
image.png (86Кб, 1280x1024)
>>1221274
Есть navicat для всех, но там или платить или пиратить
Аноним 02/07/18 Пнд 20:42:17  1221462
image.png (73Кб, 1204x687)
В чем прикол? Вот во-первых, надо для каждой 5 записи найти среднее, но всего записей если я селектну max(n) 26. Т.е. каждых пятых записей должно быть пять, как у меня. А их три. И по чему надо искать среднюю цену? По типу модели? Ну тогда что за хуйня с принтерами, у которых 2 разных средних цены? Или по производителю? Непонятно в общем, мдааааааааа
Аноним 03/07/18 Втр 13:40:45  1221828
Тяжело ли самому писать поисковый движок для сайта по продажам? Я так понимаю если я допустим хочу сделать веб-сайт интернет магазин то придется полностью писать платформу под него? Кто нибудь занимался, собирали ли тиму? Сложно ли делать одному платформу с базой данных итд?
Аноним 03/07/18 Втр 13:43:13  1221830
>>1221382
Спасибо за такое

мимокрок
Аноним 03/07/18 Втр 13:44:06  1221832
>>1218179
Я так понимаю вручную никто базы данных не заполняет, все пишут интерфейсы и алгоритмы чтобы уже все готово было?
Аноним 03/07/18 Втр 16:25:18  1221940
>>1221832
Да, ты прав. Руками добавляют только редкие и внутренние таблицы "продукта"
Аноним 03/07/18 Втр 17:32:07  1221986
>>1221462
О, а эту я оказывается давно решал.

Читай внимательно условие.
С какого хуя ты решил, что записей 26? Посмотри сколько записей в табличке product.
Аноним 04/07/18 Срд 01:46:59  1222212
image.png (6Кб, 487x78)
>>1221986
Ах ехидная дата база. Теперь понятно, по чему искать среднее. Спасибо. не, ну это пиздец, никогда не угадаешь, что они там наделали

Теперь можно пойти убить себя нахуй на рейтинговом
Аноним 04/07/18 Срд 03:31:59  1222223
>>1221832
>>1221940
Еще при импорте, массовых загрузках могут вручную заполняться таблицы.
Аноним 04/07/18 Срд 10:14:38  1222277
Анон, у меня есть таблица, допустим, товаров, и таблица категорий. Связаны они через пивот-таблицу (у одного товара может быть много категорий). В той же пивот-таблице содержится столбец с сортировкой (т.е. в разных категориях одни товары могут быть отсортированы по-разному). Плюс к тому у товаров есть какой-то столбец (допустим, "рекомендую" или ещё один сортировочный столбец).
Вопрос: как мне выбрать первые сто товаров с сортировкой и по столбцу из пивот-таблицы, и из "основной" товарной (причем основная в приоритете), но при этом избежать сек скана?
Аноним 04/07/18 Срд 12:53:06  1222348
Перекат
https://2ch.hk/pr/res/1222346.html
https://2ch.hk/pr/res/1222346.html
https://2ch.hk/pr/res/1222346.html
После перезагрузки ubuntu слетает(или м.б происходит что-то другое) root пароль для mariadb Аноним 05/07/18 Чтв 20:32:34  1223203
Screenshot from[...].png (213Кб, 1920x1080)
Установил mariadb с помощью sudo apt-get install mariadb-server mariadb-client. Root пароль задать не предложили. Задал с помощь скрипта mysql_secure_installation. Вроде всё запускается. Но после перезагрузки субд шлет нахуй(первый пик).
Снёс и поставил снова. Пока всё работало(до перезагрузки) сделал так:
mysql -u root
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> update user set password=PASSWORD("my-new-cool-password") where User='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> update user set plugin='' where User='root';
MariaDB [mysql]> quit;
Вроде как сначала всё заработало после ребута. А может мне и показалось, т.к я отошёл покушать на полчаса. Вернулся и всё опять поломалось.
Попробовал сделать так - http://dedicatesupport.com/content/sbros-parolya-polzovatelya-root-v-mysql
Один хер всё ломается после перезагрузки.
В чем тут дело?
Аноним 07/07/18 Суб 17:57:03  1224159
>>1186288
двачую
Аноним 07/07/18 Суб 22:17:39  1224274
>>1186288
>>1224159

Похоже на:
http://dbdsgnr.appspot.com/
либо
https://www.dbdesigner.net/
Аноним 06/08/18 Пнд 16:51:59  1241965
гайз, хелпа нужна. Есть допустим запрос.
select
from table
where 1=1
and field in (value1, value2, value3)
;

Можно ли как-нибудь заебенить:
set @variable = (value1, value2, value3);
select

from table
where 1=1
and field in @variable
;

????
Аноним 08/08/18 Срд 12:39:11  1242920
>>1241965
Да, почти.
declare @variable as table (value int);
insert into @variable (value)
select 1
union all select 2
union all select 5

select
from table
where 1=1
and field in (select value from @variable)
Аноним 08/08/18 Срд 13:14:07  1242950
>>1242920
дело в том, что количество вэлью может меяться,
Я так понял то, что я хочу в mysql нельзя сделать(
Аноним 08/08/18 Срд 13:30:16  1242975
>>1242950
Напиши функцию, которая парсит строку и превращает ее в table expression, который и будет возвращать. Используй это функцию в запросе.


Топ тредов
Избранное