Как вы уменьшаете неотъемлемый риск команды из одного человека? [закрыто]

Перво-наперво: студент не должен быть в состоянии записаться несколько раз на один и тот же курс + нет смысла, чтобы студент записывался ни на какой курс или нулевой студент записывался на курс (если у вас нет веских причин для она).
UNIQUE + NOT NULL подлежит определению. Давайте использовать primary key.

create table enrollment (
    student integer references students(id),,
    course varchar(6) references courses(num),
    PRIMARY KEY (student, course)
);

С точки зрения нормализации БД ваш подход не годится: enrolled не зависит (только) от ключа.
Лучшее решение - вычислить его:

SELECT courses.*,
(SELECT COUNT(*) FROM enrollment WHERE enrollment.course = courses.num) AS enrolled
FROM courses

В качестве альтернативы, вы можете вставить и обновить таблицу в 1 выражении:

WITH InsertStatement AS (
INSERT INTO enrollment VALUES(1, 'CS1501')
RETURNING course
)
UPDATE courses
SET enrolled = enrolled + AddedStudents
FROM (SELECT course, count(*) AS AddedStudents FROM InsertStatement GROUP BY course) Aux
WHERE courses.num = Aux.course

Я могу немного рассказать о почему ваш триггер не работает.
Поведение по умолчанию для триггера должно выполняться после каждого оператора. Ваш код требует указания FOR EACH ROW.

Переопределите свой триггер и посмотрите, решит ли он вашу проблему. Тем не менее, я НЕ гарантирую, что это будет работать с одновременными вставками (именно поэтому 80% моего ответа о том, чтобы избежать использования триггера).

8
задан Joel Coehoorn 9 December 2011 в 18:56
поделиться

5 ответов

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

Кроме того, придерживайтесь основ: K.I.S.S. Сохраните свой дизайн кода максимально простым, сохраните свои классы простыми, следуйте за Единственным Принципом Ответственности и прежде всего, избегайте дублирования (который будет значительно вести Ваши проекты). Используйте каждый ресурс, который Вы имеете: форумы, другие программисты в других компаниях, друзья из школы, независимо от того, что Вы имеете в наличии для Вас. Даже имея наставника можно отправить, электронная почта к полезна.

6
ответ дан 5 December 2019 в 06:24
поделиться

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

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

4
ответ дан 5 December 2019 в 06:24
поделиться

При распознавании этого, поскольку проблемой являются больше, чем большинство "младших программистов" смогло бы сделать :)

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

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

Истина - то, что документация не должна только помогать другим знать то, что делает Ваш код. Это помогает Вам также. Управление исходным кодом не должно только позволять нескольким людям работать над проектом и изменениями слияния, оно помогает производительности (в том смысле, что можно легко вернуться изменения), осуществляет резервные копии и дает Вам хорошее отслеживание того, где Ваше время и усилие были проведены.

13
ответ дан 5 December 2019 в 06:24
поделиться

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

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

Лучше, чтобы можно было сделать.

1
ответ дан 5 December 2019 в 06:24
поделиться

StackOverflow полон доступных и согласных людей, чтобы помочь решить проблемы и дать совет.

Кроме этого, быть готовым сделать ошибки и учиться от них.

О, да, и получите копию Завершенного Кода!

2
ответ дан 5 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: