このユースケースでは、構造化されたデータを簡単に保存および取得できるため、リレーショナルデータベースが適切な選択になります。可能なデータベーススキーマは次のとおりです。

表：グループ

    ID（プライマリキー）
    created_at
    ended_at

表：マイクロコントローラー

    ID（プライマリキー）
    Group_id（グループの外部キー）
    foined_at

このスキーマでは、各グループは、一意のID、作成された時間、およびそれが終了した時間（該当する場合）でグループテーブルの列として表されます。マイクロコントローラーがグループに結合すると、独自のIDと参加したグループへの外部キー参照を備えたマイクロコントローラーテーブルに行が追加されます。Joined_at列は、マイクロコントローラーがグループに参加した時期を記録します。

特定のグループに参加したマイクロコントローラーの数を照会し、それらが参加したときに、グループとマイクロコントローラーテーブルの間にJoinステートメントを使用できます。例えば：


microcontroller.id、microcontroller.jeined_atを選択します
グループから
group.id = microcontroller.group_idでmicrocontrollerに参加してください
where group.id = [group id];

これにより、指定されたグループIDのマイクロコントローラーIDとその参加時間のリストが返されます。
For this use case, a relational database would be a good choice as it can easily store and retrieve structured data. Here is a possible database schema:

Table: Group

    id (primary key)
    created_at
    ended_at

Table: Microcontroller

    id (primary key)
    group_id (foreign key to Group)
    joined_at

In this schema, each group is represented as a row in the Group table with a unique ID, the time it was created, and the time it ended (if applicable). When a microcontroller joins a group, a row is added to the Microcontroller table with its own unique ID and a foreign key reference to the group it joined. The joined_at column records the time when the microcontroller joined the group.

To query the number of microcontrollers that joined a particular group and when they joined, you can use a JOIN statement between the Group and Microcontroller tables. For example:


SELECT Microcontroller.id, Microcontroller.joined_at
FROM Group
JOIN Microcontroller ON Group.id = Microcontroller.group_id
WHERE Group.id = [group ID];

This will return a list of microcontroller IDs and their join times for the specified group ID.