Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Cassandra CQL中创建外键_Sql_Cassandra_Foreign Keys_Foreign Key Relationship_Cql - Fatal编程技术网

Sql 如何在Cassandra CQL中创建外键

Sql 如何在Cassandra CQL中创建外键,sql,cassandra,foreign-keys,foreign-key-relationship,cql,Sql,Cassandra,Foreign Keys,Foreign Key Relationship,Cql,我试图在Cassandra中复制一个SQL数据库,但是,尽管我在创建表时没有遇到任何问题,但我发现我找不到一个易于理解的示例来演示如何在Cassandra中创建外键 因此,如果我在SQL中有这样的代码: CREATE TABLE COOP_USUARIO ( CI VARCHAR2 (13 BYTE) NOT NULL , CUENTA VARCHAR2 (20 BYTE) NOT NULL , NOMBRE

我试图在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 ) ;

什么是用于相同目的的卡桑德拉CQL代码?

简单的回答是:没有用于相同目的的CQL代码

CQL没有外键的概念,也没有表之间约束的概念,就像不能在表之间进行连接一样

如果需要表之间的约束,则需要在代码中处理此问题。

“每个预期查询一个表)。使用这种方法,不需要外键”

这似乎有点误导。完全非规范化存在一致性风险
卡桑德拉。。。确保一致性问题的最佳方法是使用apply batch命令成批执行语句,并使用all或nothing commit

,因此,我唯一能做的就是通过代码控制它们?我能不能准备好数据库来做类似的事情?(这次只是好奇)@Sascuash Cassandra和其他非关系数据库没有类似的概念,因为您应该对表进行建模以适应您的查询(例如,每个预期查询一个表)。使用这种方法,不需要外键。感谢您提供的信息;)您正在使用SQL进行思考,并将其转换为noSQL。要掌握noSQL,请使用noSQL进行思考。也就是说,范例是不同的,将SQL模式强行引入noSQL世界只会带来挫折。嗯,只是想帮助您过渡到nosql数据库。即使你有自己的答案,也要记住,为其他人保存信息也是如此,评论也能帮助他们。谢谢你。对不起,如果我之前不礼貌;)