MySQL 総合 Part7

このエントリーをはてなブックマークに追加
785NAME IS NULL
質問です。
Webアプリケーションで、ユーザーがレコードを任意の順番に並び替えることができるようにするには、どのようなスキーマにして、更新時にはどのようにするのがよいでしょうか?
並べ替えの時にプライマリキー以外の全部のフィールドを書き換えるのではちょっとパフォーマンスが悪すぎると思います。
よろしくお願いします。
786NAME IS NULL:2006/05/11(木) 16:26:14 ID:???
~/.my.cnfでquote-namesの上書きできないの?
力ずくならソース弄って好みにハックするとか。


具体例を示さないと何とも言えない。
どういうレコードを扱うの?
スレ的にはこちら。MySQLとは全く関係ない。
頼むから正規化しろよ 第二正規形
http://pc8.2ch.net/test/read.cgi/db/1116097001/l50
姉歯DB設計
http://pc8.2ch.net/test/read.cgi/db/1133798099/l50
【恐怖】主キーがないテーブルみたことありますか?
http://pc8.2ch.net/test/read.cgi/db/1069324950/l50
ストアドよりインデックスのほうが速いよ
http://pc8.2ch.net/test/read.cgi/db/1094134263/l50

どういう設計にするかが一番の肝なので、SIベンダからコンサル受けるならかなりの対価を取られる事を覚悟してくれ。
787785:2006/05/11(木) 16:42:17 ID:???
>>786
レスありがとうございます。
わかりにくくてすみませんorz。
ユーザーがお気に入りのエントリーを作れるようにしています。
普通にエントリーを追加をしていくとauto_incrementさせとけばプライマリキーのidが増えていきますが、後からユーザーが表示する順番を並び替えられるようにしたいのです。

id favorite       url
1 今日のお気に入り http://
2 昨日のお気に入り http://
3 明日のお気に入り http://

こんな感じに並んでいるものを、ユーザーが好きな順番で表示させることができるようにしたいです。
(順番を並び替えるためのフォーム用ページも作ります)

やっぱりスレ違いでしょうか?
788784:2006/05/11(木) 16:43:28 ID:???
>>786
有効にする方向には上書きできるけど
無効にする方法がわからないのですにょ

あんまりほいほい/etc/my.cnfをいじりたくないし
無効化手段を知っとけば他にも役に立ちそうだし
789NAME IS NULL:2006/05/11(木) 16:56:47 ID:???
>>787
favoriteの項目名に<A href="hoge.htm?order=favorite">のリンク作って、
受信側ページ(hoge.htm:この場合同じページになるかな?)でsqlに「order by favorite」付けれ
790770:2006/05/11(木) 17:07:44 ID:???
>>782
テキストエディタで開いて改行されていない状態なら
改行コードが入っていないと思われる。
入力とDBへの挿入ページでどんな処理をしているのかわからんが


> phpと言うのを使えば改行コードをそのまま保存⇔呼び出しと言うのが
> 出来るのでしょうか?

phpには改行コードを<br>に変換してくる
nl2brという関数が用意されているということ。
javaでそんな関数がないならユーザー関数を作ってください。
791785:2006/05/11(木) 18:30:54 ID:???
>>789
すみません。言葉足らずでした。
やりたいことは、ユーザーが
1 昨日のお気に入り
2 今日のお気に入り
3 明日のお気に入り
とか
1 明日のお気に入り
2 昨日のお気に入り
3 今日のお気に入り
とかいう風に色々な順番に並べ替えられるようにしたいのです。
792NAME IS NULL:2006/05/11(木) 18:35:09 ID:???
YOU!ソート用のフィールド作っちゃいなYO!
793785:2006/05/11(木) 18:57:25 ID:???
>>792
なるほど。新たにフィールドを加えるということですね。
そうすると、どのような値を格納しておけばよいのでしょうか?
また、更新するとき(つまりユーザーが何らかの並び替えを行ったとき)にはどのようなSQL文を書けばよいのでしょうか?
おそらく最悪全てのレコードの値を書き換えないといけない気がしてしまいます。
794NAME IS NULL:2006/05/11(木) 19:29:27 ID:???
>793
すいません。ユーザーが一発で全てのレコードを書き換えるという
操作をするというのがよく分かりません。

ふつう、インターフェースから一個ずつ順番変えない?
スクリプトでも一個ずつ命令発行しないですか?
795794:2006/05/11(木) 19:37:46 ID:???
あ…、ひょっとしてリスト構造をDBでやりたいって話か。
796NAME IS NULL:2006/05/11(木) 20:14:10 ID:???
>>794
エスパーな俺が判断するに

1.xxx
2.yyy
3.zzz

という order から zzzを先頭にもって来た場合、
zzz→1
xxx→2
yyy→3

と変更しないといけないんじゃないかと >>793 は言っている
797NAME IS NULL:2006/05/11(木) 21:49:03 ID:???
エスパー魔美 出現
798NAME IS NULL:2006/05/11(木) 22:49:35 ID:???
まったくMySQLに関係ないな。
表示順番のフォールドでも作ればいいじゃんって、データベース設計レベルの話。
blogとかの解析でもすればいいのに。
ヒント:Movable TypeはMySQL使ってる。
799NAME IS NULL:2006/05/11(木) 23:52:20 ID:???
フォールドって?