我试图在Cassandra中复制一个SQL数据库,但是,虽然我在创建表时没有问题,但我发现我找不到一个容易理解的例子来展示如何在Cassandra中创建外键。
所以,如果我在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代码用于相同的目的?
3条答案
按热度按时间toiithl61#
简单的回答是:没有用于相同目的的CQL代码。
CQL没有外键的概念,也没有表之间约束的概念,就像不能在表之间进行连接一样。
如果您需要表之间的约束,那么您需要在代码中处理它。
8xiog9wr2#
“每个预期查询一个表)。使用这种类型的方法,不需要外键”
这似乎有点误导。在Cassandra中完全去规范化存在一致性风险……确保不出现一致性问题的最佳方法是使用apply batch命令以all或nothing提交的方式成批执行语句
oaxa6hgo3#