организация помощи в mysql: таблицы ПРОТИВ столбцов

#mysql #performance #user-tracking

#mysql #Производительность #отслеживание пользователей

Вопрос:

Причина

Я создаю систему для еженедельного отслеживания помощи / пунктуальности в музыкальной группе. Нас около 40 человек, и я хотел бы знать, как мне это организовать. Мне нужно сохранить 2 вещи, час прибытия и причину. У меня также есть в базе данных все участники, которые были частью группы, и я отмечаю, активны ли они в данный момент. Я не хочу удалять данные ни от одного участника, но новые участники могут попасть в группу.

Опции

  1. Создайте таблицу для каждого пользователя и запись для каждого дня, указав, во сколько он прибыл и причину:
    • 3 столбца
    • 1 строка в неделю
    • 40 таблиц (или более)
  2. Создайте таблицу для объяснения причин и таблицу для поступления:
    • 1 начальный 1 столбец в неделю
    • 40 строк в таблице (или более)
    • 2 таблицы
  3. Создайте таблицу на каждый день:
    • 3 столбца в таблице
    • 40 строк / таблица (или более)
    • 1 таблица в неделю

Итак … что более эффективно?

Ответ №1:

Попробуйте что-то вроде этого:

Таблица участников группы:

Идентификатор элемента группы (целое число), имя (varchar), фамилия (varchar), DateInserted (дата / время), Active (логическое значение / бит)

Таблица посещаемости:

AttendanceId (целое число), BandMemberId (целое число), Прибытие (дата / время), ReasonId (целое число)

ОБНОВЛЕНО ТАБЛИЦЕЙ ПРИЧИН:

Таблица причин:

ReasonId (целое число), Reason (varchar)

Таким образом, вы можете присоединить таблицу посещаемости к таблице BandMember на BandMemberId.


ОБНОВЛЕНО 5/25 НОВЫЕ ТРЕБОВАНИЯ:

Поскольку вам нужно хранить информацию о каждой репетиции / собрании, я бы сделал это следующим образом:

Таблица участника группы:

Идентификатор элемента группы (целое число), имя (varchar), фамилия (varchar), DateInserted (дата / время), Active (логическое значение / бит)

Таблица событий:

EventID (int), eventName (varchar), EventDate (datetime), EventTypeId (int)

Таблица EventType:

EventTypeId (int), EventDescription(varchar)

Таблица BandMemberEvent:

BandMemberEventId (int), BandMemberId (int), EventTypeId (int), TimeArrived (дата / время), ReasonId (int), EventID (int)

Таблица причин:

ReasonId (int), Reason(varchar)

Комментарии:

1. Неплохо. Вы можете добавить, что можно изменить reason на reasonId и создать отдельную Reason таблицу, поскольку возможные причины посещения, вероятно, повторяются, например ('write a song', 'test new quitar', 'jam', 'hang out', etc)

2. @dolphy Я просто спрашивал о посещаемости, у меня есть другая таблица со всеми данными (вот почему все столбцы по умолчанию равны 1) 1: 1.

3. Что я хочу знать, так это что более эффективно в mysql, иметь таблицу с большим количеством строк, таблицу с большим количеством столбцов или много таблиц

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

5. @txomon, ДжонД прав. Вы хотите, чтобы каждая таблица представляла некоторую сущность. Итак, в вашем случае у вас есть 3: участник группы, посещаемость и причина посещения. Каждая из них получает уникальный идентификатор. в таблице посещаемости вы получаете идентификатор для распознавания каждого участника группы и идентификатор для обозначения причины. Я бы посоветовал вам взглянуть на учебное пособие по SQL в Интернете или, возможно, прочитать книгу О’Рейли «Изучение SQL»