NHibernate初学者指南(4):定义数据库架构
一些基本知识
本篇文章的目的是创建一个匹配我们模型的数据库,对于其中涉及到的一些数据库的知识就不再赘述。我简单的列一些涉及到的知识吧:
- 如何在SSMS中创建数据库
- 使用可视化和脚本创建数据表
- 数据库中的数据类型
- 关系(一对多,一对一,多对多)
- 约束(非空约束,唯一约束,主键约束,检查约束,外键约束)
- 索引
- 数据库三范式
大概就涉及到这些知识吧,任何一本数据库的书上都有对以上知识的详细讲解。下面我们就一步一步完成数据库的设计。
实战时间
一、创建空数据库
1. 打开SSMS,新建一个数据库,名字为:OrderingSystem。
二、创建Products表
1. 按照下图定义字段,并设置Id为主键。
2. 添加Check约束。在表设计器中,在任意列右击,选择"Check约束",在弹出的对话框中单击"Add",添加一个新的Check约束。修改(名称)为CK_Product_ReorderLevel。在表达式中,添加ReorderLevel>=0。如下图所示:
3. 添加索引。在表设计器中右击,选择"索引/键",在弹出的对话框中单击"Add"添加一个新索引,设置一下属性:a. 修改(名称)为IX_Products_Name。b. 选择Name(ASC)作为被索引的列名。c. 设置“类型”为索引。d. 设置“是唯一的”为是。如下图所示:
三、创建Employees表
1. 按下图所示定义字段,Id设置为主键。
四、创建Customers表
1. 按下图所示定义字段,Id设置为主键。
五、创建Orders表
1. 按下图所示定义字段,Id设置为主键。
六、创建LineItems表
1. 按下图所示定义字段,Id设置为主键。
七、定义关系
1. 打开LineItems表的表设计器,右击选择"关系",单击"添加"添加一个新关系,修改(名称)为FK_LineItems_Products,因为我们想定义LineItems和Products表之间的关系。如下图所示:
2. 单击"表和列规范"右边的按钮,在弹出的"表和列"对话框中选择Products作为主键表,Id作为列。选择LineItems表的ProductId作为外键列,如下图所示:
3. 重复1-2步,添加LineItems和Order表之间的外键关系。如下图所示:
4. 打开Order表的表设计器,按照上面的步骤为Orders和Customers表添加外键关系,如下图:
5. 添加Orders和Employees表之间的外键关系,如下图所示:
到此,已经完成了OrderingSystem数据库的定义,数据库的结构如下:
最后再提一个问题。当使用NHibernate或其他ORM框架时,不要使用数据库自动生成ID,因为它有很多缺点,NHibernate使用持久化对象ID(POID)指定主键。
总结
通过这篇文章我们创建了一个数据库,与我们定义的Model是相匹配的。下一篇我们将领域模型和数据库模型或者架构映射起来。