Модель базы данных для вопросов-ответов в Кассандре - PullRequest
0 голосов
/ 05 ноября 2018

у меня есть:

  • Тесты, каждый тест содержит несколько вопросов.
  • Вопросы, каждый вопрос имеет метку, максимум 4 изображения, тип вопроса (несколько правильных, одно правильное, заполните пробел). У каждого вопроса могут быть варианты.
  • Каждый параметр имеет метку и может иметь 1 изображение, связанное с ним.

В настоящее время я сделал это как:

create table quizzes (
    id uuid primary key,
    title ascii,
    questions set<uuid>,
    created_at timeuuid,
    updated_at timeuuid
);
create type options_info (
  label ascii,
  image uuid
);
create table questions (
    id uuid primary key,
    label ascii,
    images list<uuid>,
    options set<options_info>,
    type uuid,
    updated_at timeuuid
);
create table question_type (
    id uuid,
    name ascii,
    primary key(id, name)
);
create table images (
    id uuid primary key,
    image blob,
    caption ascii,
    uploaded_at timeuuid
);

Эмм, я думаю, что может быть лучшая модель, чем я сделал. Какие-нибудь улучшения? Кроме того, я хочу сохранить, какой вариант является правильным. Я немного застрял в создании наилучшей структуры.

1 Ответ

0 голосов
/ 05 ноября 2018

Я думаю, что основная проблема заключается в том, что вы думаете о реляционных моделях при моделировании данных в базе данных nosql. Первое правило таково: лучше использовать ненормализованные таблицы таким образом, чтобы в ваших запросах не требовалось объединение или внешние ключи, чтобы их можно было обрабатывать с одной или двумя таблицами.

Пожалуйста, сначала прочтите это внимательно: https://www.datastax.com/dev/blog/basic-rules-of-cassandra-data-modeling

...