双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

求助——关于第2.5范式的问题

totola147 totola147 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
第三范式:消除非主属性对码的传递依赖 从而避免数据冗余 插入异常 删除异常

--现有表:
create table Student --学生表
(
ID int identity(1,1) primary key,
userName varchar(20),
collegeName varchar(100),
)

create table DicCollege --学院表(字典表)
(
ID int identity(1,1) primary key,
collegeName varchar(100),
)




描述:
学生表中,学院名称字段的取值来自下拉选单,不可以自由填值
学院名称的下拉选单的取值来自字典表 DicCollege的collegeName字段值

问题:
1 该数据库结构,属于2NF 还是3NF 抑或 2.5NF
2 如果问题一的答案为2NF 那么该结构 如何会有插入异常或删除异常的情况 请举例
3 该设计是否合理,抑或有更好的方法

解释:
之所以这样设计,是考虑了不满足3NF会有插入异常删除异常情况,于是建立的学院字典表,但又为了避免过多的表连接,所以学院值直接存入学生表的学院名称字段,而不是存学院ID,虽然有数据冗余,但是却避免了表连接,从而有更好的查询性能

...全文
评论 10
收藏 已收藏
分享
返回顶部
totola147
MS-SQL Server 34,876 成员 254,635 内容