
最近在进行UML学习过程中,突然忘记了大学时关于数据库理论中概念模型、逻辑模型、物理模型之间的区别。随机复习上网并复习,并在此记录一下,数据库建模是对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构。
1、概念模型:就是从现实世界到信息世界的第一层抽象,确定领域实体属性关系等,使用E-R图表示,E-R图主要是由实体、属性和联系三个要素构成的。
2、逻辑模型:是将概念模型转化为具体的数据模型的过程,即按照概念结构设计阶段建立的基本E-R图,按选定的管理系统软件支持的数据模型(层次、网状、
关系、面向对象),转换成相应的逻辑模型。这种转换要符合关系数据模型的原则。目前最流行就是关系模型(也就是对应的关系数据库)
E-R图向关系模型的转换是要解决如何将实体和实体间的联系转换为关系,并确定这些关系的属性和码。这种转换一般按下面的原则进行:
(1)一个实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。
(2)一个联系也转换为一个关系,联系的属性及联系所连接的实体的码都转换为关系的属性,但是关系的码会根据联系的类型变化,如果是:
1:1联系,两端实体的码都成为关系的候选码。
1:n联系,n端实体的码成为关系的码。
m:n联系,两端实体码的组合成为关系的码。
3、物理模型就是根据逻辑模型对应到具体的数据模型的机器实现。物理模型是对真实数据库的描述。如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。
USE [master]
GO
--创建数据库 --FILENAME 是你数据库文件的存放路径 自己改
CREATE DATABASE [User] ON PRIMARY
( NAME = N'User', FILENAME = N'E:\test\Usermdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'User_log', FILENAME = N'E:\test\User_logldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
--创建表
USE [User]
GO
CREATE TABLE [dbo][t_dept](
[deptno] [int] IDENTITY(1,1) NOT NULL,
[deptname] [nvarchar](500) NOT NULL,
CONSTRAINT [PK_t_dept] PRIMARY KEY CLUSTERED
(
[deptno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo][t_class](
[classno] [int] IDENTITY(1,1) NOT NULL,
[classname] [nvarchar](500) NOT NULL,
CONSTRAINT [PK_t_class] PRIMARY KEY CLUSTERED
(
[classno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo][t_user](
[userid] [int] NOT NULL,
[username] [nvarchar](500) NOT NULL,
[deptno] [int] NOT NULL,
[classno] [int] NOT NULL,
[password] [varchar](500) NOT NULL,
CONSTRAINT [PK_t_user] PRIMARY KEY CLUSTERED
(
[userid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
--插入数据
use [user]
go
insert into t_class values('2004级1班')
insert into t_class values('2004级2班')
insert into t_class values('2004级3班')
insert into t_class values('2004级4班')
insert into t_class values('2004级5班')
insert into t_dept values('数学系')
insert into t_dept values('计算机系')
insert into t_dept values('历史系')
insert into t_dept values('经济系')
insert into t_dept values('中文系')
insert into t_user(userid,username,deptno,classno,password)
values(2004021,'用心',1,1,'yongxin')
insert into t_user(userid,username,deptno,classno,password)
values(2004022,'李牛',1,2,'yongxin')
insert into t_user(userid,username,deptno,classno,password)
values(2004023,'王虎',2,1,'yongxin')
insert into t_user(userid,username,deptno,classno,password)
values(2004024,'乖乖',2,2,'yongxin')
insert into t_user(userid,username,deptno,classno,password)
values(2004025,'帅哥',4,1,'yongxin')
--file name 你自己设置下路径
--密码没加密 写的明文 自己插入加密值
--测试版本ssms 2005
原则上不需要年度表
科目表好像有问题,你这样科目重复比较多,科目表需要代码和名称就够了
你可以在成绩表里面加上年度、班级、学号、科目、成绩
班级、科目都保存编码,到时候联查对应名称就行,查询就很简单了
要是你觉得不会半路变更科目名称和班级名称,成绩表里面保存名称也行,联查就省了,语句最简单。
越是复杂系统,表之间关联越少,不然很复杂的SQL语句就会更复杂庞大了,记住这一点,三范式在有的时候不是很适用
以上就是关于SQL建表概念模型和物理模型的例子(sql数据模型)全部的内容,包括:SQL建表概念模型和物理模型的例子(sql数据模型)、sql新建数据库、如何设计我的SQL数据库表的结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)