只是說,我選擇的解決方案從 「spencer7593」 3個表:
-interval
- 鍛鍊
-interval_workout(區間和鍛鍊之間的聯繫)
這是最自然的對我來說,我缺少一個小約束(1個間隔只能在一次鍛鍊中),但我將管理表中的插入,所以我不必擔心這一點。
現在這裏是我爲數據庫中的特定用戶獲取所有區間鍛鍊的查詢的示例,此查詢從我的Rest webService返回一個xml文件,我的應用程序使用它來構建特定於用戶的鍛鍊: 現在我需要看看Json在我的應用程序中是否比Xml更好(現在使用Qt中的QXmlStreamReader),並且如果有更好的方法來編寫該查詢(當前在PHP頁面中硬編碼,難以維護)感謝您的幫助!
└(°ᴥ°)┘ - 到月球! - └(°ᴥ°)┘
/* GET ALL INTERVAL WITH DETAILS IN SUBSCRIBED WORKOUT FOR USER=X */
SELECT
/* plan */
p.id plan_id, p.name_en plan_name_en, p.name_en plan_name_fr,
/* workout type */
wt.id workout_type_id, wt.type_en workout_type_en, wt.type_fr workout_type_fr,
/* workout */
w.id workout_id, w.name_en workout_name_en, w.name_fr workout_name_fr,
w.descrip_en workout_descrip_en, w.descrip_fr workout_descrip_fr, w.creator workout_creator,
/* seq_workout */
iw.seq_workout,
/* intervalle */
i.id intervalle_id, i.duration intervalle_duration, i.msg_en intervalle_msg_en, i.msg_fr intervalle_msg_fr,
/* intervalle : power */
i.power_start intervalle_power_start, i.power_end intervalle_power_end, i.power_range intervalle_power_range, i.power_left intervalle_power_left,
/* intervalle : cadence */
i.cadence_start intervalle_cadence_start, i.cadence_end intervalle_cadence_end, i.cadence_range intervalle_cadence_range,
/* intervalle : hr */
i.hr_start intervalle_hr_start, i.hr_end intervalle_hr_end, i.hr_range intervalle_hr_range,
/* intervalle type */
it.id intervalle_type_id, it.type_en intervalle_type_en, it.type_fr intervalle_type_fr,
/* intervalle : step type */
isPower.id intervalle_steptype_power_id, isPower.type_en intervalle_steptype_power_type_en, isPower.type_fr intervalle_steptype_power_type_fr,
isCadence.id intervalle_steptype_cadence_id, isCadence.type_en intervalle_steptype_cadence_type_en, isCadence.type_fr intervalle_steptype_cadence_type_fr,
isHr.id intervalle_steptype_hr_id, isHr.type_en intervalle_steptype_hr_type_en, isHr.type_fr intervalle_steptype_hr_type_fr
FROM user u
INNER JOIN user_groupe ug
ON u.id = ug.user_id
INNER JOIN groupe g
ON ug.groupe_id = g.id
INNER JOIN groupe_plan gp
ON g.id = gp.groupe_id
INNER JOIN plan p
ON gp.plan_id = p.id
INNER JOIN workout w
ON p.id = w.plan_id
INNER JOIN workout_type wt
ON wt.id = w.workout_type_id
INNER JOIN intervalle_workout iw
ON w.id = iw.workout_id
INNER JOIN intervalle i
on i.id = iw.intervalle_id
INNER JOIN intervalle_type it
on i.intervalle_type_id = it.id
INNER JOIN intervalle_steptype isPower
on isPower.id = i.power_steptype_id
INNER JOIN intervalle_steptype isCadence
on isCadence.id = i.cadence_steptype_id
INNER JOIN intervalle_steptype isHr
on isHr.id = i.hr_steptype_id
WHERE u.id = 1
ORDER BY iw.workout_id, iw.seq_workout;
忘記列表或其他集合,甚至存在。他們違反了第一種正常形式。他們根本不適合關係模型。 – delnan
你可以在你的鍛鍊表中添加repetition_count和interval_between_repetitions列並排列間隔表嗎? – Nihat
我現在可以做任何事情,這是一個正在開發中的項目。我只是試圖複製一個適合我的對象結構的數據庫模型。恐怕我不能拋出Interval表,還有更多的數據我沒有發佈在「Interval」對象中。這裏是mySql腳本 – Astro