❶ 为什么在数据库建表时要建一张人员表和一张机构表,为什么不能合成一张表
道理很简单,这是关系数据库的要求。
因为一个机构存在多个人员,如果放一张表,势必会有很多冗余数据。
比如这种样子
机构1代码 机构1名称 机构1电话 机构1地址 人员1代码 人员1姓名 人员1性别 。。。
机构1代码 机构1名称 机构1电话 机构1地址 人员2代码 人员2姓名 人员2性别 。。。
机构1代码 机构1名称 机构1电话 机构1地址 人员3代码 人员3姓名 人员3性别 。。。
机构1代码 机构1名称 机构1电话 机构1地址 人员4代码 人员4姓名 人员4性别 。。。
机构2代码 机构2名称 机构2电话 机构2地址 人员5代码 人员5姓名 人员5性别 。。。
机构2代码 机构2名称 机构2电话 机构2地址 人员6代码 人员6姓名 人员6性别 。。。
很显然,前面机构部分明显冗余了,建立机构表,人员表和机构人员表就可以避免这种问题
机构表
机构代码 机构名称 机构电话 机构地址
人员表
人员代码 人员姓名 人员性别
机构人员表
机构代码 人员代码
这种就非常简洁。
当然这只是针对关系数据库而言,如果是数据仓库,反而要使用冗余方式来处理。
❷ 数据库表设计 一个人一个店铺, 如何设计, 如果你的设计方案是都放到一张表里, 就不用回答了
用户表(userID,userName)
店铺表(dpID,dpName,UserID)
1对1,还是1对多,在店铺表里面控制就好
❸ 数据库表设计:用户单表(添加用户角色字段)还是多用户表(每种角色一个表)
如果你的用户和角色是多对多的关系,单表肯定是不行的!
❹ 软件数据库设计该由什么角色负责
通常是技术经理设计数据库结构,小型项目也可以由程序员自行设计。
❺ 是否为每个用户建立数据库表
create
table
userthe(数据库表名)
(
id
int
identity
(1,
1)
not
null
,
userid
int
,
'会员id自动递增,并是唯一的
username
varchar(50),
'会员名称50个字以内
attribute
int
default
0,
'属性默认值是设置0
userpassword
varchar(50),
'这列是用户存放密码,建议用md5加密后保存,验证的时候用户输入的密码也加密后对比
ustime
datetime
default
getdate(),
'这个可以记录时间,默认为生成的时间
);
❻ 数据库设计阶段 为什么要由不同的人来设计
数据库设计可以分为概念结构设计、逻辑结构设计和物理结构设计三个阶段。(1)概念结构设计。这是数据库设计的第一个阶段,在管理信息系统的分析阶段,已经得到了系统的数据流程图和数据字典,现在要结合数据规范化的理论,用一种数据模型将用户的数据需求明确地表示出来。概念数据模型是面向问题的模型,反映了用户的现实工作环境,是与数据库的具体实现技术无关的。建立系统概念数据模型的过程叫做概念结构设计。(2)逻辑结构设计。根据已经建立的概念数据模型,以及所采用的某个数据库管理系统软件的数据模型特性,按照一定的转换规则,把概念模型转换为这个数据库管理系统所能够接受的逻辑数据模型。不同的数据库管理系统提供了不同的逻辑数据模型,如层次模型、网状模型、关系模型等。(3)物理结构设计。为一个确定的逻辑数据模型选择一个最适合应用要求的物理结构的过程,就叫做数据库的物理结构设计。数据库在物理设备上的存储结构和存取方法称为数据库的物理数据模型。
❼ 数据库的逻辑模型一般由谁设计完成
数据库逻辑设计决定了数据库及其应用的整体性能,调优位置。如果数据库逻辑设计不好,则所有调优方法对于提高数据库性能的效果都是有限的。为了使数据库设计的方法走向完备,数据库的规范化理论必须遵守。规范化理论为数据库逻辑设计提供了理论指导和工具,在减少了数据冗余的同时节约了存储空间,同时加快了增、删、改的速度。
另外,在规范的数据库逻辑设计时,还应考虑适当地破坏规范规则,即反规范化设计,来降低索引、表的数目,降低连接操作的数目,从而加快查询速度。常用的反规范技术有增加冗余列、增加派生列、重新组表等。
增加冗余列:有时要进行查询的列分布在不同的表中,如果这个连接查询的频率比较高,那就可以根据需要,把其它表中的这一列加进来,从而使得多个表中具有相同的列,它常用来在查询时避免连接操作。但它的坏处就是需要更多的磁盘空间,同时因为完整性问题需要增加维护表的工作量。
总之,在进行数据库逻辑设计时,一定要结合应用环境和现实世界的具体情况合理地选择数据库模式。
一般由设计师完成