反思之技术实现(一)-Data architechture

考虑到使用Entity Framework 5 or up, EF项目构建有两种模式:Db first 和 Code first。顾名思义,Db first就是先设计好数据库框架,然后由VS edmx模型导出相应的数据Models,最终实现各种Business logic services;Code first就是先将所有的Models设计好(各种以来关系),然后通过编译和数据移植的方式产生数据库,同时实现业务层逻辑。
    考虑到Db first相对来说简单快捷(设计好了数据库,通过自动化就可以生成Models和Dbcontext entities,缺点是:若修改Models后,重新根据Database生成新的Models的时候,原修改将会被覆盖)。

(1),通过Vistual Studio新建Database项目。
(2),新建各种Tables和存储过程,触发器等等,其中表包括用户表(Users)、分类表(Columns)、博客内容表(Contents)、评论表(Comments)。

一、用户表

CREATE TABLE [dbo].[Users]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[UserName] VARCHAR(50) NOT NULL,
[Password] VARCHAR(50) NOT NULL,
[FullName] VARCHAR(50) NOT NULL,
[CreatedUserId] INT,
[CreatedTime] DATETIME DEFAULT GETDATE(),
[LastUpdatedUserId] INT,
[LastUpdatedTime] DATETIME DEFAULT GETDATE(),
CONSTRAINT [FK_Users_Users_CreatedUserId] FOREIGN KEY ([CreatedUserId]) REFERENCES [Users]([Id]),
CONSTRAINT [FK_Users_Users_LastUpdatedUserId] FOREIGN KEY ([LastUpdatedUserId]) REFERENCES [Users]([Id])
)

二、分类表

CREATE TABLE [dbo].[Columns]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[ColumnName] VARCHAR(50) NOT NULL,
[Description] VARCHAR(128),
[ParentId] INT,
[CreatedUserId] INT,
[CreatedTime] DATETIME DEFAULT GETDATE(),
[LastUpdatedUserId] INT,
[LastUpdatedTime] DATETIME DEFAULT GETDATE(),
CONSTRAINT [FK_Columns_Users_CreatedUserId] FOREIGN KEY ([CreatedUserId]) REFERENCES [Users]([Id]),
CONSTRAINT [FK_Columns_Users_LastUpdatedUserId] FOREIGN KEY ([LastUpdatedUserId]) REFERENCES [Users]([Id])
)

三、博客内容表

CREATE TABLE [dbo].[Contents]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[Title] VARCHAR(128) NOT NULL,
[Description] VARCHAR(128) NOT NULL,
[Article] TEXT NOT NULL,
[PublishedUserId] INT NOT NULL,
[PublishedTime] DATETIME DEFAULT GETDATE(),
[VisitNum] INT DEFAULT 0,
[ColumnId] INT NOT NULL,
[CommentId] INT,
[CreatedUserId] INT,
[CreatedTime] DATETIME DEFAULT GETDATE(),
[LastUpdatedUserId] INT,
[LastUpdatedTime] DATETIME DEFAULT GETDATE(),
CONSTRAINT [FK_Contents_Columns_ColumnId] FOREIGN KEY ([ColumnId]) REFERENCES [Columns]([Id]),
CONSTRAINT [FK_Contents_Comments_CommentId] FOREIGN KEY ([CommentId]) REFERENCES [Comments]([Id]),
CONSTRAINT [FK_Contents_Users_CreatedUserId] FOREIGN KEY ([CreatedUserId]) REFERENCES [Users]([Id]),
CONSTRAINT [FK_Contents_Users_LastUpdatedUserId] FOREIGN KEY ([LastUpdatedUserId]) REFERENCES [Users]([Id])
)

四、博客文章评论表

CREATE TABLE [dbo].[Comments]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[ContentId] INT NOT NULL,
[UserName] VARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[Content] VARCHAR(256) NOT NULL,
CONSTRAINT [FK_Comments_Contents_ContentId] FOREIGN KEY ([ContentId]) REFERENCES [Contents]([Id])
)

时间: 2024-10-29 19:08:44

反思之技术实现(一)-Data architechture的相关文章

【沟通的艺术】自我反思的技术演示

作者:范军 (Frank Fan)新浪微博:@frankfan7 仅仅练不说是傻把式,仅仅说不练是假把式.又说又练才是真把式.沟通的艺术系列,不敢托大.纯属自己心得分享. 本文是一次技术演讲的自我点评,请见演讲视频. 本財年32场演唱会才刚刚开头.却一下子落在自己的主场.幸者,有不少熟识的圈内人.不幸者,自己的演讲风格和内容还不到位.在家门口丢人可丢大发了.本意遮头蔽面,好事者却上传录像到Youtube. 面对自己的演讲视频,我鼓足了勇气,磨蹭了两周之后,才不得不斗胆重温. 既然尴尬难免.就豁出

反思之技术实现-博客总体设计

这里是一篇介绍整个Project的结构及其相应的Function的文章.    整个Project采用MVC Framework理念,包含Models, Views 和Controllers. 项目框架描述:      -- Core:        核心层,实现Business logic services和数据交互(Data access).      -- Database:        数据库, 构建整个Project的数据结构和数据表.      -- Data:        En

Spring Boot教程35——Spring Data JPA

Hibernate是数据访问解决技术的绝对霸主.JPA是由Hibernate主导的一个基于O/R映射的标准规范.O/R映射即将领域模型类和数据库的表进行映射,通过程序操作对象而实现表数据操作的能力,让数据访问操作无须关注数据库相关的技术. Spring Data JPA介绍 1.定义数据访问层 使用Spring Data JPA建立数据访问层十分简单,只需定义一个继承JpaRepository的接口即可: public interface PersonRepository extends Jpa

互联网技术

互联网技术定义:互联网技术指在计算机技术的基础上开发建立的一种信息技术(Information Technology 简称 IT) 直译 internet Technology 简称 IT 概念范围 第一层是硬件,主要指数据存储.处理和传输的主机和网络通信设备: 第二层是指软件,包括可用来搜集.存储.检索.分析.应用.评估信息的各种软件,它包括我们通常所指的ERP(企业资源计划).CRM(客户关系管理).SCM(供应链管理)等商用管理软件,也包括用来加强流程管理的WF(工作流)管理软件.辅助分析

[WPF]WPF Data Virtualization和UI Virtualization

这篇博客将介绍WPF中的虚拟化技术. 1. Data Virtualization 通常情况下我们说数据虚拟化是指数据源没有完全加载,仅加载当前需要显示的数据呈现给用户.这种场景会让我们想到数据分页显示,当需要特定页面的数据时,根据页数请求相应数据. WPF没有提供对Data Virtualization原生态的支持,当时我们可以使用Paging相关技术来实现.在我先前的博客WPF 实现 DataGrid/ListView 分页控件中有介绍. 2. UI Virtualization 是针对数据

CoreData学习:Core Data Stack(Swift)

Core Data是苹果官方提供的一套框架,用来解决对象生命周期管理.对象关系图管理和持久化等方面相关的问题.Core Data是模型层的技术,Core Data帮助你构建代表程序状态的模型层.Core Data也是一种持久化技术,它可以将模型的状态持久化到磁盘.但它更重要的特点是:Core Data不只是一个加载和保存数据的框架,它也能处理内存中的数据. 什么是Core Data? 对于Core Data框架将经常困惑,以为是数据库.其实Core Data并不是数据库.如果它不是数据库,那么C

正确使用Core Data多线程的3种方式

在#Pragma Conference 2015会议上,Marcus Zarra,撰写过关于Core Data和Core Animation的书,叙述了三种在多线程环境下使用Core Data的方法并且设法解决在2015年应如何使用Core Data的问题.实际上,Zarras说道,当用一个拥有十一年历史的技术比如Core Data工作时,你所面临的问题之一是有大量的信息是可用的,不过查明哪一份信息依旧精确以及哪一份不精确并不是一件简单的事. 根据Zarras所言,当我们知道我们仍旧有空余的CP

深入理解Core Data

留给我这忘事精看 Core Data 是什么? 大概八年前,2005年的四月份,Apple 公布了 OS X 10.4,正是在这个版本号中 Core Data 框架公布了.那个时候 YouTube 也刚公布. Core Data 是一个模型层的技术.Core Data 帮助你建立代表程序状态的模型层.Core Data 也是一种持久化技术,它能将模型对象的状态持久化到磁盘,但它最重要的特点是:Core Data 不仅是一个载入.保存数据的框架,它还能和内存中的数据非常好的共事. 假设你之前以前接

Core Data 概述

相关扩展原文 :http://objccn.io/issue-4-2/   http://objccn.io/issue-4-3/ Core Data 可能是 OS X 和 iOS 里面最容易被误解的框架之一,为了帮助大家理解,我们将快速的研究 Core Data,让大家对它有一个初步的了解,对于想要正确使用 Core Data 的同学来说,理解它的概念是非常必要的.几乎所有对 Core Data 感到失望的原因都是因为对它工作机制的错误理解.让我们开始吧: Core Data 是什么? 大概八