我应该如何在(My)SQL中实现一对一的关系?

Jar*_*tar 2 sql

我对SQL比较陌生,我不确定如何建立一对一的关系.在阅读了前三种规范化形式之后,我目前的印象是,最好的方法是拥有一个中间表,ala-3rd来自多对多关系,除了每列被声明为唯一.

Joe*_*ips 6

ImageDetails
------------
id (PK)
name
description


ImageData
------------
id (PK & FK)
blobfield
Run Code Online (Sandbox Code Playgroud)

这样的事情可能是做一对一关系的一个很好的理由/方式,但通常你只需要在一个表中拥有所有数据,其中每一行都是定义关系的.

将它们分开的一个原因可能是限制对用户的特定表的访问,同时允许访问该键字段的其他数据.

为一对一关系建立单独表格的另一个可能原因是,当您不希望null列入您的列时.例如,如果90%的数据为空,那么使用完全独立(和较小)的表并在PK上加入该字段可能会更好.这实际上被认为是"可选的一对一关系",因为您并不真正拥有每个可能关系的一条记录.