Re: [請益] 資料庫規劃問題 (MySQL)

看板PHP作者 (銀色)時間13年前 (2012/03/15 21:52), 編輯推噓6(600)
留言6則, 6人參與, 最新討論串4/5 (看更多)

03/15 04:53,
推全是精華
03/15 04:53

03/15 09:53,
大推.
03/15 09:53

03/15 10:26,
推經驗分享
03/15 10:26

03/15 10:28,
03/15 10:28

03/15 14:08,
bit 運算超好用!
03/15 14:08

03/15 16:05,
可以解釋一下什麼是用 bit 運算嗎@@?
03/15 16:05

03/15 16:31,
我猜是早期mysql沒有boolean, 所以用 bit(1) 來代替
03/15 16:31

03/15 16:33,
受教了,還是聲明一下,因為是新手,也許問的問題會讓人
03/15 16:33

03/15 16:34,
覺得不經思考或問錯,這我願意受教,但只是想不想回答是
03/15 16:34

03/15 16:34,
用是否為作業去思考,那跟態度或內容恐怕就無關了
03/15 16:34

03/15 16:35,
多個boolean也行 bit(3) ex rwx
03/15 16:35

03/15 16:38,
我還以為是拿個int當一串bit那種位元運算的技巧 囧"
03/15 16:38
你的是對的 XDD

03/15 17:04,
用 int 所佔得空間比較大. bit 你知道的.
03/15 17:04
我是指位元運算,不是儲存位元… orz 打得太快了 以 unsigned tinyint 來說,值範圍是 0 ~ 255, 255 在二進位下是 11111111,換句話說也就是可以儲存 8 個二元選項, 舉個實際例子好了, 如果使用者有三個可以自行設定的項目: 是否收到 EDM、是否收簡訊、是否收到優惠卷 資料表可以是三欄位式的設計 recive_edm enum yes,no recive_sms enum yes,no recive_coupon enum yes,no 也可以是一欄式的設計 recive_option unsigned tinyint 0 (000), 1(001), 2(010), 3(011) … 在一欄式的設計裡,可以透過位元運算來處理, php 裡先定義一下: define ('_RECIVE_EDM', 0x01); define ('_RECIVE_SMS', 0x02); define ('_RECIVE_COUPON', 0x04); 這樣如果要從資料表中找出「願意收到 EDM」而且「願意收到簡訊」的使用者, 判段式可以像以下這樣寫 前略… WHERE `recive_option`&' . (_RECIVE_EDM | _RECIVE_SMS) .' …後略 如果某使用者設定自己「願意收到簡訊」、「願意收到優惠倦卷」, 更新可以像下面這樣寫 前略… SET `recive_option`='. (_RECIVE_SMS | _RECIVE_COUPON) .' …後略 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.113.121 ※ 編輯: gpmm 來自: 61.219.113.121 (03/15 21:52)

03/15 21:59, , 1F
啊啊~ 果然是這個~ 不過我沒在資料庫中試過說
03/15 21:59, 1F

03/15 23:44, , 2F
這篇的啟蒙,我要花點時間好好玩一下這玩意了...
03/15 23:44, 2F

03/16 00:51, , 3F
謝謝!Y
03/16 00:51, 3F

03/18 21:04, , 4F
挖!!!這篇讚讚讚 從來沒這樣玩過
03/18 21:04, 4F

03/21 16:27, , 5F
...原來可以這樣搞,我之前還想破頭用log來換算2進位 XD
03/21 16:27, 5F

03/26 17:56, , 6F
bit運算 正點...受教了
03/26 17:56, 6F
文章代碼(AID): #1FOVGFvU (PHP)
文章代碼(AID): #1FOVGFvU (PHP)