私はCassandraの調査を続けており、RDBMSの多対多に似たStudent<=>コース関係を作成したいと思います。
クエリに関しては、次のクエリを使用します。
- 学生が登録したすべてのコースを取得します。
- 特定のコースに登録されているすべての学生を取得します。
列ファミリーに作成するとします。1つはコース用、もう1つは学生用です。
CREATE COLUMN FAMILY student with comparator = UTF8Type AND key_validation_class=UTF8Type and column_metadata=[
{column_name:firstname,validation_class:UTF8Type}
{column_name:lastname,validation_class:UTF8Type}
{column_name:gender,validation_class:UTF8Type}];
CREATE COLUMN FAMILY course with comparator = UTF8Type AND key_validation_class=UTF8Type and column_metadata=[
{column_name:name,validation_class:UTF8Type}
{column_name:description,validation_class:UTF8Type}
{column_name:lecturer,validation_class:UTF8Type}
{column_name:assistant,validation_class:UTF8Type}];
では、どのように進めればよいですか?
courseID:studentId
CompisiteKeyを使用して3番目の列ファミリーを作成する必要がありますか?はいの場合、Hectorを使用して1つ(左または右)の複合キーコンポーネントのみでクエリを実行できますか?
助けてください。
アップデート:
提案に従って、次のスキーマを作成しました。
学生の場合:
CREATE COLUMN FAMILY student with comparator = UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type;
次に、いくつかのデータを追加します。
set student['student.1']['firstName']='Danny'
set student['student.1']['lastName']='Lesnik'
set student['student.1']['course.1']=''
set student['student.1']['course.2']='';
コースの列ファミリを作成します。
CREATE COLUMN FAMILY course with comparator = UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type;
いくつかのデータを追加します。
set course['course.1']['name'] ='History'
set course['course.1']['description'] ='History Course'
set course['course.1']['name'] ='Algebra'
set course['course.1']['description'] ='Algebra Course'
そして最後にコースの学生:
CREATE COLUMN FAMILY StudentInCourse with comparator = UTF8Type and key_validation_class=UTF8Type and default_validation_class=UTF8Type;
データの追加:
set StudentInCourse['studentIncourse.1']['student.1'] ='';
set StudentInCourse['studentIncourse.2']['student.1'] ='';