4

数字のリストを、できれば単一のセルに保存する必要があります。私はそれぞれが一意のIDを持つ人々のリストを持っており、彼らの家族が誰であるかを知る必要があります。私はSQLデータベースにかなり慣れていないので、SQLデータベースをかなり単純にしてください。

4

3 に答える 3

5

これを行わないでください。単一の列に複数の値を格納すると、参照整合性制約を使用する可能性がなくなり、維持するのが悪夢になります(新しい赤ちゃんが生まれたときに全員のリストを維持することを想像してください)。

最も簡単な解決策は、family_id各人の行にaの列を追加することです。同じファミリのすべてのメンバーは、この一意のIDを同じ値に設定します。異なる家族のメンバーは異なるfamily_idsを持ちます。

これは、結婚の場合、子供との結婚で2つの家族に加わるか、花嫁または花婿を配偶者の家族に移す意思がない限り、理想的ではありません。

于 2012-09-23T03:00:00.840 に答える
3

2つの列を持つFamilyテーブルを設定します。1つは問題の人物の一意のIDを格納し、もう1つは家族の一意のIDを格納します。テーブルは次のようになります。

Family(userID, familyMemberID)

家族ごとにエントリがあるので、次のようになります。

(1, 2), (1, 3), (1, 4), (1, 5), (2, 8)

接続を両方向に保存するかどうかはあなた次第です(つまり、挿入ごとに、逆数(1,2)も挿入(2,1)も挿入します)。これは、トリガーまたはその他の手段で簡単に実行できます。

于 2012-09-23T02:53:47.240 に答える
0

familyIdを追加するのが最も簡単な解決策です。

しかし、子供が結婚して新しい家族を形成するにつれて、家族のメンバーは時間とともに変化するためです。personIdとfamilyIDを含む別の「関係」テーブルを作成します。

メンバーの動きを追跡したい場合。データウェアハウスの世界では、通常、履歴を保持するためにrelId、relTy、およびTimestampがありますが、それほど遠くまで行く必要はありません。

おそらくある日、あなたは家系図を作りたいと思うでしょう。したがって、リレーションシップテーブルの列名としてpersonId/familyIdが本当に必要かどうかを判断します。

要約すると、あなたの当面の必要性のために、私は別の関係表を使用します。

于 2012-09-23T15:10:17.487 に答える