私は、ユーザー情報を格納するテーブルのユーザー持っている - 保存を目的とした - などの名前、生年月日、場所、などリレーショナルデータベース設計(MySQLの)
を私はUser_Optionsと呼ばれるリンクテーブルをも作成しました複数値の属性 - これは基本的にチェックボックスの選択を保存します。
私はユーザーが入力してユーザープロファイルを作成するためのフロントエンドフォームを持っています。ここで私は、チェックボックスの選択肢を生成するために作成したテーブルです: - 趣味のための1セットと音楽のための1つのセットだから、
Table User_Attributes ===================== id attribute_name --------------------- 1 Hobbies 2 Music
Table User_Attribute_Options ====================================== id user_attribute_id option_name -------------------------------------- 1 1 Reading 2 1 Sports 3 1 Travelling 4 2 Rock 5 2 Pop 6 2 Dance
は、フロントエンドのフォーム上のチェックボックスのオプションの2セットがあります。
そして、ここでユーザーテーブルです:
Table User ======================== id name age ------------------------ 1 John 25 2 Mark 32
Table User_Options ================================================== id user_id user_attribute_id value -------------------------------------------------- 1 1 1 1 2 1 1 2 3 1 2 4 4 1 2 5 5 2 1 2 6 2 2 4
は、(上記の表に「user_attribute_idは」親属性のIDであると「の値が」属性オプションのIDです)。
私はこれを正しく、または効率的に実行したとは確信していません。同じテーブルに階層データを格納する方法があることは分かっていますが、私は物事を分けておくほうが好きです。
私の主な関心事は、User_Optionsテーブルです。この背後にあるアイデアは、各多値属性のテーブルを持つのではなく、複数値の属性を格納するリンクテーブルが1つだけあればよいということです。