4.8 实验指导——冰箱信息维护

本章详细介绍了通过约束来实现数据完整性的维护,结合本章内容,创建冰箱信息表和冰箱主人信息表并对其字段进行完整性分析,约束的创建和修改,要求如下。

创建冰箱信息表refrigerator,有字段rid、brand、model和owner。对其各个字段分析如下。

(1)rid字段数据类型为INT,有主键约束、非空约束和自增约束。

(2)brand字段数据类型为VARCHAR,有非空约束和默认值“海尔”。

(3)model字段数据类型为VARCHAR。

(4)owner字段数据类型为INT,有非空约束。

创建冰箱主人信息表owners,有字段oid、name、sex、age和phone,数据类型分别为INT、VARCHAR、VARCHAR、INT和VARCHAR。对其各个字段分析如下。

(1)oid字段有主键约束和非空约束。

(2)name字段有非空约束。

(3)sex字段有默认值“男”。

(4)age字段值为整数。

(5)phone字段有非空约束。

由于refrigerator表中的每一条冰箱记录都对应owners表中的一个冰箱拥有者,因此表refrigerator表中的owner字段需要与owners表中的oid对应。因此需要为refrigerator表设置外键约束。

实现上述操作,步骤如下。

(1)创建冰箱信息表refrigerator,有字段rid、brand、model和owner,并设置它们的约束,代码如下。

CREATE TABLE 'fruitshop'.'refrigerator' (
      'rid' INT NOT NULL AUTO_INCREMENT,
      'brand' VARCHAR(45) NOT NULL DEFAULT '海尔',
      'model' VARCHAR(45) NULL,
      'owner' INT NULL,
      PRIMARY KEY ('rid'));

(2)创建冰箱主人信息表owners,有字段oid、name、sex、age和phone,并设置它们的约束,代码如下。

CREATE TABLE 'fruitshop'.'owners' (
      'oid' INT NOT NULL,
      'name' VARCHAR(45) NOT NULL,
      'sex' VARCHAR(45) NULL DEFAULT '男',
      'age' INT UNSIGNED NULL,
      'phone' VARCHAR(45) NOT NULL,
      PRIMARY KEY ('oid'));

(3)为refrigerator表设置外键约束,使owner字段对应owners表中的oid字段,代码如下。

ALTER TABLE 'fruitshop'.'refrigerator'
    ADD INDEX 'owner_idx' ('owner' ASC);
    ALTER TABLE 'fruitshop'.'refrigerator'
    ADD CONSTRAINT 'owner'
      FOREIGN KEY ('owner')
      REFERENCES 'fruitshop'.'owners' ('oid')
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;