VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1367|回复: 11

一个数据库设计的问题,一对多关系,如何设计表?

[复制链接]

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-17 19:40:01 | 显示全部楼层 |阅读模式
在企业中有一级部门和子部门

比如有企划中心 和研发中心,都属于一级部门
企划中心包括设计部,企划部和编辑部,这三个属于二级部
研发中心包括delphi研发部和java研发部,这两个属于二级部门

在设计部门信息表的时候,怎么处理呢?
我目前是这样设计的
一共两个表
一个表为一级部门信息表
department1:
  一级部门编号
  一级部门名

department2:
  一级部门编号
  二级部门编号
  二级部门名

因为有的部门没有子二级部门.

各位觉得我上面的设计是不是有问题?
一个一级部门可以下辖多个二级部门,也可以没有二级部门
一个二级部门只对应一个一级部门

在企业实际情况中,应该不会出现在不同的一级部门下有两个相同的二级部门名吧?

怎么优化下我上面的数据库设计?或者更好的建议???
谢谢..
回复

使用道具 举报

0

主题

100

帖子

53.00

积分

新手上路

Rank: 1

积分
53.00
发表于 2020-1-23 15:00:02 | 显示全部楼层
一个表应该就可以了。
回复

使用道具 举报

0

主题

100

帖子

53.00

积分

新手上路

Rank: 1

积分
53.00
发表于 2020-1-23 15:09:01 | 显示全部楼层
举例如下:
create table dept (
code                 int                  not null,
dep_code             int                  null,
name                 char(50)             not null,
constraint PK_DEPT primary key  (code)
)
go

alter table dept
   add constraint FK_DEPT_RELATIONS_DEPT foreign key (dep_code)
      references dept (code)
go


回复

使用道具 举报

0

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-23 18:45:02 | 显示全部楼层
這種問題用父子表關係來完成

一個是部門碼表

一個是職位碼表,這個表要包含有這個職位所在的部門

回复

使用道具 举报

0

主题

4

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-23 19:00:01 | 显示全部楼层
一個是部門碼表(dept_no,dept_name),主鍵為dept_no

一個是職位碼表(position_no,position_name,dept_no),主鍵為position_no

這兩個表的結構對整個公司的構架來說非常重要

回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-1-23 20:18:01 | 显示全部楼层
同意一樓的
回复

使用道具 举报

0

主题

14

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-1-23 23:36:01 | 显示全部楼层
在企业实际情况中,应该不会出现在不同的一级部门下有两个相同的二级部门名吧?

會出現兩個相同的二級部門的,但是只是名稱相同而已,編號是不一樣的!
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-27 16:27:01 | 显示全部楼层
create table #部门
(
dep_no numeric primary key,
dep_name varchar(20),
father_dep_no numeric references #部门(dep_no)
)

insert into #部门 values(1,'企划中心',null)
insert into #部门 values(2,'研发中心',null)
insert into #部门 values(3,'设计部',1)
insert into #部门 values(4,'企划部',1)
insert into #部门 values(5,'编辑部',1)
insert into #部门 values(6,'delphi研发部',2)
insert into #部门 values(7,'java研发部',2)
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-27 17:00:01 | 显示全部楼层
不是很明白 unkmass的意思。。

用关系模式写出来看看好吗??

回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-27 18:09:01 | 显示全部楼层
因为我这里没有涉及到员工职位。。

只涉及到部门
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表