DBMS里的一些"自圆其说"(2)
书接
前回,上次提出了这样的问题:对于USERS和BILLING_DETAILS两个表,为什么非要把"USER_ID varchar(15) foreign key references USERS"放在BILLING_DETAILS表里?反过来行不行?也就是说在USERS表里加这个语句BILLING_DETAILS_ID foreign key references BILLING_DETAILS来替代.
这样的替代在语法上绝对没问题,那为什么不替代呢?替代了后会有什么不良后果呢?
我觉得这得从实际情况说起.
在实际生活中,USERS表所对应的Object是行动的主体,而BILLING_DETAILS所对应的Object完全处于从属关系.也就是说User可以有BILLING_DETAIL,也可以没有,若没有BILLING_DETAIL,一个User作为Object存在还是有意义的,这样的有意义反映有表间关系上就是在BILLING_DETAILS表里USER_ID要去references USERS;再反过来看时若用BILLING_DETAILS_ID foreign key references BILLING_DETAILS这样的引用关系,就是说BILLING_DETAILS表所对应的Object是主体了,一个BILLING_DETAIL可以不User也可以没有User,这样大多数情况下是不成立的.毕竟User的人是万物之首嘛,再说现在是Billing_Detail,也只有人才会发生这个Billing,从这个Billing身上也看出来那种正常的references关系.其实若仔细想想,那些少数的情况也是很容易找到的,仓库管理时的物件是以自身为主体了.
说了半天,现在更明白一点了:表间关系是整个软件系统所描述对象的映射,只不过在由DBA做这种映射处理时会根据实际情况(对象间关系的侧重点,查询性能优化...)translate成DDL的不同描述而已.
这也是传统的Buttom-up的软件建模情景,现在有了OO后,再加上Persistence的自动建表功能,是不是DBA的工作就被取代了呢?或在Persistence自动建表完成后,DBA再审查下,做下Tuning?
分享到:
相关推荐
oracle dbms_lob
Oracle DOM编程 文档,有要的没 Start from toc.htm DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY
DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER, block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade ...
简单的dbms_stats操作,简单的dbms_stats操作简单的dbms_stats操作
DBMS历史及发展趋势,全面诠释了未来DBMS的发展状况
西电编译原理上机报告DBMS的设计与实现
dbms c实现数据库课程设计,分享一下
设计并实现一个DBMS原型系统,可以接受基本的SQL语句,对其进行词法分析、语法分析,然后解释执行SQL语句,完成对数据库文件的相应操作,实现DBMS的基本功能。
有的人的PowerDesigner16.5版本的DBMS文件里找不到MySQL5.0的模型,下载解压然后覆盖掉安装目录里PowerDesigner\Resource Files\DBMS就行
oracle中DBMS_SQL的使用,详细讲解oracle DBMS_SQL的使用办法
一个c语言开发的小型的dbms系统,支持造表查询,删除等一些简单的操作
DBMS 高级语言开发,很不错的。DBMS 高级语言开发,很不错的。DBMS 高级语言开发,很不错的。
数据库课程设计-一个简单的DBMS系统2 数据库课程设计-一个简单的DBMS系统2
jchjks hcshcjksh jckhskj hskjhxjks
java实现DBMS
a first course to dbms 一书的讲义
DBMS系统的实现, 用C语言写的, 课程设计的东西。 没咋写注释,但是看看应该能懂
小型的DBMS,实现了基本功能,对表的操作
1、源程序:DBMS; 2、数据文件:data; 3、测试所使用的SQL语句:sql.log; 4、DBMS程序皮肤文件:audk.exe,先安装后采用 Microsoft Visual Studio C++ 6.0 运行程序; 5、数据信息文件存储在E:\\data目录下,具体...
DBMS的概论,数据存储,数据元素的表示,索引结构,多维索引,查询执行,查询编译器,系统故障对策,并发控制