Я пытаюсь создать расписание для классов в MySQL. Столбцы - это дни недели, а строки - это временные интервалы (т. Е. 7:00 - 8:00). Я также пытаюсь иметь 30-минутные временные интервалы, и когда конкретный объект составляет 2 часа, он будет занимать 4 строки. Каждая ячейка содержит название курса и комнаты. Это часть небольшой программы, которую я пытаюсь разработать. Пока я знаю, какие данные вставлять, но я застрял на создании правильной схемы базы данных. На самом деле нужна логика о том, как это начать (например, какие типы данных я должен использовать). Благодаря!Схема и логика базы данных для этого
ответ
Как этот звук:
CREATE TABLE TimeTable (
ID int(8) NOT NULL AUTO_INCREMENT,
Subject varchar(32) NOT NULL,
Room varchar(8) NOT NULL,
StartTime datetime NOT NULL,
EndTime datetime NOT NULL,
Day enum('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday') NOT NULL,
PRIMARY KEY (ID)
);
Вы только хранить данные о предметы.
Другие материалы, которые вы упомянули, действительно относятся к любому языку, который вы используете для вывода данных. Вы не можете помещать интервалы в середине базы данных. Как сказал Damien_The_Unbeliever, базы данных не являются точными таблицами.
Надеюсь, что это имеет смысл.
У вас может быть составной первичный ключ вместо поля 'ID':' (StartTime, Day) '. –
Да, ты прав. Я пытаюсь вывести расписание в HTML, которое, я думаю, достаточно гибко, чтобы обрабатывать такую таблицу. Благодаря! – JKTA
@Cobra_Fast nice +1, но в качестве примечания стороны этот PRIMARY KEY имеет размер 12 или 13 байт на запись. если вы используете механизм хранения InnoDB, он добавит данные с индексом (в данном случае PRIMARY KEY) в каждый вторичный индекс. Это также причина, по которой InnoDB быстрее ищет Вторичные индексы против MyISAM, но для этого нужно больше дискового пространства и большего пула буферов. –
Вы можете установить один столбец на день (вы можете указать дни от 1 до 7), один столбец для времени начала и один столбец для времени окончания. Таким образом ваши запросы станут более простыми.
Пример:
Day | Start | Finish
-----------------------------
1 8:30 12:00
1 13:00 15:00
Это также пригодится, если вы не хотите застрять 30 минут.
Столбцы дни недели и строки являются интервалы времени (т.е. 7:00 - 8:00)
Это плохое начало. Ваши столбцы должны быть свойствами одного урока, а ваши строки должны быть разными уроками в течение недели.
Ваши колонки могут быть Day of Week
, Lesson of Day
, Duration
, Subject
, Room
, Teacher
, и так далее. В этом примере ваш первичный ключ будет (Day of Week, Lesson of Day)
.
Таким образом, если вы хотите расписание на определенный день, вы просто выберите все с помощью Day of Week = 2
, чтобы получить расписание во вторник, например.
Каждая ячейка содержит название курса и комнаты.
Это также не соответствует нормам нормализации. Вы должны всегда иметь не более одного значения для каждой ячейки.
действительно нужна логика о том, как получить это началось (то есть какие типы данных следует использовать)
Используйте самый интуитивный тип. При сохранении номера выберите integer
, при хранении нескольких символов выбрать varchar(n)
, при использовании много символов использовать text
и так далее ...
Спасибо за идею. То, что я подразумевал под столбцами «дни недели», было отображением, которое можно сделать с помощью HTML. Это не обязательно формат таблицы MySQL. Извините, если вопрос был запутан. – JKTA
Я бы создал его таким образом, чтобы он был нормализован и дает больше возможностей для расширения этого приложения. Таблицы (атрибуты):
timeslots(id, start_time, end_time)
subjects(id, name)
timetable(timeslot_id, subject_id)
Таблицы ссылок не нужны. Временных интервалов не будет достаточно, чтобы оправдать их использование. – ninty9notout
Это может быть необязательно в этом случае использования, однако, когда используется более сложный случай использования, 1 таблица базы данных (стиль таблицы) может оказаться недостаточной. Это просто для будущего расширения, вероятно, это пока не самое лучшее. – Jianhong
- 1. Структура и логика базы данных
- 2. Сущность и логика базы данных
- 3. Схема базы данных для базы данных кабелей
- 4. Схема базы данных для партнеров
- 5. Схема базы данных для футбола
- 6. Схема для многоязычной базы данных
- 7. Логика для проектирования базы данных
- 8. Схема базы данных для профиля и порядка
- 9. Схема базы данных для магазинов и ресторанов
- 10. Схема геолокации и базы данных
- 11. схема для большой базы данных
- 12. Схема базы данных для маршрута
- 13. Схема для многоязычной базы данных
- 14. схема базы данных Генератор
- 15. Схема расшифровки базы данных
- 16. Хорошая схема базы данных
- 17. Расширяемая схема базы данных
- 18. Схема базы данных EAV
- 19. Схема базы данных учета
- 20. Схема базы данных Firebase
- 21. Схема базы данных
- 22. Схема базы данных Mongoid
- 23. Схема данных Mongodb для этого случая
- 24. Схема базы данных EtherPad?
- 25. Схема базы данных для хранения данных SNMP
- 26. Последняя схема базы данных
- 27. Реляционная схема базы данных
- 28. изменилась схема базы данных
- 29. Схема реляционной базы данных
- 30. Схема базы данных MLS
таблицы базы данных не являются электронными таблицами. Ничего логически не отличается от того, что может быть сохранено в течение 7: 00-8: 00 в понедельник по сравнению с тем, что может быть сохранено в течение 7: 00-8: 00 в пятницу. Оба элемента должны храниться в одной колонке. Это будет указывать на один день хранения столбца и другие промежутки времени хранения и последний столбец, хранящий «то, что происходит в этот день в течение этого промежутка времени». –
@Damien_The_Unbeliever Я уже вставлял все данные с таким дизайном базы данных, о котором вы говорили выше. Затем я пытаюсь отобразить данные в формате расписания с помощью HTML. – JKTA