首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否将外键引用作为枚举?

将外键引用作为枚举是不合适的。外键引用是一种关系型数据库中的概念,用于建立表与表之间的关联关系。而枚举是一种数据类型,用于定义一个固定的取值范围。

外键引用的作用是确保数据的完整性和一致性,通过建立外键关系,可以限制在一个表中引用另一个表的数据时,只能引用被引用表中已存在的数据。这样可以避免数据的不一致和错误引用。

而枚举是用于定义一组固定的取值范围,通常用于表示某个属性的可能取值。枚举的取值是在编译时确定的,不可动态修改。如果将外键引用作为枚举,就意味着将外键的取值范围限定为一个固定的集合,而无法动态地引用其他表中的数据。

因此,将外键引用作为枚举是不合适的。在设计数据库时,应根据实际需求和数据关系来建立外键引用,而不是将其作为枚举来处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 引用自身和on_delete参数

该模型使用引用自己本身。...如果对应的那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用的那条数据,那么就不能删除外的那条数据。如果我们强行删除,Django就会报错。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,== 前提是要指定这个字段一个默认值 ==。 SET():如果的那条数据被删除了。...那么将会获取SET函数中的值来作为这个的值。SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。...比如 django 中 on_delete=CASCADE, 但是数据库的约束是RESTRICT.

1.3K20
  • 项目中设计数据库是否要使用

    一、问题引入 学过数据库的同学都知道外能够保证数据的一致性。...以往做项目的时候,是肯定得用的,不用是万万不可能的。 可是有一天偶然看到书上说不建议使用,神马(O_o)??还有这样的操作?那该怎么去保证数据一致性啊,不会产生很多脏数据吗?想想就头大。...1、必须建啊 既然人家数据库团队提供了这么一个功能,那肯定不是鸡肋功能,不然费这么大劲维护干嘛。...; (2)等于把数据的一致性事务实现,全部交给数据库服务器完成; (3)有了,当做一些涉及字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源; (4)还会因为需要请求对其他表内部加锁而容易出现死锁情况...优点: (1)减少了数据库表与表之间各种关联的复杂性; (2)牺牲应用服务器资源,换取数据库服务器的性能; (3)主动权把控在自己手里; (4)去掉相当于优化数据库性能; 缺点: (1)所有的约束

    93940

    【ES6基础】Map与WeakMap

    Map.png ES6里除了增加了Set(集合类型),笔者在这篇文章《Set与WeakSet》有过介绍,今天这篇文章介绍引入的新类型——Map(映射类型)及WeakMap。...(key) 某一键值对移除映射 map.clear() 清空映射中所有键值对 map.entries() 返回一个以二元数组(键值对)作为元素的数组 map.has(key) 检查映射中是否包含某一键值对...Set集合一样,Map映射也可以使用has()的方法来检查是否包含某。...WeakMap和WeakSet很相似,只不过WeakMap的会检查变量的引用,只要其中任意一个引用被释放,该键值对就会被删除。...WeakMap相对于Map是一个不可枚举的对象,必须使用对象作为键值。如何更好的使用Map和WeakMap还需要具体结合我们实际的业务场景进行灵活使用。

    86630

    【ES6基础】Map与WeakMap

    开篇 ES6里除了增加了Set(集合)类型(笔者在这篇文章《Set与WeakSet》有过介绍),今天的这篇文章笔者继续介绍ES6引入的新类型——Map(映射类型)和其对应的弱类型WeakMap。...(key) 某一键值对移除映射 map.clear() 清空映射中所有键值对 map.entries() 返回一个以二元数组(键值对)作为元素的数组 map.has(key) 检查映射中是否包含某一键值对...Set集合一样,Map映射也可以使用has()的方法来检查是否包含某。...以下表格进行了总结: 对比项 映射对象Map Object对象 存储键值对 √ √ 遍历所有的键值对 √ √ 检查是否包含指定的键值对 √ √ 使用字符串作为 √ √ 使用Symbol作为 √ √...WeakMap和WeakSet很相似,只不过WeakMap的会检查变量的引用,只要其中任意一个引用被释放,该键值对就会被删除。

    1.2K40

    高频js手写题之实现数组扁平化、深拷贝、总线模式_2023-02-23

    如果存在对象的嵌套, 那么浅拷贝无能为力 对于基础数据类型做一个最基本的拷贝 对引用类型开辟一个新的存储, 并拷贝一层对象属性 function deepClone(target) { if(typeof..., 使用以weakMap进行巧妙处理 使用Reflect.ownKeys返回一个由目标对象自身的属性组成的数组, 对于剩下的拷贝类型为object和function但不是null进行递归操作, 对于除了上述的类型直接进行...person); // true Object.getPrototypeOf 方法返回指定对象的原型(内部[Prototype]属性的值)继承原型链 WeakMap 对象是一组键值对的集合,其中的是弱引用对象...因为 WeakMap 是弱引用类型,可以有效防止内存泄漏,作为检测循环引用很有帮助,如果存在循环,则引用直接返回 WeakMap 存储的值。...Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

    42410

    高频js手写题之实现数组扁平化、深拷贝、总线模式

    如果存在对象的嵌套, 那么浅拷贝无能为力对于基础数据类型做一个最基本的拷贝对引用类型开辟一个新的存储, 并拷贝一层对象属性function deepClone(target) { if(typeof..., 使用以weakMap进行巧妙处理使用Reflect.ownKeys返回一个由目标对象自身的属性组成的数组,对于剩下的拷贝类型为object和function但不是null进行递归操作,对于除了上述的类型直接进行...== person); // trueObject.getPrototypeOf 方法返回指定对象的原型(内部[Prototype]属性的值)继承原型链WeakMap 对象是一组键值对的集合,其中的是弱引用对象...因为 WeakMap 是弱引用类型,可以有效防止内存泄漏,作为检测循环引用很有帮助,如果存在循环,则引用直接返回 WeakMap 存储的值。...Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

    37240

    5年前, 以太坊大脑送给V神一份神秘大礼; 今天, V神将它给了你...

    使用 enum 关键字声明枚举,后面跟着枚举标识符和花括号{}内的枚举值列表。值得注意的是,枚举声明没有分号作为终结符,并且列表中至少应该声明一个成员。...:这表示以太坊环境中的账户地址 byte:这表示固定大小的字节数组(byte1 到 bytes32) enum:可以保存预定义的常量值的枚举 值传递 如果值类型变量赋给另一个变量,或者值类型变量作为参数传送给函数...引用传递 当引用类型变量被赋给另一个变量时,或者当引用类型变量作为参数传送给函数时,EVM 会创建一个新变量实例并将指针从原始变量复制到目标变量中。这被称为引用传递。这两个变量都指向相同的地址位置。...如果已知,则可以检索映射中的值。下一个示例说明如何使用映射。合约中维护有一个 uint 类型的计数器作为映射的,并且在函数的帮助下存储和检索地址详细信息。...在此示例中,有一个显式的映射, uint 映射到另一个映射。子映射存储为第一个映射的值。子映射的为 address 类型,值为 string 类型。

    1.8K20

    java进阶的16个知识点

    i++: 先将i值赋给一个临时变量,在进行i+=1后临时变量返回 ++i: i+=1 3.java中无优先级的运算顺序是怎样的?i+++j是计算(i++)+j还是i+(++j)?...不重写equals的话,equals继承自Object,判断方法依旧是== 键值对集合是利用hashcode存取值的 ,当引用对象作为键值对集合中的时,键值相等,但hashcode不相等,就没法获取...This对象,在对象被实例化、对象成员函数被调用的时候,虚拟机自动将该对象的引用作为隐藏参数传入构造器静态方法是类方法,this指代的是被实例化后的具体某个对象。...枚举类型本质上是一个final类,继承自java.lang.Enum类 在枚举类型保持被枚举对象的引用,且用public static final进行修饰,这样外界就可以直接通过枚举类型.被枚举对象来访问该对象...内部成员类中隐藏了一个外围对象的引用,在实例化的时候,自动将该引用指向实例化的外围类对象

    53070

    【MySQL】MySQL数据库的初阶使用

    2.3 枚举和集合类型 1. enum是枚举类型,可以在枚举的选项中单选出一个作为数值插入到表中,set是集合类型,可以在集合的选项中多选或单选出某些数值插入到表中。...1开始的了,因为MySQL中某些函数想要用0来作为查询结果是否存在的判断值。...当建立约束后,为stu表中的class_id,引用自class表中的id,如果此时学生插入到不存在的班级,或者删除某个班级,一个学生插入到两个班级等等不合逻辑的操作,都会被MySQL拦截掉,保证表与表之间正确的关联关系...其实这里的,个人觉得和复合主键有那么一点点相似,必须保证引用之间的唯一性,但的约束显然是要比复合主键更严格的,比如删除引用引用中还存在着)是不被允许的,一个列中的字段只能配一个引用列中的字段...订单中的商品编号和客户编号需要约束,引用到goods和customer各自的goods_id和customer_id中。

    33830

    21个MySQL表设计的经验准则

    当表的字段数非常多时,可以表分成两张表,一张作为条件查询表,一张作为详细内容表 (主要是为了性能考虑)。 8....不搞关联,一般都在代码维护 什么是呢? ,也叫FOREIGN KEY,它是用于两个表连接在一起的。...阿里的Java规范也有这么一条: 【强制】不得使用与级联,一切概念必须在应用层解决。 我们为什么不推荐使用呢? 使用存在性能问题、并发死锁问题、使用起来不方便等等。...每次做DELETE或者UPDATE都必须考虑约束,会导致开发的时候很难受,测试数据造数据也不方便。 还有一个场景不能使用,就是分库分表。 13....这三种存储引擎的对比区别吧: 特性 INNODB MyISAM MEMORY 事务安全 支持 无 无 存储限制 64TB 有 有 空间使用 高 低 低 内存使用 高 低 高 插入数据速度 低 高 高 是否支持

    1.7K21

    数据库相关操作

    ANSI(美国国家标准协会)规定,SQL被作为关系型数据库管理系统的标准语言。...字段的内容不允许为空 create table 表名(字段名 字段类型 not null); 默认值约束 字段没有给定值时,使用的默认填充值 create table 表名(字段名 字段类型 default 值); 约束...为两表建立引用参考关系 create table 表名(字段名 字段类型… , foreign key(字段名) references 关联表名(关联字段名); 检查约束 检查约束在MySQL中无效...主键约束 1.添加 altertable 表名 addconstraint 约束名 primarykey(字段名); 2.删除 altertable 表名 dropprimary key; 约束...1.添加 altertable 表名 addconstraint 约束名 foreignkey(字段名)references 关联表(关联字段名); 2.删除 altertable 表名 dropforeign

    95420

    SQL命令 CREATE TABLE(五)

    SET NULL-删除行或更新被引用表中的键值时,检查所有引用表,以查看是否有任何行引用要删除或更新的行。如果是,则该操作会导致引用要删除或更新的行的字段设置为NULL。字段必须允许空值。...SET DEFAULT-删除行或更新被引用表中的键值时,检查所有引用表,以查看是否有任何行引用要删除或更新的行。如果是,则该操作会导致引用要删除或更新的行的字段设置为该字段的默认值。...如果字段没有默认值,它将被设置为NULL。需要注意的是,在包含缺省值条目的被引用表中必须存在一行。 CASCADE -删除被引用表中的行时,检查所有引用表,以查看是否有任何行引用要删除的行。...但是,如果定义为NOCHECK,则SQL查询处理器不会将其视为已定义的。NOCHECK仍然作为报告给xDBC目录查询。...但是,可以隐式投影到ODBC/JDBC和管理门户。所有字段引用作为投影到ODBC/JDBC,如下所示: 这些隐式被报告为无操作的UPDATE和DELETE引用操作。

    1.8K50

    Rust学习笔记之集合

    为了修改可变引用所指向的值,在使用 += 运算符之前必须使用「解引用运算符」(*)获取 i 中的值。 ---- 使用枚举来储存多种类型 提到 vector 只能储存相同类型的值。...它通过一个哈希函数hashing function来实现映射,决定如何和值放入内存中。 哈希 map 可以用于需要「任何类型作为」来寻找数据的情况,而不是像 vector 那样通过索引。...---- 只在没有对应值时插入 会检查某个特定的是否有值,如果没有就插入一个值。为此哈希 map 有一个特有的 API,叫做 entry,它「获取我们想要检查的作为参数」。..., scores); Entry 的 or_insert 方法在对应的值「存在时就返回这个值的可变引用」,如果「不存在则将参数作为新值插入并返回新值的可变引用」。...这里我们这个可变引用储存在 count 变量中,所以为了赋值必须首先使用星号(*)解引用 count。

    65420

    杰哥教你面试之一百问系列:java集合

    – EnumMap: 也是java.util包中的一个专门为枚举类型设计的Map实现。它的必须是同一个枚举类的枚举值,提供了非常高效的枚举键值对存储和查找操作。...因为枚举的取值是有限的,所以使用位向量可以提供高效的存储和访问。 – EnumMap: 是java.util包中为枚举类型设计的高效映射类,它的必须是同一个枚举类的枚举值。...回答: – EnumMap: EnumMap是java.util包中的一个实现了Map接口的类,专门用于枚举类型作为的情况。它的必须来自同一个枚举类,这使得它在具有枚举的情况下效率更高。...回答: EnumMap是java.util包中的一个实现了Map接口的类,专门用于枚举类型作为的情况。EnumMap的必须来自同一个枚举类,这使得它在具有枚举的情况下效率更高。...PhantomReference(虚引用): 虚引用对象在任何时候都可能被垃圾回收。虚引用主要用于跟踪对象是否已经从内存中删除,但不能通过虚引用来获取对象本身。

    28020

    杰哥教你面试之一百问系列:java集合

    – EnumMap: 也是java.util包中的一个专门为枚举类型设计的Map实现。它的必须是同一个枚举类的枚举值,提供了非常高效的枚举键值对存储和查找操作。...回答:– EnumMap: EnumMap是java.util包中的一个实现了Map接口的类,专门用于枚举类型作为的情况。它的必须来自同一个枚举类,这使得它在具有枚举的情况下效率更高。...回答:EnumMap是java.util包中的一个实现了Map接口的类,专门用于枚举类型作为的情况。EnumMap的必须来自同一个枚举类,这使得它在具有枚举的情况下效率更高。...PhantomReference(虚引用): 虚引用对象在任何时候都可能被垃圾回收。虚引用主要用于跟踪对象是否已经从内存中删除,但不能通过虚引用来获取对象本身。...回答:Collections.addAll()方法是java.util包中的一个静态方法,用于一组元素添加到集合中。这个方法接受一个目标集合和一组元素作为参数,并将这些元素添加到目标集合中。

    24840
    领券