[前][次][番号順一覧][スレッド一覧]

rails:2932

From: "AYUkawa, Yasuyuki" <ayu@y...>
Date: Fri, 05 Dec 2008 22:58:46 +0900
Subject: [rails:2932] Re: idと同じ数字を同一レコードに保存したい

森近さま

最近あまり rails に触っていないので、
具体的なコードで提示させていただくことはできないのですが....

> ここでid:3のfamily_idを1にすることでid:3
> はid:1の家族とみなします。

これは「一対多」ということで、
テーブルをもう一つ用意されれば、よろしいのではありませんか?

つまり....

[families] → 所有 → [users]
id                   id
name                 name
                     family_owner(boolean かな?)
                     family_id

お書きになっていらっしゃる family_id が、
正にその関係を示している、と思います。

ちなみに、family_owner は
オマケのフラグとして追記してみました。

> 1, 山本太郎, 1
> 2, 田中直子, 2
> 3, 山本陽子,1
> 4, 小林実, 4

この場合であれば、
旦那さま(勝手に決めていますが笑)の太郎さんにはフラグを立てておいて、
奥様の陽子さんにはフラグを立てなければ、
後で検索する時の目安になるかも知れません。

こういう正規化では、ご希望とは相違ありますか?
(データベースをスケールさせるための手法であれば、申し訳ありません)

あゆかわやすゆき
http://yamayo.to/diary/

At Fri, 5 Dec 2008 09:34:05 +0900,
Shin Morichika wrote:
> 
> Rails 2.1 DBは現在はSQLiteですが本番時はMySQLを予定 
> しています。
> 
> ユーザーを保存するモデルにおいて、別ユーザーと同じ家族であることを
> 示すものとしてfamily_idを設定します。
> 
> id name family_id
> 
> 1, 山本太郎, 1
> 2, 田中直子, 2
> 3, 山本陽子,1
> 4, 小林実, 4
> 
> ここでid:3のfamily_idを1にすることでid:3 
> はid:1の家族とみなします。
> 
> ユーザーを新規登録する際に、別のユーザーの家族であれば 
> family_idは
> そのユーザーIDを入力し、入力が無い場合はNULLではなく 
> primary-keyと
> 同じidを登録したいと思うのですがその方法として
> 
> 1、after_saveのコールバックを使う。
> 2、ActiveRecord Base.connection.executeでSQLを実行 
> して、
> データベースのlast_insert_rowid()関数などでidを取得 
> して保存する。
> 3、データベースのトリガーを利用する
> 
> というような方法が使えそうですがどれもデメリットが存在するかなと
> 思います。
> 
> どなたか同じようなことをされた方がいればぜひアドバイスをお願いし 
> ます。
> 
> -- 
> 森近 真
> uy4s-mrck@a...
> 
> 
> --
> ML: rails@r...
> 使い方: http://QuickML.com/

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      2930 2008-12-05 01:34 [ofl@c...            ] idと同じ数字を同一レコードに保存したい  
->    2932 2008-12-05 14:58 ┗[ayu@y...            ]                                       
      2934 2008-12-06 00:43  ┗[ofl@c...            ]                                     
      2935 2008-12-06 02:16   ┗[andymatsubara@g...  ]                                   
      2937 2008-12-06 15:24    ┗[ofl@c...            ]                                 
      2938 2008-12-06 15:42     ┗[andymatsubara@g...  ]                               
      2939 2008-12-06 16:22      ┗[ofl@c...            ]