数据库设计的问题?设计关系型数据库时给表加了主键是不是必须要有外键的?

2024-12-22 19:22:22
推荐回答(5个)
回答1:

不必须,一般情况下都是不加外键的,外键靠应用中维护。举一个例子
教师表中有教师ID(主键)教师姓名
学生表有学生ID (主键) 学生姓名 教师ID
学生表中的教师ID应该是学生表的外键,不过正常情况不会设置成外键
因为
假如教师表中有一条记录 编号 1 ,教师姓名 ,李老师
学生表中也有一条记录 学生ID 1 ,学生姓名 小明 ,教师ID 1
当学生表存在这样的记录的时候,教师表中 编号1的李老师是无法被删除的,因为有其他的表再引用这个编号1的老师。这样修改测试很麻烦。
正确的做法,是不设成外键
当应用程序中需要添加一条学生记录的时候,老师这一项将不会要求用户自己填写,而是做成功能按钮,例如单选按钮,下拉列表框。保证往数据库中存储的却是是李老师就行,这就是一楼所说的外键靠应用中维护。
一楼正解

回答2:

不是必须的,有了外键会更好的。外键是保证数据的完整性,比如说做级联删除的时候会人性化一点

回答3:

外键不是必须的,没有外键的话,外键关系可以在你的应用中维护

回答4:

不用

回答5:

不一定