请问我的表这样设计 是否合理 有什么弊端
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[BM_Person] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
drop table [dbo].[BM_Person]
GO
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[BM] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
drop table [dbo].[BM]
GO
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[BM_zhiwu] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
drop table [dbo].[BM_zhiwu]
GO
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[BM_yuangong] ') and OBJECTPROPERTY(id, N 'IsUserTable ') = 1)
drop table [dbo].[BM_yuangong]
GO
CREATE TABLE [dbo].[BM_Person] (
[bm_id] [int] NULL ,
[person_id] [int] NULL ,
[zhiwu_id] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[BM] (
[BM_id] [int] IDENTITY (1, 1) NOT NULL ,
[BM_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[BM_miaoshu] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[BM_zhiwu] (
[zhiwu_id] [int] IDENTITY (1, 1) NOT NULL ,
[zhiwu_name] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[zhiwu_bm_id] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[BM_yuangong] (
[Person_id] [int] IDENTITY (1, 1) NOT NULL ,
[Person_zhuangtai] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_daima] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_xingming] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_xingbie] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_jiguan] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_chusheng] [datetime] NULL ,
[Person_ruzhi] [datetime] NULL ,
[Person_xueli] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_xuexiao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_zhuanye] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_dianhua] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_fenji] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_shouji] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_dizhi] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_youxiang] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_zhaopian] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_zw_id] [int] NULL ,
[Person_gongzuo] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NULL ,
[Person_lizhi_date] [datetime] NULL ,
[Person_lizhi_yuanyin] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
BM_Person这个表 为 其它三个表的关联表 一个人员可以对应 多个部门 在各个部门里对应不同的职务 谢谢 大家帮我分析一下 经理说 感觉有点问题
[解决办法]
一般部门和人员是一对多的,怎么反过来了,难道可以兼职?
[解决办法]
如果不同部门的职务id是一样的,这样设计没什么问题,如果职务id只属于某个部门,那么就应该在部门的表里加一个部门id的字段
[解决办法]
如果职务id只属于某个部门,那么就应该在部门的表里加一个部门id的字段,那么关系表里应该只有 person_id 和 zhiwu_id
[解决办法]
把E-R图画出来.看看关联``
[解决办法]
画图看是个好办法,直观点