1

私は、次のことに対処するための最良の方法はどのようになるのだろうかと考えていました。

「連絡先」というテーブルがあり、このテーブルには、contacts.age_group_id と contact.DOB の 2 つのフィールドがあります。生年月日フィールドは定期的に入力されますが、age_group_id は入力されず、現在の日付と生年月日に基づいて連絡先が古くなるにつれて変化するものでもあります。

age_group テーブルは次のとおりです。

age_group.id - int age_group.name - varchar (例: 65-70 歳 - 退職データベース)

サンプル:

id: 1 - 名前: 65-70 歳 id: 2 - 名前: 71-75 歳 id: 3 - 名前: 76-80 歳

必要に応じて age_group テーブルにフィールドを簡単に追加できますが、エクスポートされたレポートで最新の状態になるように contact.age_group_id フィールドを常に更新する必要があります。

ある種の関数内でこれを行う方法について何か提案はありますか?

私は Cakephp を使用していますが、それはより一般的な PHP/MySQL の質問です。

ありがとう

4

1 に答える 1

0

私の最初の考えは、min_age と max_age を age_group テーブルに入れることでしたが、それにはユーザーの年齢を計算し、それを age_group テーブルに結合する必要があります。すべての行の計算はうまくいきません (また、インデックスを作成することもできません)。

そこで、次の 2 つのアイデアがあります。

  1. 各範囲の開始日と終了日を agr_group テーブルに保存すると、65 年前 (今日) は 1947 年 9 月 20 日になります。それをユーザーの DOB と比較します。良いニュースは、高速であるということですが、日付を毎日再生成する必要があります。
  2. ユーザーの年齢を計算して保存します。繰り返しますが、高速ですが、毎日さらに多くのデータを再生成する必要があります。

ああ、3番目のアイデアは、より良いアイデアを待つことです:)

于 2012-09-20T23:34:48.190 に答える