PHP 板


LINE

看板 PHP  RSS
很抱歉,用了一個很不知所云的標題, 因為我實在不知道該怎麼簡單描述我現在遇到的問題。 如果有人能給我一個適當的標題,在下必定盡速修正。 問題有點長,請容我描述一下: 假設我有一個紀錄人際關係的資料庫, 紀錄人名與各種不同的關係,比如這樣: 王小明 同學 仇人 朋友 家人 李小英 同學 仇人 朋友 家人 陳小華 同學 仇人 朋友 家人 (亮白字表示對方與我的關係;暗白色表示不存在的關係) 我想在資料庫內儲存這樣的資料,很直覺地可以這麼做: Name relation1 relation2 relation3 relation4 王小明 1 0 1 0 李小英 0 0 0 1 陳小華 1 1 0 0 但是,如果我想要隨時增加這些關係屬性(比如同事、上司等等), 除了無止盡的增加資料表,並且不斷地修改相關的 SQL 語法以利管理這些資料外, 有沒有比較簡單的方法處理這類問題呢? 我之前想了一個方法,只要一個欄位,就可以紀錄所有的關係。 以王小明為例子,我把原本資料表內的資料集合起來,變成 1010 一個數值, 將這個數字倒轉過來,成為 0101,然後用 bindec 函數轉為十進位,並儲存起來。 要調用這筆資料的時候,只要將這個十進位數字用 decbin 函數解出來, 反轉之後再分割一個個單獨的字元,就可以得到當初儲存的關係了。 這麼處理過後,資料庫可以簡化成這樣: Name relation 王小明 5 (1010 -> 0101 -> 5) 李小英 8 (0001 -> 1000 -> 8) 陳小華 3 (1100 -> 0011 -> 3) 要反轉一次的理由,是方便以後增加新的關係屬性時,不致導致之前的資料混亂掉。 這部份不是本次問題的重點,暫時就不多做解釋。 這麼做之後,要列舉出所有資料當然是沒有問題的, 只要將關係係數解碼之後傾印出來就可以了。 但是如果要搜尋資料呢?好像變得很複雜…… 我想問的是,如果我現在想做一個搜尋的功能, 比如想從資料庫撈出既是同學又是仇人的人名, 有沒有什麼比較簡單的方法可以做到呢? 我想其實我之前用的這個編碼法問題應該很大,所以有可能沒辦法直接撈出資料, 必須先撈出所有資料,將關係係數解碼之後再去判斷。 所以我想知道的是,是不是有比較有效的編碼方式,可以在耗用最少欄位的情況下, 還可以兼具關係係數的擴充性,並且又方便撈資料的? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.119.118
1F:推 pakker:一切都複雜化了 數字就是binary部用甚麼編解碼 07/17 21:42
2F:→ pakker:一切都是 AND/OR operation 07/17 21:43
3F:推 leosirius:ERD: 人(M)-------(M)關係 07/17 21:46
4F:推 pakker:1.SQL可以用BIT OP 2.複雜的編碼可以用SQL的UDF去做搜尋 07/17 21:46
5F:→ leosirius:接下來你應該知道怎麼做了.. 07/17 21:47
樓上兩位已經點出幾個我沒碰過的關鍵字了。 其實我對 SQL 的瞭解僅止於 INSERT、DELETE、SELECT 等超簡單的入門等級, 所以才會用這麼奇怪的方法來處理我的資料…… 謝謝兩位提供的資訊,我會再研究看看的。 ※ 編輯: chweng 來自: 218.162.119.118 (07/17 21:55)
6F:推 JoeHorn:這種議題跟資料庫正規化有關,去資料庫板問吧~ 07/18 06:57







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP