2014-12-28 11 views
5

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

Итак, если у меня есть это в SQL:

CREATE TABLE COOP_USUARIO (
CI     VARCHAR2 (13 BYTE) NOT NULL , 
CUENTA    VARCHAR2 (20 BYTE) NOT NULL , 
NOMBRE    VARCHAR2 (50 BYTE) NOT NULL , 
EMAIL    VARCHAR2 (255 BYTE) NOT NULL , 
DIRECCION   VARCHAR2 (255 BYTE) , 
CIUDAD    NUMBER NOT NULL , 
TELEFONO    VARCHAR2 (10 BYTE) NOT NULL , 
TIPO_PERSONA   NUMBER (1) NOT NULL , 
); 
CREATE UNIQUE INDEX COOP_USUARIO_PK ON COOP_USUARIO(
CI ASC 
); 
ALTER TABLE COOP_USUARIO ADD CONSTRAINT COOP_USUARIO_PK PRIMARY KEY (CI) ; 

CREATE TABLE COOP_CIUDADES 
(
ID  NUMBER NOT NULL , 
NOMBRE VARCHAR2 (25 BYTE) NOT NULL , 
PROVINCIA NUMBER NOT NULL 
) ; 
CREATE UNIQUE INDEX COOP_CIUDADES_PK ON COOP_CIUDADES 
(
    ID ASC 
); 
ALTER TABLE COOP_CIUDADES ADD CONSTRAINT COOP_CIUDADES_PK PRIMARY KEY (ID) ; 


ALTER TABLE COOP_USUARIO ADD CONSTRAINT COOP_USUARIO_CIUDADES_FK FOREIGN KEY (CIUDAD) REFERENCES COOP_CIUDADES (ID) ; 

Что такое код Cassndra CQL для той же цели?

+2

Вы думаете в SQL и переводите на noSQL. Чтобы освоить noSQL, подумайте в noSQL. То есть парадигмы различны, и заставить шаблоны SQL в мире noSQL приведет только к разочарованию. –

+2

У меня уже был мой ответ, если вы только отправляете комментарии уже с принятым ответом и оцениваете эти вопросы людей, начинающих изучать новые технологии, вы можете сохранить свое мнение к вам. Спасибо – Sascuash

+1

Хорошо. Ну, просто пытаюсь помочь вам в вашем переходе на базы данных nosql. И хотя у вас есть свой ответ, имейте в виду, что SO - это сохранение информации для других, которые приходят, и комментарии могут помочь им. –

ответ

16

Простой ответ: Код CQL для этой же цели отсутствует.

У CQL нет понятия внешних ключей или любой концепции ограничений между таблицами так же, как вы не можете делать соединения между таблицами.

Если вам нужно ограничение между таблицами, вам необходимо обработать это в коде.

+0

Итак, единственное, что я могу сделать, это контролировать их с помощью кода? Не могу ли я каким-то образом подготовить базу данных, чтобы сделать что-то подобное? (просто любопытно на этот раз) – Sascuash

+2

@Sascuash Cassandra и другие нереляционные базы данных не имеют ничего подобного этой концепции, потому что вы должны моделировать свои таблицы в соответствии с вашими запросами (как внутри, так и по одной таблице для каждого ожидаемого запроса). При таком подходе нет необходимости в внешних ключах. – Aaron

+0

Спасибо за информацию;) – Sascuash

0

«одна таблица для каждого ожидаемого запроса). С помощью этого типа подхода, нет необходимости внешнего ключа»

это кажется немного вводит в заблуждение. есть риски согласованности с полной денормализацией в Cassandra ... лучший способ застраховать от проблем с непротиворечием - делать заявления в пакетах со всеми или ничего фиксировать с использованием команды пакетного ввода

Смежные вопросы