Mysql Key与SuperKey的区别

Every key is a superkey, but only some superkeys are keys.

key是可以区分表中数据的最小集合

Superkey是可以区分表中数据的集合

如有错误,欢迎指正 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
一、数据库的背景及功能需求 进入21世纪以来,计算机的普及应用和信息技术、网络技术的发展给人们的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本,提高工作效率的首选。 相比之下,国内的相当数量的中小型医院的病人资料工作流程还采用相对保守的人工工作方式,数据信息的查询和存储的成本较高,而且效率还很低下。所以需要一种对于医院的病人资料管理系统来高效、低成本、便捷的进行医院病人信息数据的查询和存储。 1. 病人的相关信息应该由医院数据库管理员进行添加、删除、修改、查询等维护操作。 2. 需通过病人所患的疾病来确定病人的治疗 3. 对病人的编号、出生日期、性别、工作、住址信息进行查询。 4. 对病人的治疗进程,缴费情况等进行及时的更新与统一管理。 5. 医院需通过治疗结果来查看病人是否结束治疗,以进行必要的及时续约等行为。 6. 病人可通过数据库进行对所交费用,治疗情况的相关信息进行查看。 7. 病人信息的更新等等由数据库管理员进行维护。 系统功能的基本功能: 1病人信息包含编号,姓名,性别,出生日期,工作单位及地址,住址,工作,保险,医保号,电话,邮箱,死亡日期。 2交费项目信息包含项目序号,项目类型,缴费金额等 3回访记录包含住院号,病人编号,回访日期,回访人,记录,生命体征。 4 可通过对数据库的查询了解病人的相关信息,以及病情,并确定治疗方案。 所有关系模式都属于BC范式 (1)在关系模式patient中patientID是主键,所以在包含属性patientID的函数依赖是一个superkey。 (2)在关系模式中inpatient中number为主键,所以在所包含属性number的函数依赖是一个superkey。 (3)在关系模式outpatient中patientID为主键,所以包含patientID的函数依赖是一个superkey。 (4)在关系模式bed中number是主键,所以包含patientID的函数依赖是一个superkey。 (5)在关系模式department中depname是主键,所以在包含属性depname的函数依赖是一个superkey。 (6)在关系模式中re_call中number为主键,所以在所包含属性number的函数依赖是一个superkey。 (7)在关系模式case中caseID为主键,所以包含caseID的函数依赖是一个superkey。 (8)在关系模式charge1中chargeID是主键,所以包含chargeID的函数依赖是一个superkey。 (9)在关系模式charge2中chargeID是主键,所以在包含属性chargeID的函数依赖是一个superkey。 (10)在关系模式中inotice中inoticeID为主键,所以在所包含属性inoticeID的函数依赖是一个superkey。所以一定属于BCNF。 二、数据库的概念结构设计 病人资料管理系统的E-R模型 三、数据库的物理结构设计 住院病人inpatient 列名 数据类型 字段长度 字段描述 备注 Number Bigint 住院号 主键 patientID bigint 病人编号 非空,外码 Name Bigint 姓名 Inday Datetime 入院时间 Bedroom char 4 床号 Sort varchar 20 入院科别 病人信息表patient 列名 数据类型 长度 字段描述 备注 patientID bigint 病人编号 主键 Name varchar 20 姓名 不能为空 Sex char 4 性别 Birth datetime 出生日期 Dep varchar 40 单位 Depadd varchar 60 单位地址 address varchar 60 住址 Work varchar 10 工作 在职、离休、退休 Insure char 4 医保 insnumb varchar 30 医保号 有、无,不为空 Tel varchar 10 电话 Email varchar 50 E-mail deathday varchar 20 死亡日期 门诊病人表outpatient 列名 数据类型 字段长度 字段描述 备注 patientID Bigint 病人编号 主键 Jz_date Varchar 20 就诊时间 Pay varchar 10 缴费情况 病人就诊花费 Name varchar 20 姓名 非空 Sex char 10 性别 Age Int 年龄 床位bed 列名 数据类型 字段长度 字段描述 备注 Number Bigint 住院号 主键 Name Varchar( 20 姓名 非空 Bedroom bigint 床号 Doctor Varchar 20 主治医生 主管本床位的医生姓名 Result Varchar 20 治疗结果 Department varchar 20 所属病区 病区department 列名 数据类型 字段长度 字段描述 备注 Depname varchar 10 病区名称 主键 Bedamount bigint 病床数 Responsor varchar 20 负责人姓名 非空 Inpeople bigint 入住人数 Wellpor real 好转率 Death real 、 死亡率 回访re_call 列名 数据类型 长度 字段描述 备注 Number bigint 序号 主键,自动产生 patientID bigint 病人编号 不为空 Callday varchar 20 回访时间 Callbody varchar 20 回访人 Record varchar 500 回访记录 Life char 8 生命特征 死亡 门诊病历ccase 列名 数据类型 字段长度 字段描述 备注 caesID Bigint 病历号 主键 Name Varchar 20 姓名 非空 Context Varchar 60 病例内容 Diadate datetime 诊断时间 Doctor Varchar 20 主治医生 联系 支付2pay2 列名 数据类型 字段长度 字段描述 备注 PatientID bigint 病人编号 主键 chargeID Bigint 支付项目号 主键 Amount varchar 20 payDate datetime 支付时间 收费项目2charge2 列名 数据类型 字段长度 字段描述 备注 chargeID bigint 项目序号 主键 Chargesort Varchar 20 项目类型 Amount Varchar 10 收费金额 Name Varchar 20 病人姓名 Operator Varchar 20 收款员 收费项目1charge1 列名 数据类型 字段长度 字段描述 备注 chargeID bigint 项目序号 主键 Name Varchar 20 病人姓名 number bigint 住院号 外码 category Varchar 10 收费类型 chargeday datetime 收费日期 opertor varchar 20 收款人 Amount Varchar 10 应收金额 payamount Char 10 交费金额 入院通知单inotice 列名 数据类型 字段长度 字段描述 备注 inoticeID bigint 通知单号 主键 doctor varchar 20 医师姓名 非空 Name varchar 20 病人姓名 非空 PatientID bigint 病人编号 外码 Diagadvice varchar 40 诊断建议 Pay varchar 20 收费情况 Pass Char 4 是否批准 是 否。非空 关系及各属性 Patient(patientID,name,sex,birth,dep,depadd,address,work,insure,insnumb,tel,email,deathday) Inpatient(number,patientID,name,inday,sort,bedroom) Outpatient(patientID,name ,sex,age,jz_date,pay) Bed(number,name,bedroom,doctor,result,department,empty) Department(depname,bedamount,responsor,inpeople,wellpor,,deathpor) Re_call(number,patientID,callday,life,record,callbody) Case(caseID,name,context,diadate,doctor) Charge2(chargeID,chargesort,amount,name,operator) Charge1(chargeID,category,name ,number,chargeday,payamount,amount) inotice(inoticeID,doctor,name,patientID,diaadvice,pay,pass) 联系 Pay2(patientID,amount,paydate,chargeID) 触发器 1提醒触发器 create trigger reminder on patient after insert,update as raiserror('你在插入或修改病人的数据',16,10); 2.更新操作的触发器 create trigger hehe on outpatient for update as begin update outpatient set pay=pay*0.9 end 存储过程 1病人信息插入的存储过程 create procedure patientInsert ( @patientID bigint, @name varchar(20), @sex char(4), @birth datetime, @dep varchar(40), @depadd varchar(60), @address varchar(60), @work varchar(10), @insure char(4), @insnumb varchar(30), @tel varchar(15), @email varchar(50), @deathday datetime ) as insert into patient( name,sex ,birth ,dep,depadd ,address ,work ,insure,insnumb ,tel ,email ,deathday ) values(@name,@sex ,@birth ,@dep,@depadd ,@address ,@work ,@insure,@insnumb ,@tel ,@email ,@deathday ) 2 住院病人信息插入的存储过程 create procedure inpatientInsert ( @number bigint, @patientID bigint, @name varchar(20), @inday datetime, @sort char(20), @bedroom char(4) ) as insert into inpatient( number,patientID ,name ,inday ,sort ,bedroom ) values( @number ,@patientID ,@name ,@inday ,@sort ,@bedroom ) 索引 1 use hospital_patient create unique nonclustered index inpatient_name on inpatient ( name ) 2 use hospital_patient create nonclustered index charge_amount on charge1 ( amount desc )
数据(Data)是数据库中存储的基本对象,是描述事物的符号记录。其种类包括:文字、 图形、图像、声音。其特点:数据与其语义是不可分的。 数据结构:逻辑结构:级2数据之间存在的逻辑关系。如表、树、图、数组… 物理结构:数据在计算机内的存储方式,如顺序方式、链接方式… 数据库:人们收集并抽取出一个应用所需要的大量数据之后,应将其保存起来以供进一 步加工处理,进一步抽取有用信息。数据库的特征:数据按一定的数据模型(网状,层次 ,关系型)组织、描述和储存;可为各种用户共享;冗余度较小(便于保持数据的一致 性);数据独立性较高;易扩展 数据库管理系统(Database Management System,简称DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成 。是位于用户与操作系统之间的一层数据管理软件。DBMS的用途:科学地组织和存储数 据、高效地获取和维护数据。主要功能:数据定义功能,即提供数据定义语言(DDL),定 义数据库中的数据对象;数据操纵功能(DML):如插入删除等;数据库的运行管理功能 ;数据库的建立维护功能。 数据库系统(Database System,简称DBS)是指在计算机系统中引入数据库后的系统构成 在不引起混淆的情况下常常把数据库系统简称为数据库。由数据库、数据库管理系统、 应用系统(及其开发工具) 、数据库管理员(和用户)构成。 数据库的特点:面向全组织的复杂的数据结构;具有较高的数据和程序的独立性;数据 的冗余度小,易扩充;统一的数据控制功能,数据共享程度高 型是对数据的结构和属性的说明----模式 值是型的一个具体赋值 ----实例 数据库三级模式 外模式(Sub-Schema 子模式):用户的数据视图,是数据的局部逻辑结构,模式的子集可以有多个 模式(Schema):所有用户的公共数据视图,是数据库全体数据的全局逻辑结构和特性的 描述 只有一个 内模式(Storage Schema 存储模式):是数据的物理结构及存储方式,只有一个 数据抽象:物理层:最低层次的抽象,描述数据如何存储 逻辑层:描述数据及数据间的关系 视图层:描述整个数据库的某一部分,使用户与系统交互更简单 数据模型:描述数据、数据联系、数据语义以及一致性约束的概念工具的集合 三大数据模型:关系模型:用二维表来表示实体及其相互联系;层次模型:用树结构表 示实体之间联系的模型叫层次模型;网状模型:是一个满足下列条件的有向图:可以有 一个以上的节点无父节点;至少有一个节点有多于一个的父节点(排除树结构) 事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一 个不可分割的工作单位。事务具有原子性(事务包含的所有操作,要么做完,要么不做 ),一致性(事务开始前和事务结束后,数据库都保持一致性),隔离性(对于两个事 ),持久性(即使发生故障,也无法改变其永久性) 超码(superkey):是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中 唯一地标识一个元组 候选码(Candidate Key):关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属 性,它就不具有这一性质了,这样的属性组称作候选码。 主码(Primary Key):进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。主码不可为 空。 实体完整性:关系的主码中的属性值不能为空值(若主码为空,则出现不可标识的实体 ,这是不容许的)空值:不知道或无意义。 参照完整性:如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的 Fk值或者等于R1 中某个元组的Pk 值,或者为空值。 常用完整性约束:主码约束;唯一性约束;非空值约束:NOT NULL;参照完整性约束 关系代数运算:基本运算:一元运算:选择、投影、更名;多元运算:笛卡儿积、并、 集合差;其它运算:集合交、θ连接、自然连接、除、赋值 空值:不知道或不存在。空值的表现:参与算术运算:结果为Null;参与比较运算:结 果为Null;参与逻辑运算:1、Null or true=ture 2、Null and false=false 3、其它情况结果为null(空值是一种状态,不是一个明确的值) 空值测试:is [not] null (例如 :where AGE is null ,不可写为where AGE = null) 易错点 :除is [not] null之外,空值不满足任何查找条件;对于is null,为空则true,否则false;不会返回null;如果null参与聚集运算,则除count(* )之外其他聚集函数都忽略null;对于聚集函数,若输入集合为空,count返回0,其他返 回null。 例:select count(*) fr

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值