@Myshka

Нужен совет по пострению БД?

Привет :3
Нужно спроектировать базу данных бесконтактных карт метрополитена(RFID-меток) для этого есть четыре таблицы со следующими связями.
Таблица cards
id_card - номер карты
cash - текущее количество поездок
station - станция на которой последний раз ею пользовались
time - время последнего использования
status - рабочаю\не рабочая

Таблица station - перечисляются все станции метрополитена.
Таблица history_add - история пополнения карт
Таблица history - история передвижения носителей карт

4e2523250e44456b8fdd7bf9668e1726.png

Дайте, пожалуйста, совет как "нормализировать данные"(привести их к какой-то из НФ). И что б Вы ещё сюда добавили :3
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 2
@entermix
cards
id (INT), status (BOOL), ...
stations
id (INT), name (VARCHAR), ...
operatioons
id (INT), station_id (INT), operation (INT) (+1/-1, etc), balance (INT), created (INT)...

station - станция на которой последний раз ею пользовались

time - время последнего использования

SELECT FROM `operatioons` WHERE `station_id` = {STATION_ID} ORDER_BY created DESC LIMIT 1

Выведет последнюю операцию с картой, отсюда можно взять ID станции и время, когда картой воспользовались (пополнили счет/прошли турникет)
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
IMHO, полностью нормализованная форма будет содержать всего две таблицы:
stations (id, name);
events (card, event, station_id, sum, timestamp)

где event: ('активация', 'приход', 'расход', 'блокировка', 'возврат', 'списание')
Но здесь есть смысл в частичной денормализации и добавлении поля balance и, если возможны какие-то операции с заблокированной картой, то поля state.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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