1对多的关系,及创建的表格的语法,为什么不能调整为1对1的关系,用1对1的语法创建?

1对多的关系,及创建的表格的语法,为什么不能调整为1对1的关系,用1对1的语法创建?

问1,老师讲的1对1,和1对多,我认为没区别,有更形象的例子吗?

问2,1对1用<ForeignKey>创建外键约束,1对多用<OneToOneField>创建外键约束,有什么问题?

问3,在1对多表格中,电话、地址、邮编甚至时间属性也可属于详细信息,不能全部归到1对1的关系表格中吗?


http://img1.sycdn.imooc.com//climg/5db8177908c4422d10080435.jpghttp://img1.sycdn.imooc.com//climg/5db81b230836914b11280624.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
努力而奋斗的蜗牛 2019-11-02 12:00:15

我觉得一对一和一对多 不是为了在数据库上面实现的 在数据库看来 只是多了个外键关联而已 mysql数据库本身就没有一对多 一对一这种说法吧 。 这个一对一 一对多更多的是为了在Django上面实现 说白了就是为了Django里面models的限制 而不是对数据库本身限制 。 在Django里面虽然能成功操作在数据库里面创建表和关联 但也就仅限于创建这些 。不知道我这样理解的对不对  

  • 同学,你好。在mysql数据库中也是有表与表之间一对一,一对多,和多对多关系的。在django中可以通过ORM模型实现表的创建与数据的增删改查等操作。祝学习愉快~~~~
    2019-11-03 16:33:05
好帮手乔木 2019-10-30 11:12:43

同学你好:

1 一对一:一个对象对应一个对象,例如一个是用户表,一个是用户信息表(户口信息)。一个用户不可能有多个户口信息,只能是一个,一个户口信息只能对应一个用户。

一对多:一个对象对应多个对象,例如某宝某团,同学买东西可以在不同的地方买,只要更改收货地址即可,但是用户只有同学一个,同学的收货地址有很多个。

2 如果使用ForeignKey创建表关联,创建出的是一对多的关系,使用OneToOneField创建表关联,创建出的是一对一的关系。最大的问题是在实现项目时出现逻辑上的错误,例如一个用户可以有多个户口信息,一个用户只能有一个收货地址,完全违反现实的逻辑。

3 收货人电话,以及收货地址,还有邮编。某宝的收货地址同学可以添加好多个,并且可以更改收货人,收货地址以及根据收货地址的不同,邮编也就不会相同。由于在属性django框架的使用,因此同学可以按照自己的想法改为一对一的模式,没有错误,但是按照实际情况学生只有一个收货地址是不够用的。项目的开发是要结合实际的,同学的语法逻辑没有问题,但是会与现实的逻辑产生冲突。关于每个学生有自己独有的座右铭,同学可以改为一对多。结合一些交友软件,每个用户应该只需要一条个性签名来展示自己足矣。

4 同学找关联id找错了位置。应该是在创建关联的每个表中去查找这个字段。一般都是按照同学定义的变量名加_id。例如同学需要到UserAddress表中查找user_id这个字段。

关于同学指出的id是每个表中每条记录的id,是自增的吗,与外键关联的字段表达的意思不同。

http://img1.sycdn.imooc.com//climg/5db8fa8d093beb6604920057.jpg

http://img1.sycdn.imooc.com//climg/5db8f9c30914065102890132.jpg

http://img1.sycdn.imooc.com//climg/5db8f9ec090bb1da06500079.jpg

一对一和一对多都是外键关联,foreignkey,但是一对一在这个外键关联的字段上设置了unique(唯一)的限制,因此变为了一对一的外键关联关系。

如果我解决了同学的问题,请采纳!学习愉快^_^。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.从网页搭建入门Python Web
  • 参与学习           人
  • 提交作业       218    份
  • 解答问题       3562    个

本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师