当前位置:首页 » 操作系统 » 数据库子类

数据库子类

发布时间: 2022-04-29 08:55:58

数据库设计中 子类需要单独建一张表吗

不需要单独建表。比如人类表Human,Man和Woman继承Human,只需要在humans表加一个type字段,如果是Man.new,type就存储Man,Woman.new,type就存储Human

⑵ 数据库ISA联系的定义

用E-R方法构建一个项目的模型时,经常会遇到某些实体型是某个实体型的子类型。例如,研究生和本科生是学生的子类型,学生是父类型。这种父类-子类联系称为ISA联系,表示“is a”的语义。例如,下图中研究生is a学生,本科生is a学生。ISA联系用三角形来表示。

ISA联系一个重要的性质是子类继承了父类的所有属性,当然子类也可以有自己的属性。例如,本科生和研究生是学生实体的子类型,他们具有学生实体的全部属性,研究生子实体型还有“导师姓名”和“研究方向”两个自己的属性。

ISA联系描述了对一个实体型中实体的一种分类方法,下面对分类方法做进一步说明。

(2)数据库子类扩展阅读

①分类属性

根据分类属性的值把父实体型中的实体分派到子实体型中。例如上图中,在ISA联系符号三角形的右边加了一个分类属性“学生类别”,它说明一个学生是研究生还是本科生由“学生类别”这个分类属性的值决定。

②不相交约束与可重叠约束

不相交约束描述父类中的一个实体不能同时属于多个子类中的实体集,即一个父类中的实体最多属于一个子类实体集,用ISA联系三角形符号内加一个叉号“X”来表示。

例如,下图表明一个学生不能既是本科生又是研究生。如果父类中的一个实体能同时属于多个子类中的实体集,则称为可重叠约束,子类符号中没有叉号表示是可重叠的。

③完备性约束

完备性约束描述父类中的一个实体是否必须是某一个子类中的实体,如果是,则叫做完全特化(total specialization),否则叫做部分特化(partial specialization)。

完全特化用父类到子类的双线连接来表示,单线连接则表示部分特化。假设学生只有两类,要么是本科生,要么是研究生,二者必居其一,这就是完全特化的例子,如图所示。

⑶ 数据库ER图怎样画超类型和子类型的联系

⑷ 数据库设计技巧

就我个人的经验来说,数据库虽然在设计上确实需要有一定的经验,但是它并不是最难的。
对于数据的设计其实是对于现实中业务的一种抽象。
就我的习惯的话,我会先对于现实中的业务场景、业务的角色进行分析。
就拿一般的进销存系统来举例吧。
我有一个对于物料管理的仓库,我需要对我的物料的进销存进行管理。
那么我们就需要分析,没有系统的时候,人与人之间的业务是怎么流转的,他们都是通过哪些表单来进行流转的,上下级之间的消息传递和反馈都是怎么进行的。
当知道了业务以后,我们的数据库无非就是对于现实中的业务的一种具现。
对于业务的设计完成以后,就是针对角色的了。
例如:业务的传递都是在业务人员之间的,我们已经整理表单的传递,那角色其实就已经在这些传递中存在了。
但是,业务的角色是业务的角色,我们还要包括财务的角色,那对于财务来说,他需要在哪些环节看到这些业务的单据?并且需要怎么处理?财务的处理结果又包括哪些?不同的处理结果对于下一步的操作又有什么影响。
当我们把这一切的逻辑整理完成后,我们对于数据库的功能上就已经满足了。
接下来的就是抽象数据的分类了。
例如:我们需要对不同的表进行一个分类,我个人喜欢把表分成三种,一种是基础数据表,一种是过程表,一种是结果表。
怎么解释呢?
基础数据表:顾名思义,就是对于基础数据的维护,哪些可以成为基础数据呢?就是我们的业务发生的各个过程中,这些数据都是可以参与其中的,这就是基础数据。
例如:货物的信息,客户的信息。
过程表:就是仅仅在一个过程中使用的表,当这个过程结束了,这个表就没用了。
例如:订单表,付款单表。他们表示的仅仅是订单从下单到最后关闭的这个过程,关闭以后,这个订单表其实我们就不会再去使用它了。
结果表:这个表的数据有一个特点,只允许添加,不允许删除和修改,这个表的数据本身就是对于一种最终结果的表现。
例如:日志表、账单表。
那我们在进行数据库设计的时候,就需要将这些使用情况考虑进去,将不同功能的表进行分离,尽量降低耦合,让相互表的修改不会影响使用。
例如:收款单,我们需要收一笔款的时候,就会生成这个收款单,当款收到后,这个收款单的功能就结束了。
但现实的情况中,可能财务收到了这笔钱,结束了收款单流程后,他发现填错了,本来应该收100,结果收款单写的110。
但是,收款单表示的是过程,当这个过程结束了,我们就不会再需要上一个收款单了,所以,按照我们业务的处理流程,我们应该先生成一笔冲抵的收款单,例如收到-110,然后再生成新的100的收款单。
我们每个月还会有财务统计报表,财务报表因为和现实中的财务账有关,是绝对不允许变动的,因此,这个财务报表就是一个结果表,我们会按月通过批处理程序,将收款单的明细和统计数据放到另一张表中,感觉好像比较冗余,但是这个确实非常必要的。
因为我曾经就遇到过一个情况,我们直接用过程表来进行数据的统计,然后11月30日有一笔收款已经完成了,结果发现收错了,就重新做了个收款单,结果本来已经出了11月结果的账单发生了变化,导致财务实际的处理出现了问题。
因此,数据的冗余有时候是有必要的,我们需要根据不同表的类型进行一些冗余的设计。
对于数据库设计的考虑点还有很多,可能一时半会儿也说不完,大家如果有什么好的思路,也可以在下方评论或关注我给我留言。

⑸ 树形数据库怎么获取子类

sql">withAas(selectid,CAST(名字asvarchar(200))名字,父亲名字from表名where父亲名字=0
unionall
selectB.id,cast(A.名字+''+B.名字asvarchar(200)),B.父亲名字
fromAjoin表名BonA.id=B.父亲名字)
select*
fromA
orderby2

将上述语句中的两个“表名”改为你自己的表名即可

⑹ 如何从数据库中查询出子类

例如:父类ID为FATHER_ID、子类ID为SUB_ID。语句如下
SELECT SUB_ID FROM TABLE_NAME WHERE FATHER_ID='';
例如:两张表,父类表为F_TAB、子类表为S_TAB。那么子类表中必定有父类ID的字段,关联查询就好。语句如下
SELECT F.FATHER_NAME,S.SUB_NAME FROM S_TAB S,F_TAB F WHERE S.FATHER_ID=F.FATHER_ID

⑺ 如何重构数据库设计满足超类/子类层次结构需求

既然超类子类都设计完了,数据结构和属性Bean之类的应该都有了把。
可以使用Hibernate反射数据表。重建数据库。

⑻ 在面向对象的数据库中,一个父类包含其所有子类的属性和方法。这句话正确吗

显然不对,子类可以继承父类的属性和方法,但子类功能也进行了扩展,这可能是父类所没有的

⑼ 子类怎样继承父类数据库连接和关闭


SQLConnection1.Params.clear
然后再添上你自己修改的值
SQLConnection1.Params.Values['ServerName'] := '192.168.0.112';
SQLConnection1.Params.Values['Database'] := 'trackData';
SQLConnection1.Params.Values['User_Name'] := 'sa';
SQLConnection1.Params.Values['Password'] := '123456';
SQLConnection1.Open;

⑽ 数据库设计中,实体可以有子类,那么联系可以有子类吗谢谢~

子过程是用来处理或解决特定功能的一个小模块
在程序中,我们经常需要多次用到某一特定功能,所以,为了方便,可以将这个功能写到某个过程中,在需要的时候,再调用,这样既简化了代码,也提高了程序的可读性及可调试性.
调用子过程,有两种方法:
一种是用Call来调用
语法:
Call 过程名(实参列表)

另一种是直接调用
语法 :
过程名 实参列表

热点内容
google访问ip 发布:2024-10-04 23:19:28 浏览:51
陕西税票服务器地址 发布:2024-10-04 23:04:23 浏览:16
2014访问学者 发布:2024-10-04 22:59:37 浏览:917
c质数的算法 发布:2024-10-04 22:58:32 浏览:521
三星的浏览器在哪个文件夹 发布:2024-10-04 22:57:05 浏览:987
连接line的服务器地址 发布:2024-10-04 22:57:01 浏览:181
衣柜门尺寸简单算法 发布:2024-10-04 22:56:54 浏览:722
有什么软件可以清理缓存垃圾 发布:2024-10-04 22:55:24 浏览:755
手机电脑中配置是指的什么 发布:2024-10-04 22:53:53 浏览:156
扩容数据存储的优势 发布:2024-10-04 22:51:37 浏览:643