通用设计,数据库设计Step by Step (11)——通用设计模式(系列完结篇)

引言:前文(create table Cities ( CityID char(3) not null primary key, CityName varchar(30) not null, Region varchar(30) not null, Country varchar(30) not null ); create table Roads ( CityID char(3) not null references Cities, DestID char(3) not null references Cities, Distance int not null, primary key(CityID, DestID), check(CityID < DestID), check(Distance > 0) );
需要注意以下几点:
1. 上述代码在SQL Server 2008下测试通过。对于其他数据库产品,代码细节可能需稍作调整,但主体设计结构不变。
2. 为了更易于理解,图9道路系统ER模型中的关系connect,在转化为SQL表时更名为Roads。Roads表描述了一个无向循环赋权图。表中每一行表示一条边(道路)。Distance属性表示权值(城市间的距离)。
3. Roads表的CityID列和DestID列外键引用CityID表。
4. Roads表的主键为CityID,DestID。
5. Roads表中包含check约束(CityID < DestID),以避免存入两个相同的边(eg:“芝加哥到纽约”和“纽约到芝加哥”)。无向循环图中节点之间是平等的,故该约束很重要,避免冗余数据。
6. 若要扩展到“有向循环图”场景(如:道路系统中的单行道),我们只要去除check约束(CityID < DestID),此时不同方向的数据不再是冗余。
 
Summaryimageimageimageimageimageimageimageimageimageimageimageimage数据库设计Step by Step (11)&mdash;&mdash;通用设计模式(系列完结篇)通用设计
到这里整个系列将告一段落,希望大家能觉得该系列言之有物,读了能有些许收获。最后,对本系列博文作一个回顾,同时给出一些参考资料。
本系列篇目回顾
1. 数据库设计 Step by Step (1)——扬帆启航
2. 数据库设计 Step by Step (2)——数据库生命周期
3. 数据库设计 Step by Step (3)——基本ER模型构件
4. 数据库设计 Step by Step (4)——高级ER模型构件
5. 数据库设计 Step by Step (5)——理解用户需求
6. 数据库设计 Step by Step (6) —— 提取业务规则
7. 数据库设计Step by Step (7)——概念数据建模
8. 数据库设计 Step by Step (8)——视图集成
9. 数据库设计Step by Step (9)——ER-to-SQL转化
10. 数据库设计Step by Step (10)——范式化
11.
参考资料
以下推荐的两本书虽然不是关于数据库设计,但对于程序开发人员会有帮助。熟练掌握数据库查询与编程能促进对数据库设计的理解与学习。
1. 《Inside Microsoft SQL Server 2005 T-SQL Querying》——这是我当初看的一本书,对于深入理解数据库查询很有帮助。现在已经出了《Inside Microsoft SQL Server 2008 T-SQL Querying》。
2.  《Inside Microsoft SQL Server 2005 T-SQL Programming》——对于学习T-SQL编程很有助益。
Tags: 

延伸阅读

最新评论

发表评论