Как обрабатывать заблокированные учетные записи в MySQL - PullRequest
0 голосов
/ 15 мая 2018

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

Я очень хорошо знаком с написанием запросов sql / ddl в существующей базе данных (строго консоль mysql, Spring MVC, Boot, Java и т. Д.). Но с тех пор, как в колледже мне пришлось учиться нормализации, 2nf, 3nf, 1: 1, 1: многие и т. Д. Это был унизительный опыт, если не сказать больше, пытаться освежить свою память с помощью теорий баз данных, изученных годами. до и пытаясь применить концепции.

Я создал модель, которая, по крайней мере, мне кажется, соответствует потребностям пользователей

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

Вариант использования :

1. Users holding office in a particular year can sign into the web 
   application, and view their information *(Name, Account Status, 
   Ordained, Team number, Calendar of their assigned duty days)*. 
   They can only update their personal info (name, address, 
   phone). Note: The account will be created for users.

2. Director, Asst. Director and System admin can log into the web 
   application (admin dashboard) and see a data table of all users, 
   w/ all relevant fields(view). This group has full read-write 
   privileges.

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

1 Ответ

0 голосов
/ 15 мая 2018

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

CREATE TABLE users (
  user_id SERIAL,
  -- ...
);
-- ...
CREATE TABLE user_updates_audit (
  audit_id SERIAL,
  user_id INT NOT NULL,
  audit_timestamp TIMESTAMP NOT NULL default now(),
  -- just free form text describing applied update (maybe old value, new value, etc)
  audit_text VARCHAR(1024) NOT NULL
);

ALTER TABLE user_updates_audit ADD CONSTRAINT user_updates_audit_pk PRIMARY KEY (audit_id);
ALTER TABLE user_updates_audit ADD CONSTRAINT user_updates_audit_user_id_fk FOREIGN KEY (user_id) REFERENCES users;

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

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

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

...