怎么合理设计数据库?

jerrycool 2006-06-06 12:10:11
最近在做一个网站,商品有分大类表,小类表,有论坛,帖子表和回复表是分开的.
我是这样做的:
商品表中,小类字段是小类表ID的FK.这里可以级联更新和删除
小类表中,所属大类字段是大类表ID的FK.这里可以级联更新和删除
帖子表里的UserID是会员表UserID的FK.这里可以级联更新和删除
回复表里的UserID是会员表UserID的FK.但是这里不可以级联更新和删除,提示不能这样做,具体的错误我不记得了.好象是级联多了,(路径)重复了吧...

后来感觉FK的级联不好用,全部改用触发器来实现删除,郁闷的是,刚刚进行删除的时候,出错了:
DELETE 语句与 COLUMN REFERENCE 约束 'FK_SubKind_G_Kind_G' 冲突。该冲突发生于数据库 '[TableName]',表 'GoodsSubKind', column 'GK_ID'。语句已终止。

在此请教各位了...有什么方法最合适?
有没有更合适的设计方法,最好用级联,但不知道怎么做啊.郁闷.
...全文
134 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jerrycool 2006-06-06
关键现在是一个表的主键作了多个表外键呀...

高手指点呀....
回复
级联不好用,除非你一个表的主键只是作为另一个表的外键

回复
jerrycool 2006-06-06
去掉了级联删除也不行,多个外键(比如论坛用户,帖子,回复)根本建立不了外键关系啊

不知道这样做行不行喔
能用级联尽量用,不能用就用触发器代替

不知道各位是怎么做的?
回复
理想的方法还是用级联,去掉多个外键的一部分级联删除
回复
用触发器必须把外键约束去掉

回复
jerrycool 2006-06-06
但触发器提示错误呀....

DELETE 语句与 COLUMN REFERENCE 约束 'FK_SubKind_G_Kind_G' 冲突。该冲突发生于数据库 '[TableName]',表 'GoodsSubKind', column 'GK_ID'。语句已终止。
回复
itblog 2006-06-06
用触发器吧~
回复
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2006-06-06 12:10
社区公告
暂无公告