有关数据库设计中的问题

Ivan.Liao 2019-01-05 10:34:48
两个表的主键都可以做为另一个表的外键,但是每条记录只能取一个作为外键。 如学生表,教师表,帖子表,学生和教师都可以发帖,这种情况应该怎么设计,求助各位大佬!
...全文
873 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵牧野 2019-01-15
  • 打赏
  • 举报
回复
那就再搞一张人员表,学生表和教师表不动。人员表里有个人员id做外键。
ouyangjun__ 2019-01-15
  • 打赏
  • 举报
回复
可以多创建一个表,存放帖子和学生,帖子和教师的关系。
查帖、发帖和删帖的时候都可以只操作关系表。
hgwyl 2019-01-15
  • 打赏
  • 举报
回复
登录时就赋值给session
hgwyl 2019-01-15
  • 打赏
  • 举报
回复
老师和学生分2表—既然开始就这样设计,应该还涉及其他地方。另外,身份判断放在session里,毕竟总得登录后才能操作,在session增加个type就是了。
AM18 2019-01-15
  • 打赏
  • 举报
回复
没有特殊要求,遵循范式,5张表就好了
学生 是一个实体 1张表
老师 是一个实体 1张表
帖子 是一个实体 1张表

学生发帖 是一种1对多的关系 1张表
老师发帖 是一种1对多的关系 1张表
  • 打赏
  • 举报
回复
学生和老师放到一个表里面,用用户类型type字段来区分是学生还是老师。在帖子表里面添加用户id字段来关联用户关系,不要使用外键。
stacksoverflow 2019-01-11
  • 打赏
  • 举报
回复
帖子表:帖子ID,学生ID,教师ID 有什么问题吗?
zhuzhangliang 2019-01-10
  • 打赏
  • 举报
回复
不对,帖子表需要加两个字段,发帖人和发帖人类型
zhuzhangliang 2019-01-10
  • 打赏
  • 举报
回复
帖子表加字段表示发帖人id
尼坤神 2019-01-10
  • 打赏
  • 举报
回复
person
student extend person
teacher extend person
note(pid)
宝贝青蛙 2019-01-09
  • 打赏
  • 举报
回复
照理讲学生和老师只是用户的身份,应该是同一张表,用户表中有身份类型来区分学生和老师就行了
现在数据库中已经很少会去设计约束性的外键,一般只是逻辑上的外键,用逻辑去保证数据唯一性就行了
  • 打赏
  • 举报
回复
应该可以在帖子表里用两个不同名字的列来区分老师和学生吧,当老师登录时,学生的那一列就是空的,反之亦然,或者增加一条信息表,来作为学生老师表的“中转站”,反正在查询时你都需要多表查询呀
iming 2019-01-08
  • 打赏
  • 举报
回复
两个方法:
1.老师、学生放在一张表中,用类型区分开的,字段不一样,可以采用不同的页面的展示;
2.老师 学生,在贴子中,用两个字段,一个关联老师,一个关联学生;

综合来说,方法1要好一些。
一路奔跑1314 2019-01-08
  • 打赏
  • 举报
回复
在帖子表加个字段flag,表示是老师还是学生,当帖子表增加一条记录时,flag表示是老师时,帖子表的外建就是教师表的主键。
getdate 2019-01-08
  • 打赏
  • 举报
回复
在实际设计的情况下,一般是不建议设置外键的,就像上面有人说的那样,数据的一致性,是代码逻辑来控制的. 其实这种情况,在帖子表中有两个关键字段,一个是发帖人ID,一个是发帖人身份,这样理论上是比较合适的.
亲爱的Joe 2019-01-07
  • 打赏
  • 举报
回复
引用 4 楼 且听风低语 的回复:
[quote=引用 2 楼 亲爱的Joe 的回复:]同求。
我的思路是,不把学生和教师表分开,而是增加一个字段用于描述教师身份和学生身份。然后将用户表的id设置成帖子表的外键
考虑过,不过教师和学生的字段又不全一样,教师有只属于教师的信息,学生有只属于学生的信息[/quote]
好像只能把教师和学生合成一个表了,否则帖子表只有一个外键怎么能关联学生和教师两个表呢?

两个表之间有一对一一对多多对多的,至今还未想过三张表(学生教师和帖子)只有一个外键,怎么建立对应关系?
十八道胡同 2019-01-06
  • 打赏
  • 举报
回复
引用 5 楼 且听风低语 的回复:
[quote=引用 3 楼 insombre 的回复:]1.可以不要外键.帖子表加字段表明发表人id的身份是学生还是老师.
2.帖子表可以设两个外键呀,一个记录学生,一个记录教师.
不加外键无法保证数据一致性。设置两个外键的话业务处理会多一些判断,但就安全性而言是好的方法,谢谢![/quote]

不要加外键

数据一致性、业务一致性 需要代码逻辑来保障,尽量不要依赖数据库,否则数据库维护就比较麻烦

学生表、教师表、帖子表 帖子表里面可以用ID来区分是学生还是教师
Ivan.Liao 2019-01-06
  • 打赏
  • 举报
回复
引用 3 楼 insombre 的回复:
1.可以不要外键.帖子表加字段表明发表人id的身份是学生还是老师. 2.帖子表可以设两个外键呀,一个记录学生,一个记录教师.
不加外键无法保证数据一致性。设置两个外键的话业务处理会多一些判断,但就安全性而言是好的方法,谢谢!
Ivan.Liao 2019-01-06
  • 打赏
  • 举报
回复
引用 2 楼 亲爱的Joe 的回复:
同求。
我的思路是,不把学生和教师表分开,而是增加一个字段用于描述教师身份和学生身份。然后将用户表的id设置成帖子表的外键
考虑过,不过教师和学生的字段又不全一样,教师有只属于教师的信息,学生有只属于学生的信息
Thinking~ 2019-01-05
  • 打赏
  • 举报
回复
https://blog.csdn.net/qzw5235641/article/details/84136977
加载更多回复(2)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧