zoukankan      html  css  js  c++  java
  • 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是相匹配的。下一篇我们将领域模型和数据库模型或者架构映射起来。

    作者:BobTian
    出处http://nianming.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    欢迎访问我的个人博客:程序旅途
  • 相关阅读:
    大二下-个人课堂总结
    第十六周总结
    第十五周总结
    计算最长英语单词链
    第十四周总结
    大道至简阅读笔记03
    信息反馈—冲刺20
    sudo安装某一文件报错:E: 无法获得锁 /var/lib/dpkg/lock
    linux脚本文件执行的方法之间的区别
    opencv的安装及填坑
  • 原文地址:https://www.cnblogs.com/nianming/p/2246966.html
Copyright © 2011-2022 走看看