Re: [問題] 取得 MySQL Data 之結構與效能

作者: pttworld (批踢踢世界)   2016-08-27 01:25:48
McDonald 勞勞買一送一 中友百貨店,高雄大遠百店
Starbucks 星八折    花蓮店,台北內湖店,屏東墾丁店
Starbucks 星期五折   澎湖店,台北內湖店
1NF
McDonald 勞勞買一送一  中友百貨店
McDonald 勞勞買一送一  高雄大遠百店
Starbucks 星八折     花蓮店
Starbucks 星八折     台北內湖店
Starbucks 星八折     屏東墾丁店
Starbucks 星期五折    澎湖店
Starbucks 星期五折    台北內湖店
2NF
Brand_id Activity_id Store_id
1 McDonald 1 勞勞買一送一 1 中友百貨店
1 McDonald 1 勞勞買一送一  2 高雄大遠百店
2 Starbucks 2 星八折     3 花蓮店
2 Starbucks 2 星八折     4 台北內湖店
2 Starbucks 2 星八折     5 屏東墾丁店
2 Starbucks 3 星期五折    6 澎湖店
2 Starbucks 3 星期五折    4 台北內湖店
3NF
Store_id Brand_id Activity_id
1 1 1
2 1 1
3 2 2
4 2 2
4 2 3
5 2 2
6 2 3
麥當勞的所有活動
Select distinct Activity_id from [3NF Table] where Brand_id = '1';
星巴克星八折有那些店
Select Store_id from [3NF Table] where Brand_id = '2' and Activity_id ='2';
星巴克台北內湖店有那些活動
Select Activity_id from [3NF Table] where Brand_id = '2' and Store_id = '4';
Table
Brand => 手機端
1 McDonald
2 Starbucks
Activity => 兩端, App Update
1 勞勞買一送一
2 星八折
3 星期五折
Store => 手機端,APP Update,加Enable欄位
1 中友百貨店
2 高雄大遠百店
3 花蓮店
4 台北內湖店
5 屏東墾丁店
6 澎湖店
3NF Table 在Server端維護
※ 引述《aws9527 (Awis)》之銘言:
: 不好意思 請教各位前輩:
: Server 端為 PHP
: Client 端為 Android
: 連線上沒有任何問題
: 問題在於資料結構與效能的部分
: 我有寥寥可數的幾個 活動
: (例如 麥當當買一送一, 星巴巴八折等等)
: 但有他們全台灣的連鎖店資料 (譬如 麥當當 一中店, 中友百貨店 ...) 頗多
: 我在初期製作 顯示商店列表時
: 把 連鎖店 和 活動 資料表合併
: (活動會重複爆多)
: 取得二維 json
: 現在要製作 收藏活動 或 取得活動列表後
: 我就卡關了
: 我是要
: 1. 用迴圈下去跑
: for ( int i < 連鎖店list.size() )
: 取得新的 活動list
: 還是
: 2. 送出新的 http request 直接取得 活動list
: (聽大家都說 Android 少用請求?)
: 還是
: 3. 我一開始根本就不該合併
: 在 server 端 就以 活動為主
: 編成三維陣列
: ex: [活動index][商店index][商店meta]
: 不知道哪種做法才好
: 麻煩各位先進了
作者: aws9527 (Awis)   2016-08-28 21:19:00
感謝大大非常詳細!抱歉公事繁忙 較晚回覆謝謝您的建議!
作者: pttworld (批踢踢世界)   2016-08-28 22:15:00
如果你是受委託,要詢問委託方資料的存放點。
作者: realmeat (真肉)   2016-08-29 12:16:00
好人一個, XD
作者: ripple0129 (perry tsai)   2016-08-29 16:16:00
好心大大幫正規化

Links booklink

Contact Us: admin [ a t ] ucptt.com