Oracle数据库第4讲:数据完整性与约束解析

0 下载量 64 浏览量 更新于2024-06-29 收藏 1.01MB PPT 举报
"Oracle数据库第4讲.ppt" Oracle数据库是一个高度复杂且强大的关系型数据库管理系统,它提供了多种机制来确保数据的完整性,从而保证数据库中的信息准确无误且符合业务规则。本讲主要介绍了五种关键的约束类型,用于维护数据的完整性。 1. **非空约束(NOT NULL)**:非空约束确保一个字段不能存储NULL值。如果在列上定义了NOT NULL,那么在插入或更新数据时,必须为该列提供有效值。这是最基本的数据完整性保证,防止字段值缺失。 2. **唯一约束(UNIQUE)**:唯一约束保证一列中的所有值都是唯一的,允许出现NULL值。如果有两个相同的非NULL值,系统将不允许插入。这种约束可以用于创建唯一的标识符,但不一定是主键。 3. **主键约束(PRIMARY KEY)**:主键是用来唯一标识表中每一行数据的字段,其值不能重复且不能为NULL。一张表只能有一个主键,但可以有多个唯一约束。主键对于关联不同表之间的数据至关重要,通常用于建立外键约束的基础。 4. **外键约束(FOREIGN KEY)**:外键约束定义了主表(被引用表)与从表(引用表)之间的关系。外键存在于从表中,参照主表的主键或唯一约束列。这样可以确保从表中的数据与主表数据的一致性,防止非法数据的插入。外键约束确保了引用完整性,即从表的外键值必须在主表的主键列中存在,或者为NULL。 5. **检查约束(CHECK)**:检查约束允许设置自定义的业务规则,以确保列中的数据符合特定条件。例如,可以定义一个检查约束,限制某个字段的取值范围。如果插入或更新的数据违反了这个约束,操作将会失败。 在实际应用中,例如一个商店的数据库设计,可以利用这些约束来确保数据的正确性。例如: - **商品表(goods)**:可以为商品号(goodsId)设置主键约束,确保每个商品都有唯一的标识;商品类别(category)和供应商(provider)可能需要非空约束,确保信息完整。 - **客户表(customer)**:客户号(customerId)作为主键,姓名(name)、住址(address)、电邮(email)等字段可能设置非空约束,性别(sex)和身份证(cardId)也可能有特定的格式约束。 - **购买表(purchase)**:客户号(customerId)和商品号(goodsId)作为外键,参照客户表和商品表的主键,确保购买数据的关联正确;购买数量(nums)可能需要非负整数的检查约束。 通过合理使用这些约束,数据库设计者可以构建出结构清晰、数据准确的数据库,有效避免数据冗余和不一致的问题,提高数据管理的效率和质量。在商店售货系统中,这样的设计有助于确保每个客户的购买记录都能正确地关联到相应的产品和客户信息。