1对多的关系,及创建的表格的语法,为什么不能调整为1对1的关系,用1对1的语法创建?
问1,老师讲的1对1,和1对多,我认为没区别,有更形象的例子吗?
问2,1对1用<ForeignKey>创建外键约束,1对多用<OneToOneField>创建外键约束,有什么问题?
问3,在1对多表格中,电话、地址、邮编甚至时间属性也可属于详细信息,不能全部归到1对1的关系表格中吗?
正在回答 回答被采纳积分+1
同学你好:
1 一对一:一个对象对应一个对象,例如一个是用户表,一个是用户信息表(户口信息)。一个用户不可能有多个户口信息,只能是一个,一个户口信息只能对应一个用户。
一对多:一个对象对应多个对象,例如某宝某团,同学买东西可以在不同的地方买,只要更改收货地址即可,但是用户只有同学一个,同学的收货地址有很多个。
2 如果使用ForeignKey创建表关联,创建出的是一对多的关系,使用OneToOneField创建表关联,创建出的是一对一的关系。最大的问题是在实现项目时出现逻辑上的错误,例如一个用户可以有多个户口信息,一个用户只能有一个收货地址,完全违反现实的逻辑。
3 收货人电话,以及收货地址,还有邮编。某宝的收货地址同学可以添加好多个,并且可以更改收货人,收货地址以及根据收货地址的不同,邮编也就不会相同。由于在属性django框架的使用,因此同学可以按照自己的想法改为一对一的模式,没有错误,但是按照实际情况学生只有一个收货地址是不够用的。项目的开发是要结合实际的,同学的语法逻辑没有问题,但是会与现实的逻辑产生冲突。关于每个学生有自己独有的座右铭,同学可以改为一对多。结合一些交友软件,每个用户应该只需要一条个性签名来展示自己足矣。
4 同学找关联id找错了位置。应该是在创建关联的每个表中去查找这个字段。一般都是按照同学定义的变量名加_id。例如同学需要到UserAddress表中查找user_id这个字段。
关于同学指出的id是每个表中每条记录的id,是自增的吗,与外键关联的字段表达的意思不同。
一对一和一对多都是外键关联,foreignkey,但是一对一在这个外键关联的字段上设置了unique(唯一)的限制,因此变为了一对一的外键关联关系。
如果我解决了同学的问题,请采纳!学习愉快^_^。
- 参与学习 人
- 提交作业 218 份
- 解答问题 3562 个
本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星