Сохранен 55
https://2ch.hk/b/res/215861974.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 19/03/20 Чтв 00:44:45 #1 №215861974 
image.png
Здарова, аноны. В /pr/ бд треде никого, поэтому запрошу помощь здесь /b/ратья.
У меня есть БД "студенты сдают проект".
Основные сущности на пикрилейтед. Только вопрос вот в чём. У меня по ТЗ препод (teacher) может быть и руководителем (curator) проекта, и проверяющим (comission_member). Как рациональнее всего сделать разделение учителей на кураторов и участников комиссии? Обяз ли для этого создавать подсущности, которые будут хранить только айди? Хелп

Куратор просто чел, числящийся в проекте. Участник комиссии ставит оценку проекту: в таблицу project_mark заносится 3-5 оценок от разных челов из комиссии
Аноним 19/03/20 Чтв 00:52:56 #2 №215862381 
c4722031-cbf2-4e90-8549-0cc56a00bb71.jpg
>>215861974 (OP)
Есть два подхода по Кнуту и по Дейту.
1. Создать до поля кортежи для кураторов/принимающих.
2. Создать 2 сущности мапинга : Кураторы и Принимающие. Каждая со своим id и внешним ключом для преподавателя.
Я всегда предпочитал второй: он естественный, его проще модифицировать и он стремиться к первой нормальной форме, а абстракции не протекают.
Аноним 19/03/20 Чтв 00:55:08 #3 №215862485 
>>215862381
2ой вариант прямо как у меня на пикче?
Аноним 19/03/20 Чтв 00:56:17 #4 №215862538 
>>215862381
Upd studentid В проекте не нужен.
Аноним 19/03/20 Чтв 00:59:09 #5 №215862664 
>>215862485
Да.
Допустим завтра тебе скажут, что членом комиссии может быть другой студент, тогда все что тебе нужно будет сделать, это добавить одно поле признак в Сущность Принимающего.
Аноним 19/03/20 Чтв 00:59:43 #6 №215862686 
>>215861974 (OP)
http://design-pattern.ru/patterns/class-table-inheritance.html
Аноним 19/03/20 Чтв 01:05:04 #7 №215862923 
>>215862664
>>215862686
Спасибо огромное.
Аноним 19/03/20 Чтв 01:05:17 #8 №215862936 
>>215861974 (OP)
у тебя есть объекты, какие-то люди. иногда можно считать, что объекты разные, несмотря на то что люди, например что преподы и ученики не пересекаются, поэтому ты берешь одинаковых в целом людей, но суешь в две таблицы.

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

бесполезные таблицы в одну колонку бесполезны, можешь ссылаться куда надо сразу. будет понятно что куратор это такой препод. а под звездочку проверяющих связка к преподам еще раз.
Аноним 19/03/20 Чтв 01:06:03 #9 №215862974 
>>215862686
В первой ссылке паттерн используется, если поля разные. Для каждого типа своя таблица.

Если поля одинаковые или почти одинаковые, то таблица одна для всех, но указывается тип в столбце. http://design-pattern.ru/patterns/single-table-inheritance.html
Аноним 19/03/20 Чтв 01:11:13 #10 №215863226 
>>215862974
При этом наследовании я в потомках храню лишь ссылку на субтаблицу? Например:
В данном случае у меня будет
teacher (int id, String name, Date hiringDate)
и два наследника у которых будет одно поле-ссылка на teacher, верно? (куратор от комиссии полями не отличается) Выходит это single table inheritance?
Аноним 19/03/20 Чтв 01:11:50 #11 №215863254 
>>215863226
>куратор от комиссии полями не отличается
lol
Аноним 19/03/20 Чтв 01:17:36 #12 №215863522 
>>215863226
STI это когда на всех одна таблица. Там поля всех сущностей плюс поле, в котором указывается тип данных.

У тебя препод может быть всеми сразу или только препод-куратор или препод-комиссия?
Аноним 19/03/20 Чтв 01:19:49 #13 №215863611 
>>215863522
он может быть только:
п-куратор, п-комиссия или п-куратор-комиссия.
Именно из-за того, что он может быть и куратором и комиссией одновременно у меня и возник вопрос, как рациональнее сделать разделение.
Аноним 19/03/20 Чтв 01:23:46 #14 №215863759 
>>215863611
Можно сделать сущность тичер и роли добавить. В методе, который ставит оценку надо будет проверять является ли препод оценщиком.
Наследование не нужно тогда.
Аноним 19/03/20 Чтв 01:26:37 #15 №215863900 
>>215861974 (OP)
а какие кейсы вообще по этой базе гонять будут? ну т.е. ты сейчас городишь какую-то статику, а транзакции какие нужны?
Аноним 19/03/20 Чтв 01:27:34 #16 №215863952 
>>215861974 (OP)
ну т.е. понятно что никакие, и это упражнение на рисование стрелочек, но вдруг в задании чото есть об этом. или может аналитика какая нужна, какие вообще запросы должны работать по этой схеме
Аноним 19/03/20 Чтв 01:28:31 #17 №215864002 
>>215863759
Я так раньше подумал, сразу впихнуть в тичера два поля булевых: является ли куратором и является ли комиссией.
Аноним 19/03/20 Чтв 01:30:28 #18 №215864098 
>>215863900
Я в рамках курсача веб приложуху делаю на джаве. Транзакции никакие не нужны. Мне просто нужно сделать простенькую бд и подгружать данные запросами. По сути проект состоит в том, чтобы сделать графический интерфейс для работы с бд.
Аноним 19/03/20 Чтв 01:30:45 #19 №215864117 
>>215864002
откровенная поебень
Аноним 19/03/20 Чтв 01:31:54 #20 №215864175 
>>215864002
точнее как, поебень с правом на жизнь, на такой поебени видел более чем достаточно, но без необходимости не надо этим заниматься. будет у тебя человек в двух комиссиях, и что.
Аноним 19/03/20 Чтв 01:33:09 #21 №215864217 
>>215864175
или куратором в двух проектах. положил FK как в букваре и норм.
Аноним 19/03/20 Чтв 01:33:46 #22 №215864243 
>>215861974 (OP)
Короче, коль у тебя есть люди то запиливай модель "Физическое лицо", суть в том что студент может завтра стать преподом а препод студентом. А так у тебя будет одно ФЛ а дальше уже просто внешние ключи у модели препод, студент, небо, аллах.
Аноним 19/03/20 Чтв 01:36:33 #23 №215864364 
>>215864243
Т.е. сделать одну таблицу с людьми выделив общие свойства и создать таблицы наследники в лице студента, неба и аллаха?
Аноним 19/03/20 Чтв 01:37:00 #24 №215864384 
>>215861974 (OP)
а почему в студенте один проект? ты пока учишься у тебя до ебеней проектов. пусть их история по годам в project лежит, сделай связь с проектами m-n
Аноним 19/03/20 Чтв 01:37:58 #25 №215864430 
>>215864384
Это дипломный проект. По тз 1:1 студент и проект
Аноним 19/03/20 Чтв 01:38:37 #26 №215864461 
>>215864430
okay
Аноним 19/03/20 Чтв 01:38:59 #27 №215864483 
>>215864243
Но вопрос в другом:
>препод (teacher) может быть и руководителем (curator) проекта, и проверяющим (comission_member). Как рациональнее всего сделать разделение учителей на кураторов и участников комиссии?
Аноним 19/03/20 Чтв 01:39:42 #28 №215864513 
>>215861974 (OP)
а куратор у проекта или у студента? они конечно 1-1, но все равно интересно.
Аноним 19/03/20 Чтв 01:41:27 #29 №215864600 
>>215864513
куратор 1:n проект
Аноним 19/03/20 Чтв 01:42:00 #30 №215864628 
>>215864513
они= студенты-проекты
Аноним 19/03/20 Чтв 01:44:46 #31 №215864753 
>>215864364
Да
Аноним 19/03/20 Чтв 01:45:25 #32 №215864777 
>>215864002
Надо сделать таблицу ролей и связать с тичером многие ко многим. Когда тичер будет что-то делать, то проверять есть ли у него группа для этого действия.
Аноним 19/03/20 Чтв 01:45:26 #33 №215864779 
>>215864753
Ну а как быть с >>215864483
Аноним 19/03/20 Чтв 01:46:13 #34 №215864814 
>>215864483
Так делаешь many to many где будут внешние ключи на ФЛ, группу, небо, аллаха.
Аноним 19/03/20 Чтв 01:47:00 #35 №215864841 
>>215864483
взять вариант на оппике, выкинуть прокситаблицы левые, и будет норм.
Аноним 19/03/20 Чтв 01:47:59 #36 №215864882 
>>215864841
Что такое прокситаблицы?
Аноним 19/03/20 Чтв 01:49:35 #37 №215864944 
>>215864779
Кстати идея с моделью ФЛ показала себя на практике. Делал для школы бдшку и спустя пару лет один из учеников внезапно стал родителем и вот в таблице ФЛ одна запись и в связке ученик и родитель по одной.
Аноним 19/03/20 Чтв 01:52:37 #38 №215865071 
>>215864944
Я уже понял, что это хорошая модель. В ООП паттерн фабрика точно такую же схему описывает
Аноним 19/03/20 Чтв 01:56:16 #39 №215865224 
laba1.png
>>215864882
что-то такое
Аноним 19/03/20 Чтв 01:57:28 #40 №215865268 
laba1.png
>>215865224
так чуть лучше
Аноним 19/03/20 Чтв 02:01:07 #41 №215865423 
>>215861974 (OP)
еще можно про lifetime подумать, в каком порядке что появляется, что без чего может быть.
есть студенты без проекта, есть проекты без студента, есть проекты без оценки. у оценки всё обязательное, проект без препода -хз. остальное вообще говоря тоже хз бывает по заданию или нет.
Аноним 19/03/20 Чтв 02:01:50 #42 №215865452 
студент без группы наверное нет, группа без студентов вообще говоря да.
Аноним 19/03/20 Чтв 02:03:34 #43 №215865522 
>>215865423
>>215865452
обычно такие вещи либо есть в тз, либо если его писать мудила, то надо уточнять у заказчика.
опять же, обычно на практике это по барабану, но если нужна картинка с правильными стрелочками, то стрелочки должны быть правильные.
Аноним 19/03/20 Чтв 02:04:44 #44 №215865568 
>>215865268
Спасибо, понял
Аноним 19/03/20 Чтв 02:07:05 #45 №215865677 
>>215865522
Это же проект уровня студента 2го курса универа. У меня тз из темы и трёх пунктов-ограничений, ёпту. У нас преподы не особо-то и компетентны. Не у кого помощи спросить. Мой препод вообще предлагал ещё средний бал каждого проекта хранить в таблице. :/
Аноним 19/03/20 Чтв 02:08:51 #46 №215865753 
>>215865677
если бы у него было миллион проектов в день, то может быть это начало иметь смысл.
Аноним 19/03/20 Чтв 02:15:27 #47 №215865996 
>>215865753
также стоит отметить, что у если студенты-проекты 1-1, то средний балл про проекту равен одной оценке за него.
Аноним 19/03/20 Чтв 02:19:27 #48 №215866138 
>>215865996
Каждый проект оценивает 3-5 челов комиссии, оттуда и средний балл
Аноним 19/03/20 Чтв 02:20:55 #49 №215866181 
>>215866138
а комиссия как сущность не нужна?
Аноним 19/03/20 Чтв 02:23:54 #50 №215866287 
>>215866181
Член комиссии - это роль, как и куратор.
Просто у меня к 1 проекту будет 3 записи от разных челов комиссии с оценкой.
Аноним 19/03/20 Чтв 02:32:44 #51 №215866582 
>>215866287
ну, у тебя получается что некие абстрактные члены комиссий прилетают из вакуума и оставляют оценки в журнале. обычно это не так работает. есть каферда, там есть преподы, из них собирается сборище на студентов от преподов этой же кафедры и они друг другу ставят оценки. видимо тебе ничего такого делать не надо, и хорошо.
Аноним 19/03/20 Чтв 02:35:24 #52 №215866677 
Вы называете объект сущностью?
Аноним 19/03/20 Чтв 02:39:49 #53 №215866822 
>>215866677
А-а, entity object называете сущностью. Охотники за привидениями
Аноним 19/03/20 Чтв 02:43:49 #54 №215866948 
>>215866582
Вот, если интересно, задание:
Тема: сдача студентами дипломных проектов.

Объекты: студенты, группы, дипломные проекты, руководители, члены ГЭК.

Для моделирования задачи необходимо хранить следующую информацию:

ФИО студента
№ группы
№ зачетной книжки
Тема дипломного проекта
Итоговая оценка за дипломный проект
ФИО руководителя дипломного проекта
Оценки всех членов ГЭК за дипломный проект

Дополнительные условия:

один студент защищает только одну дипломную работу;
каждую дипломную работу оценивает не менее 3 членов ГЭК;
член ГЭК может одновременно быть руководителем дипломного проекта.

Аноним 19/03/20 Чтв 03:00:44 #55 №215867428 
laba1.png
>>215866948
>члены ГЭК
вообще я бы
1. ввел некую ебань под названием коммисия, напихал в них преподов
2. сделал штуку под названием "сдача проекта" и под эту сдачу насовал детьми оценки, от членов комиссии.

и дальше эта схема должна коммутировать, в том плане что тебе оценку ставил чувак, который был в комиссии на сдаче
comments powered by Disqus

Отзывы и предложения