NHibernate初学者指南(4):定义数据库架构

一些基本知识

本篇文章的目的是创建一个匹配我们模型的数据库,对于其中涉及到的一些数据库的知识就不再赘述。我简单的列一些涉及到的知识吧:

  • 如何在SSMS中创建数据库
  • 使用可视化和脚本创建数据表
  • 数据库中的数据类型
  • 关系(一对多,一对一,多对多)
  • 约束(非空约束,唯一约束,主键约束,检查约束,外键约束)
  • 索引
  • 数据库三范式

大概就涉及到这些知识吧,任何一本数据库的书上都有对以上知识的详细讲解。下面我们就一步一步完成数据库的设计。

实战时间

一、创建空数据库

1. 打开SSMS,新建一个数据库,名字为:OrderingSystem。

QQ截图20111112200533

二、创建Products表

1. 按照下图定义字段,并设置Id为主键。

QQ截图20111112204843

2. 添加Check约束。在表设计器中,在任意列右击,选择"Check约束",在弹出的对话框中单击"Add",添加一个新的Check约束。修改(名称)为CK_Product_ReorderLevel。在表达式中,添加ReorderLevel>=0。如下图所示:

QQ截图20111112205358

3. 添加索引。在表设计器中右击,选择"索引/键",在弹出的对话框中单击"Add"添加一个新索引,设置一下属性:a. 修改(名称)为IX_Products_Name。b. 选择Name(ASC)作为被索引的列名。c. 设置“类型”为索引。d. 设置“是唯一的”为是。如下图所示:

QQ截图20111112210039

三、创建Employees表

1. 按下图所示定义字段,Id设置为主键。

QQ截图20111112210231

四、创建Customers表

1. 按下图所示定义字段,Id设置为主键。

QQ截图20111112210438

五、创建Orders表

1. 按下图所示定义字段,Id设置为主键。

QQ截图20111112210553

六、创建LineItems表

1. 按下图所示定义字段,Id设置为主键。

QQ截图20111112210732

七、定义关系

1. 打开LineItems表的表设计器,右击选择"关系",单击"添加"添加一个新关系,修改(名称)为FK_LineItems_Products,因为我们想定义LineItems和Products表之间的关系。如下图所示:

QQ截图20111112211308

2. 单击"表和列规范"右边的按钮,在弹出的"表和列"对话框中选择Products作为主键表,Id作为列。选择LineItems表的ProductId作为外键列,如下图所示:

QQ截图20111112211632

3. 重复1-2步,添加LineItems和Order表之间的外键关系。如下图所示:

QQ截图20111112211911

4. 打开Order表的表设计器,按照上面的步骤为Orders和Customers表添加外键关系,如下图:

QQ截图20111112212104

5. 添加Orders和Employees表之间的外键关系,如下图所示:

QQ截图20111112212216

到此,已经完成了OrderingSystem数据库的定义,数据库的结构如下:

image

最后再提一个问题。当使用NHibernate或其他ORM框架时,不要使用数据库自动生成ID,因为它有很多缺点,NHibernate使用持久化对象ID(POID)指定主键。

总结

通过这篇文章我们创建了一个数据库,与我们定义的Model是相匹配的。下一篇我们将领域模型和数据库模型或者架构映射起来。

posted @ 2011-11-13 09:08  BobTian  阅读(2871)  评论(2编辑  收藏  举报