会社の Web サイトには 5 人の営業担当者がいます。今では、クエリが来るたびに、次の比率で分散する必要があります。
SalesA : SalesB : SalesC : SalesD : SalesE = 1 : 2 : 1 : 1 : 1
データベースとしてmysqlを使用して、phpでWebサイトを作成しました。
1.データベースを使用せずに上記を達成する方法はありますか
2.データベースが必要な場合に最適なデータベース設計は何ですか。
前もって感謝します
会社の Web サイトには 5 人の営業担当者がいます。今では、クエリが来るたびに、次の比率で分散する必要があります。
SalesA : SalesB : SalesC : SalesD : SalesE = 1 : 2 : 1 : 1 : 1
データベースとしてmysqlを使用して、phpでWebサイトを作成しました。
1.データベースを使用せずに上記を達成する方法はありますか
2.データベースが必要な場合に最適なデータベース設計は何ですか。
前もって感謝します
このロジックは、DBレベルではなくPHPコードで実現する必要があります。
挿入する行のデータベース ID の 6 のモジュロ(1+2+1+1+1) を取得します。それに基づいて営業担当者を割り当てます。
// Quick and dirty example
switch($nextId % 6) {
case 0:
$salesperson = 'SalesA';
break;
case 1:
case 2:
$salesperson = 'SalesB';
break;
case 3:
$salesperson = 'SalesC';
break;
case 4:
$salesperson = 'SalesD';
break;
case 5:
$salesperson = 'SalesE';
break;
}
AFTER INSERT
これは、トリガーを使用してデータベース レベルで行うこともできます。
データベース設計:
teams
id title ratio
1 TeamA 1
2 TeamB 2
3 TeamC 1
4 TeamD 1
5 TeamE 1
テーブルを作成するには、リレーショナル データを使用する方法と使用しない方法の 2 つの方法があります。
enquiries
id team_id enquiry
1 1 something
2 2 something else
3 2 something
4 3 something else
この場合、問い合わせテーブルにデータを挿入するときは、チームの比率に注意する必要があります。
サンプル:
SELECT e.id AS enquiry_id, e.enquiry, t.title
FROM enquiries e
JOIN teams t
ON t.id=e.team_id
また、非リレーショナル照会テーブルを選択することもできます
enquiries
id enquiry
1 something
2 something else
3 something
この表では、問い合わせを選択するときにチームの比率に注意する必要があります
サンプル:
$teams = array();
$query = "SELECT id, title, ratio FROM teams";
$sql = $mysqli->query($query);
while($row = $sql->fetch_assoc()) {
$teams[] = $row;
}
$query = "SELECT * FROM enquiries";
$sql = $mysqli->query($query);
$team = 0;
$i = 0;
while($row = $sql->fetch_assoc()) {
if($i >= $teams[$team]['ratio']) {
$team = $team == count($teams) ? 0 : ($team + 1);
$i = 0;
}
$teams[$team]['enquiries'][] = $row;
$i++;
}
print_r($teams);