SQL定义关系模式与完整性约束

需积分: 10 13 下载量 12 浏览量 更新于2024-09-09 收藏 41KB DOC 举报
"数据库设计涉及关系模式的定义和完整性约束的设定。在给定的描述中,有两个关系模式,职工和部门,它们都需要在SQL语言中进行创建,并且需要满足特定的完整性约束条件。职工关系模式包括职工号、姓名、年龄、职务、工资和部门号,其中职工号为主码。部门关系模式包含部门号、名称、经理名和电话,部门号为主码。" 在SQL中,创建这两个关系模式的语句如下: 首先,创建部门表(dept): ```sql CREATE TABLE dept ( dno CHAR(2) PRIMARY KEY, dname VARCHAR(10), mgr VARCHAR(10), tel CHAR(11) ); ``` 接着,创建职工表(emp),并定义完整性约束: ```sql CREATE TABLE emp ( eno CHAR(4) PRIMARY KEY, ename VARCHAR(10), eage TINYINT CHECK (eage <= 60), job VARCHAR(10), sal DECIMAL(7,2), dno CHAR(2), FOREIGN KEY (dno) REFERENCES dept(dno) ); ``` 在这个例子中,`eno` 是职工表的主码,确保每个职工号的唯一性。`FOREIGN KEY (dno) REFERENCES dept(dno)` 定义了参照完整性,即职工的部门号必须是部门表中存在的部门号。`CHECK (eage <= 60)` 约束则确保职工的年龄不超过60岁。 在实验部分,我们看到了如何在MySQL环境中执行这些创建表的命令,以及如何插入数据。首先,删除如果存在的旧表,然后创建新的表,最后插入一些示例数据到部门和职工表中。 需要注意的是,在尝试插入数据时,有一条记录尝试插入一个空的职工号,这是违反主码完整性约束的,因为职工号不能为空。另一条记录虽然没有指定职工号,但指定了其他字段,这在实际操作中也会失败,因为SQL插入语句通常要求所有非自增列都有值(除非使用NULL)。因此,插入数据时需要确保满足所有的完整性约束。 数据库设计的核心是确保数据的一致性和准确性。通过定义主码和外键,我们可以维护数据的参照完整性和实体完整性的。而使用CHECK约束可以进一步限制列的值,如职工年龄的范围,以符合业务逻辑。这样的设计对于数据库的管理和查询效率至关重要,同时也对数据的准确性和系统的稳定性提供了保障。