如何在Cassandra CQL中创建外键

vql8enpb  于 2023-06-22  发布在  Cassandra
关注(0)|答案(3)|浏览(144)

我试图在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代码用于相同的目的?

toiithl6

toiithl61#

简单的回答是:没有用于相同目的的CQL代码。
CQL没有外键的概念,也没有表之间约束的概念,就像不能在表之间进行连接一样。
如果您需要表之间的约束,那么您需要在代码中处理它。

8xiog9wr

8xiog9wr2#

“每个预期查询一个表)。使用这种类型的方法,不需要外键”
这似乎有点误导。在Cassandra中完全去规范化存在一致性风险……确保不出现一致性问题的最佳方法是使用apply batch命令以all或nothing提交的方式成批执行语句

oaxa6hgo

oaxa6hgo3#

from django.db import models

# Create your models here.

import uuid
from cassandra.cqlengine import columns
from django_cassandra_engine.models import DjangoCassandraModel
class TestModel(DjangoCassandraModel):
    example_id=columns.UUID(primary_key=True, default=uuid.uuid4)
    json_data =columns.Text(required=False)

相关问题