Я продолжаю изучать Cassandra и хочу создать отношение Student ‹=> Course, похожее на отношение Many-to-Many в СУБД.
Что касается запросов, я буду использовать следующий запрос;
- Получить все курсы, на которые зачислен студент.
- Получить всех студентов, зачисленных на определенный курс.
Допустим, я создаю Column Families. один для курса, а другой для студента.
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? если да, могу ли я использовать Hector для запроса только одного (левого или правого) компонента составного ключа?
Пожалуйста помоги.
Обновление:
Следуя предложению, я создал следующую схему:
Для студента:
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']='';
Создайте столбец Family for Course:
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'] ='';