Я создаю приложение, которое позволит пользователю записывать еженедельные действия в течение 6 недель.Каждая неделя имеет 3 контрольных показателя для записи, вот пример:
Week 1
+------------+-----------+------------+-----------+
| Day | Minutes | Location | Miles |
+------------+-----------+------------+-----------+
| Monday | | | |
+------------+-----------+------------+-----------+
| Tuesday | | | |
+------------+-----------+------------+-----------+
| Wednesday | | | |
+------------+-----------+------------+-----------+
| Thursday | | | |
+------------+-----------+------------+-----------+
| Friday | | | |
+------------+-----------+------------+-----------+
| Saturday | | | |
+------------+-----------+------------+-----------+
| Sunday | | | |
+------------+-----------+------------+-----------+
Это повторяется для каждой недели до 6.
В моей плоской таблице у меня есть следующее:
UserID |Имя пользователяНеделя 1 день 1 минута |Неделя 1 день 1 Местоположение |Неделя 1 день 1 миля |Неделя 1 день 2 минуты |Неделя 1 день 2 Местоположение |Неделя 1 день 2 мили ETC ...
X 7 в течение недели, а затем X 6 в течение 6 недель.
Я пытаюсь выяснить, где находятся мои исключения и каковы мои отдельныетаблицы будут.Пока у меня есть следующее:
User Table
+------------+-----------+
| UserID | Username |
+------------+-----------+
| | |
+------------+-----------+
Activity Table
+------------+-----------+------------+-----------+------------+-----------+
| UserID | WeekID | Day | Minutes | Location | Miles |
+------------+-----------+------------+-----------+------------+-----------+
| | | | | | |
+------------+-----------+------------+-----------+------------+-----------+
Weeks Table
+------------+-----------+------------+
| UserID | WeekID | Week_No |
+------------+-----------+------------+
| | | |
+------------+-----------+------------+
Я думаю, что я иду по правильному пути, но таблица недель кажется неправильной, и я не уверен, каковы отношения - я не думаю,Мне нужен UserID в каждой таблице, и я не уверен, какими должны быть PK.
Любые комментарии к этой схеме или эффективный способ получения первой нормальной формы, учитывая требования приложения, будут высоко оценены,Большое спасибо.
РЕДАКТИРОВАТЬ:
Большое спасибо за все ответы, отличные вещи.
Я думаю, что было бы полезно иметь Таблицу местоположений, поскольку я мог бы стандартизировать местоположения (мог бы предоставить список на выбор), и если мне нужно будет делать запросы на основе местоположения, у меня будут согласованные имена местоположений.
Пересмотр схемы:
User Table - UserID PK
+------------+-----------+
| UserID | Username |
+------------+-----------+
| | |
+------------+-----------+
Activity Table - ActivityID PK
+------------+-----------+------------+-----------+------------+-------------+-----------+
| ActivityID | UserID | Week_No | Day | Minutes | LocationID | Miles |
+------------+-----------+------------+-----------+------------+-------------+-----------+
| | | | | | | |
+------------+-----------+------------+-----------+------------+-------------+-----------+
Location Table - LocationID PK
+------------+---------------+
| LocationID | Location_Name |
+------------+---------------+
| | |
+------------+---------------+
2-е РЕДАКТИРОВАНИЕ:
Теперь у меня есть вопрос о 2NF и 3NF по этой теме:
MySQL - переход от 1-й нормальной формы к 2-й и 3-й нормальной формам