【发布时间】:2013-12-31 19:30:00
【问题描述】:
我正在进行数据库设计并希望存储用户地址。请考虑以下几点:很多时候,当您在网站上注册地址时,会出现“地址行 1”和“地址行 2”。
由于“地址行 2”是可选的,存储它的最佳做法是什么?
您是要使用单个表并允许“地址行 2”为 NULL,还是要创建一个具有一对一关系的单独表?
仅供参考,我的数据库使用 MySQL。
【问题讨论】:
-
一个可以为空的字段。如果为每个可以为 null 的字段添加一个表,那么小型数据库将拥有数千个表。
-
以上都不是 - 一个不可为空的字段,默认为单个空格。在可能的情况下,避免不得不合并可空字段的麻烦。获得直观的布尔结果。
-
@juergend 的回答是更被接受的方法。
null定义的一件事是“没有价值”,这里就是这种情况。空值的存在是有原因的;这是其中之一。 -
我会使用单表并将地址 2 设为空,一路易于维护。不需要为了查询结果而加入表
-
@EdGibbs:虽然这是一种常见的做法,但我认为 NULL 的更好语义是“可能有价值,但尚不清楚”,它减少了重复键入合并操作的需要。
标签: mysql database database-normalization denormalization