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 @   BobTian  阅读(2875)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示
CONTENTS