Бред

Ответить в тред Ответить в тред
# OP 17/11/20 Втр 21:53:52 2334095261
image.png 55Кб, 1400x690
1400x690
Сап, /б/!
Нуждаюсь в вашей помощи.
Дано: есть 2 таблицы. 1 таблица авторов - ИД, имя, фамилия, оценка. 2 таблица книг - ИД, название, ид-автора, оценка.
Заполнение этих таблиц идет собственно через 2 формы. Если создание записи автора может макака написать, то с записью книги я уже сижу который день. Я смог добавить в лист выбора полное имя автора, но запись не идет. Также выводить таблицу для чтения нужно будет вместо ИД выдавать полное имя.

Верю в силу двачика.

Побампаю несколько раз, надеюсь взлетит и мне поможет величайший
17/11/20 Втр 21:54:40 2334095812
image.png 54Кб, 400x267
400x267
бамп
17/11/20 Втр 21:55:10 2334096163
image.png 351Кб, 1200x900
1200x900
бамп
17/11/20 Втр 21:55:40 2334096484
image.png 78Кб, 1280x720
1280x720
бамп
17/11/20 Втр 21:56:14 2334096885
image.png 510Кб, 580x435
580x435
бамп
17/11/20 Втр 21:56:48 2334097226
image.png 545Кб, 604x401
604x401
бамп грустный
17/11/20 Втр 21:57:20 2334097547
>>233409526 (OP)
Нихуя не понял. Тебе в итоге что нужно получить?
17/11/20 Втр 21:57:58 2334098018
>>233409754
sql запрос корректный, как записать из формы, хотя бы это
17/11/20 Втр 21:58:29 2334098409
>>233409801
Из какой формы? Хотя бы что?
17/11/20 Втр 21:59:26 23340991310
Что такое p_id?
Аноним 17/11/20 Втр 22:00:41 23341000011
>>233409801
ну пишешь INSERT, указываешь id автора, покаж свой запрос
Аноним 17/11/20 Втр 22:01:11 23341003612
> p_id
> 2, 1 в одной ячейке
Дебил блядь Дружище, так не делают, неудивительно что у тебя не получается. Посмотри что такое 3 нормальные формы.
Аноним 17/11/20 Втр 22:01:22 23341005013
17/11/20 Втр 22:01:35 23341006514
image.png 15Кб, 401x283
401x283
>>233409840
Вот форма, имена берутся из sql таблицы авторов, мне надо из этих имен вырвать их ИД и закинуть во вторую таблицу
17/11/20 Втр 22:01:59 23341009515
>>233410050
Ты у меня спрашиваешь? Ты ебанутый? Что такое FK автора?
17/11/20 Втр 22:03:19 23341019416
>>233410000
$sql = "INSERT INTO books (title, p_id, grade) VALUES (:title, :p_id, :grade)";
Аноним 17/11/20 Втр 22:03:35 23341021717
>>233410065
Тебе нужна третья таблица со столбцами ID, книга, автор, нельзя писать в одной ячейке два значения.
17/11/20 Втр 22:03:56 23341024018
>>233409913
ID автора из таблицы авторов
Аноним 17/11/20 Втр 22:04:38 23341029019
>>233410240
А что такое тогда id нахуй?
17/11/20 Втр 22:05:33 23341037320
17/11/20 Втр 22:05:41 23341038821
>>233410290
>А что такое тогда id
«Иди нахуй»
Аноним 17/11/20 Втр 22:05:54 23341040622
>>233409526 (OP)
попробуй замутить это с помощью pandas на питоне.
17/11/20 Втр 22:06:48 23341047123
image.png 35Кб, 570x328
570x328
>>233410217
вдобавок к этим двум нужна еще одна?

17/11/20 Втр 22:07:55 23341055824
>>233410065
SELECT
id
FROM
authors
WHERE
fname = SPLIT_STRING(та хуйня, что в форме)[0]
AND
lname = SPLIT_STRING(та хуйня, что в форме)[1]

Че-то типа того
Не?
Аноним 17/11/20 Втр 22:09:20 23341065225
>>233410217
Он дело говорит, но можешь попробовать костыль запилить, типа p_id1, p_id2
17/11/20 Втр 22:10:46 23341076226
>>233410558
да, только я хз как их записать сразу с названием и оценкой
Аноним 17/11/20 Втр 22:11:05 23341078627
>>233410471
Нужна таблица с двумя вторичными ключами, чтобы можно было к одной книге несколько авторов приделать. Будет

Id book_id user_id
1 1 1
2 1 2
3 1 3

т.е. книгу 1 трем людям 1, 2, 3 приписываешь
17/11/20 Втр 22:11:41 23341083928
>>233410762
Названием и оценкой чего? Авторов или книг?
17/11/20 Втр 22:12:47 23341091329
>>233410839
Название книги, ИД авторов, оценка, которую читатель книге ставит
17/11/20 Втр 22:13:09 23341094230
>>233410217
Двачую этого господина. Если тебе нужно выводить несколько авторов, то пили author_1_id, author_2_id
Аноним 17/11/20 Втр 22:17:42 23341131731
>>233410913
Вставляешь двух авторов, потом книгу, потом отношение в третью таблицу выше.
Аноним 17/11/20 Втр 22:29:08 23341225232
Аноним 17/11/20 Втр 22:29:30 23341228033
>>233410942
Костыль, потом будет криво искать все книги одного автора, индексы сложнее будут работать
Аноним 17/11/20 Втр 22:42:44 23341325134
>>233410406
>Делать круд на пандас
да ты поехал, чел.
Аноним 17/11/20 Втр 22:50:45 23341384035
>>233410406
Дата саентист от скиллбокса в треде
Аноним 17/11/20 Втр 22:52:05 23341393636
>>233409526 (OP)
А как грейд автора связан с грейдом книг?
17/11/20 Втр 22:53:04 23341401137
>>233413936
никак, это разные оценки.
17/11/20 Втр 22:54:52 23341415738
image.png 14Кб, 856x255
856x255
ОП в треде.
смог намутить писанину в таблицу, осталось разобраться, чтобы ИД писался нормально (а то сейчас несостыковки), ну и собственно, чтобы вместо ИД авторов фулл имя автора писалось.
Спасибо всем, кто откликнулся
Аноним 17/11/20 Втр 22:57:04 23341429539
>>233414157
ты id авторов через запятую пишешь в строковую колонку?
Аноним 17/11/20 Втр 22:57:10 23341429740
>>233414157
Чел, ты так ничего и не понял...
:-(
Нельзя так таблицы строить, препод тройку поставит.
Анонов не слушаешь, так хоть про нормальные формы сходи почитай.
Аноним 17/11/20 Втр 22:59:36 23341446941
>>233410194
"INSERT INTO books (title, p_id, grade) VALUES (:title, (SELECT id FROM authors WHERE fname='fname' and lname='lname'), :grade)"
Аноним 17/11/20 Втр 23:00:19 23341452442
Аноним 17/11/20 Втр 23:01:12 23341457843
Делаешь 3 таблицы
author
id (pk, auto-incremented)
first name
last name
rating

book
id (pk, auto-incremented)
title
rating

author_book
author_id
book_id

когда создаёшь книгу добавляешь 2 записи, в book и в author_book. Verstehst?
Аноним 17/11/20 Втр 23:02:39 23341468644
>>233414578
Он не понимает как ему айдишник получить даже, а ты ему предлагаешь таблицы усложнить
Аноним 17/11/20 Втр 23:04:31 23341481245
>>233414578
Бля, чел, ты ебанутый? Многое ко многим юзать, когда ТОЧНО ИЗВЕСТНО, что авторов два или один? Тут просто два поля и два один ко многим.
Аноним 17/11/20 Втр 23:08:14 23341505246
>>233409526 (OP)
Тебе бы в в форме добавить какое-то скрытое поле, с айдишником выбранного автора. Его и будешь использовать в запросе на добавление автора к книге.
Но все айдишники в одну колонку я бы не запихивал, это хуйня. Лучше всего так как этот пишет >>233414578
Но ты сперва разберись как ты айдишник будешь получать, чтобы лишних подзапросов не делать.
Аноним 17/11/20 Втр 23:08:43 23341508847
>>233414812
>Бля, чел, ты ебанутый? Многое ко многим юзать, когда ТОЧНО ИЗВЕСТНО, что авторов два или один? Тут просто два поля и два один ко многим.

потом из-за таких программистов видишь в легаси базах custom_field_1, custom_field_2, customer_field_1000.

И запросы у тебя будут вида "select * from book where author1_id = X or author2_id = X". Подумал как индексы будут работать на больших объемах?

17/11/20 Втр 23:09:42 23341513948
>>233414297
препод такое задание и дал, 2 таблицы, 2 формы
17/11/20 Втр 23:10:13 23341516549
>>233414524
так а если там несколько авторов с одинаковыми именами?
Аноним 17/11/20 Втр 23:11:17 23341523950
>>233415165
А зачем нам несколько авторов с уникальными именами? Констрейнт сделать на уникальность сочетания имени и фамилии.
Аноним 17/11/20 Втр 23:11:59 23341528751
>>233415088
На каких объемах, сумасшедший? Это обычная лаба, ты же понимаешь, да? Тут всего два автора и микроскопический объем. Нахуя городить промежуточную таблицу?
Аноним 17/11/20 Втр 23:12:37 23341532452
>>233415052
>Но ты сперва разберись как ты айдишник будешь получать, чтобы лишних подзапросов не дела

и сейчас самое время рассказать про то, как добавить книгу и связь в одной транзакции, чтобы поддержать атомарность
Аноним 17/11/20 Втр 23:13:29 23341538053
>>233415287
>На каких объемах, сумасшедший? Это обычная лаба, ты же понимаешь, да? Тут всего два автора и микроскопический объем. Нахуя городить промежуточную таблицу?

Чтобы научиться правильно моделировать данные в реляционной базе, не?
17/11/20 Втр 23:15:15 23341551154
>>233415239
суть в том, что потом это прогонять тестером надо, который несколько раз создает одинаковые записи, и на каждую запись ему нужно выдать верный id
Аноним 17/11/20 Втр 23:16:05 23341556955
>>233415239
Я бы одно поле сделал, name и один констрэйнт. Зачем их разделять... Тем более могут быть middle name
Аноним 17/11/20 Втр 23:17:16 23341564156
>>233415380
Чтобы научиться правильно моделировать данные -- надо делать это многократно и чтобы твою модель обсирали знающие люди. А просто с самого начала загрузить сложными вещами это долбаебизм
Аноним 17/11/20 Втр 23:17:25 23341565257
>>233415139
>препод такое задание и дал, 2 таблицы, 2 формы
и 2 автора у книги? Пиздос, это какое учебное заведение?
Аноним 17/11/20 Втр 23:18:19 23341570758
Аноним 17/11/20 Втр 23:18:54 23341574559
>>233415511
Хуевый это тестер, надо написать тестер с разными именами.
Но можно и с одинаковыми, но тогда тебе надо сразу доставать айдишник при селекте и каким-то образом его скрывать. Или можно нахуй не скрывать, а просто выводить "Семен Лопатович (11)", где 11 - это айдишник. Потом распарсить строку регекспом и забрать айдишник из неё. Это если тебе совсем поебать
Аноним 17/11/20 Втр 23:19:20 23341577660
Аноним 17/11/20 Втр 23:20:15 23341583961
>>233415641
>Чтобы научиться правильно моделировать данные -- надо делать это многократно и чтобы твою модель обсирали знающие люди. А просто с самого начала загрузить сложными вещами это долбаебизм

Мне прямо не хочется тебе грубить, но это не правильно. Хочеть простую задачу - ставь задачу так, чтобы был 1 автор у книги. Будет тебе простое 1:n. А делать n:m через несколько столбцов - за это у нас во дворе пиздят только в путь
17/11/20 Втр 23:20:28 23341585462
Аноним 17/11/20 Втр 23:21:09 23341590363
>>233415324
BEGIN TRANSACTION

твои ебучие запросы

PROFIT;
COMMIT;
Аноним 17/11/20 Втр 23:21:47 23341594264
>>233415903
как id книги получишь, транзакция то не закоммичена ?
Аноним 17/11/20 Втр 23:23:55 23341608065
>>233415942
Навскидку, можно взять айдишник последней записанной книги и прибавить 1. Но тут получается race condition, если несколько людей одновременно будут записывать.
Давай рассказывай, как правильно
Аноним 17/11/20 Втр 23:27:02 23341626866
>>233416080
>Навскидку, можно взять айдишник последней записанной книги и прибавить 1. Но тут получается race condition, если несколько людей одновременно будут записывать.
>Давай рассказывай, как правильно

В разных базах есть средства получить в транзакции айдишник последней вставленной, но не закоммиченной записи в таблице в ЭТОЙ транзакции. База резервирует айдишник, если транзакция откатывается, то он не переиспользуется и будет разрыв в айдишниках. В классическом sql такого нет, надо смотреть конкретную базу данных.

Поэтому нельзя использовать auto increment id для вещей типа уникальный номер инвойса, потом клиент будет рассказывать налоговой, почему у него прогалы в отчетности
17/11/20 Втр 23:29:33 23341644367
Пиздец оп дегенерат. Ты вообще в знаешь что такое связи и какими они бывают? Про нормальные формы я вообще молчу. Ахуеть конечно. Хранить два айдишника в одном поле аххаах
Аноним 17/11/20 Втр 23:34:49 23341675368
Аноним 17/11/20 Втр 23:39:27 23341705069
>>233416268
Интересный момент. Ну я думаю, что опу до таких тонкостей очень далеко
Аноним 17/11/20 Втр 23:42:06 23341722570
>>233410217
ОП, гугли связь многие-ко-многим. Поймёшь зачем нужна третья таблица.
первые несколько постов вообще не понимал о чем речь, а когда рассмотрел на пике несколько внешних ключей в одной строке - не сразу поверил что так можно спроектировать
Аноним 17/11/20 Втр 23:42:31 23341724571
>>233417050
Ну да, это я так. Рано или поздно с этим сталкиваешься в работе
Аноним 17/11/20 Втр 23:45:38 23341743272
>>233417050
А да, забыл добавить, видел решения, где обходили это так: не юзаем авто инкрементальные id, а сами на сервер сайде генерим GUID. Тогда ты знаешь ID до вставки в базу и все просто.
По мне - уебанство, удачи службе поддержки которая будет ебаться с guid'ами при разборках проблем вместо обычных чисел. Ну и размер таблиц, производительность тоже будет хуже
Аноним 17/11/20 Втр 23:52:59 23341787673
>>233417432
Ууу, сука. Ты мне своими гуидами ёбанный ФИАС напомнил.
Как вспомню - аж трясёт.
Аноним 18/11/20 Срд 01:14:56 23342220974
Кладезь мудрости дизайна баз данных читаю в этом тредю я.
Сам вставлял в таблицу колонки с константами 0 и 1, двойные дублирующие колонки и вообще клал на нормальные формы. Энтерпрайз, 300к/с.
Аноним 18/11/20 Срд 01:17:36 23342232275
>>233409526 (OP)
У тебя, блять, на фронте база? Ты ебанутый?
Аноним 18/11/20 Срд 01:22:08 23342253776
>>233409526 (OP)
А вообще, если по делу - греби айдишник по имени, лол. Что сложного-то?
У тебя навряд ли база будет на 100500 авторов и поиск по пару-мегабайтной базе будет проходить моментально. Не красиво, да, но для решения задачи самое то не будешь же ты блять эластиксёрч прикручивать. У тебя даже база на фронте, ёбаный ебать.
Можешь ещё угореть и подгружать сразу ID и ФИО всех авторов, а в поле выдавать только ФИО. Подзаебаться придётся конкретно тебе ты явно курсач какой-то пилишь. Можно даже по совету >>233415052 попробовать, но не слушай >>233414578 - он долбоёб клинический
Аноним 18/11/20 Срд 01:23:29 23342259277
>>233410065
Пиздос, а если авторов у тебя три? А если пять? Ты этот момент продумал?
Аноним 18/11/20 Срд 01:25:04 23342266078
>>233416080
А сколько у нас одновременно ОПЕРАТОРОВ ИНФОРМАЦИОННОЙ СИСТЕМЫ?
Если там одна баба Зина сидеть будет, то похую вообще и не заморачивайся над этой хуетой
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов