私はAndroidアプリケーションに取り組んでおり(したがってsqliteを使用する必要がありますHashSet
)、リレーショナルデータベースでJavaセット(つまり)をモデル化するための良い方法を探しています。最初は、多対多の関係を持つ2つのテーブルになると思いました。
table name: sets
_id integer (PK)
table name: fruits
_id integer (PK)
name varchar (unique, so alternate key)
table name: fruit_sets
set_id (FK) // combination key to prevent
fruit_id (FK) // duplicate fruits in each set
したがって、このdbモデルでは、次のような関係をサポートできると確信しています。
[ apple, orange, pear ] != [ apple, orange, grape, pear ]
しかし、
[ apple, orange, pear ] == [ pear, apple, orange ]
したがって、データベースにある場合:
set 1 = [ apple, orange ]
set 2 = [ orange, pear, apple ]
set 3 = [ grape, pear ]
set 4 = [ grape, orange, apple, cherry ]
select
Javaでセットが与えられたとき、私はset_idへの良い方法で苦労していました。したがって、たとえば、JavaでHashSet:を使用している場合、?のクエリを[ apple, orange, pear ]
どのように構成しますか?select
set_id
戻る必要がset_id
あります:2
...または、この種の関係をモデル化するための別のより良い方法はありますか?