ja en ja en ja ja ja zh ja ja ja ja ja en ja ja ja ja ja en ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja en en ja ja en zh ja ja ja ja en es en es pt ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ru ja ja ja en
こんにちは。青い人です。CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記 | i d e a * i d e aが更新されました。#006にツッコミをいれていきます。
DROP TABLE IF EXISTS users; CREATE TABLE users ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(255), pwd VARCHAR(255), profile TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL ); INSERT INTO users (name,email,pwd) values ('taguchi','taguchi@foo.com','taguchipwd'); INSERT INTO users (name,email,pwd) values ('akiyan','akiyan@foo.com','akiyanpwd');
# Posts (← 日記。Diariesより語感がいいのでこちらに)
ユーザーが書く日記。日記ごとにオーナーがいる感じで。
DROP TABLE IF EXISTS posts; CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT UNSIGNED, title TEXT, body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL );
user_id・createdの複合indexを作るとよいです。きっと「ユーザーIDで絞り込んで」「作成順に並び替える」ことになるので。
ちなみにuser_idはusersテーブルへの参照キーです。Cakeでの参照キーの命名規則は「モデル名_id」なので、ばっちりです。
# Friends (友達関係のJoinテーブル)
ここは誰が誰の友達かを表すテーブル。ちょっとズルをして青い人に聞きながらつくってみました。
DROP TABLE IF EXISTS friends; CREATE TABLE friends ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT UNSIGNED, friend_user_id INT UNSIGNED, status INT UNSIGNED, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL );
まずuser_id・friend_idを複合キーでUNIQUE INDEXを作って2重登録を防止します。
次にuser_id・status・modifiedの複合indexも作っておきましょう。「ユーザーIDで絞り込んで」「ステータスで絞り込んで」「承認順(更新順)に並び替える」ことになるからです。(statusには承認待ちかどうかなどが入ります)
承認順は無くてもuser_id・statusでの絞り込みはあるので、この順序の複合indexであれば流用されます。
カテゴリ:ホーム » ブログ » IT » プログラミング » Re: CakePHP日記 #006 ディレクトリ構成とDB設計
前の記事:エンコードマニアックスにMIMEエンコードと数値文字参照を追加しました
後の記事:Re: idea*idea CakePHP修行 #7~9「DB設計」「bake.php」「scaffold」
コメント / トラックバック
コメント / トラックバック 2 件
「CakePHP修行」を追う #3 - ElectronicBrain is eating BreakFast より:
2009-04-04 17:45
[...] で、DBに関してですが、本家の前回の記事に、こちらのツッコミが入ってました。 [...]
CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#007) - IDEA*IDEA ~ 百式管理人のライフハックブログ より:
2009-08-04 15:51
[...] » Re: CakePHP日記 #006 ディレクトリ構成とDB設計 : akiyan.com [...]
akiyan.com とは
個人サイト。管理人は秋田真宏。ニックネームは「akiyan」。
「今までの認識を覆(くつがえ)す、わかりやすい記事を書く」ことを目標にしているサイトです。話題の中心は生活とウェブ技術系です。
UberEATSの配達員をリリース当日にやってみた
iPhone の修理補償のためにAppleCare+や携行品保険に入ってはいけない
UR賃貸住宅が最強なことを惜しみなく紹介
あなたの知らない照明術
ためしてガッテンのカレー特集がすごい!
5泊5000円台の貸しふとんで、お客様用ふとんを持たない暮らし
ブログカテゴリ・月別一覧
エンターテイメント (199)
ビジネス・政治経済 (175)
生活・ライフスタイル (246)
2022-09-14 海岸や河川でバーベキューができるか調べる方法
2022-02-02 SequelizeでJSONフィールドをupdateする場合はsetメソッドを使う
2022-01-24 SwitchBotロックをSiriショートカットで「解錠」はできない
2022-01-04 テスラモデル3にTPMSセンサー無しで社外品ホイールとスタッドレスタイヤ を取り付けました
2022-01-01 サーフィンを始めました
2022-01-01 テスラモデル3ロングレンジに乗り換えたらアプデが楽しみになった
2021-12-29 歯列矯正を始めてからよく食べてるもの、完全食、フリーズドライお粥、豆腐 etc
2021-12-28 日光市ワーケーション補助金は最低1名から、申請はメールでOK
2021-11-19 2021年に買ってよかったもの
2021-08-12 自治体コロナワクチン予約は早朝チェックで最速で受けられる
akiyan.com 管理人メモ
自衛隊イラク日報 バグダッド日誌/バスラ日誌 一覧
エンコードマニアックス
オンラインCSS自動整形
はてなブックマーク人気エントリー
Copyright 1997,2022 akiyan.com, All rights reserved.