MySqlDb(v 8.0)的设计:当我决定在表中不加上“Not null”约束时,可能会做出哪些牺牲?
MySqlDb(v 8.0)的设计:当我决定在表中不加上“Not null”约束时,可能会做出哪些牺牲?
我有一个与此已经回答的问题相关的问题,涉及到MySql数据库设计。我想知道在表中不给外键设置\"非空\"约束的决定可能会引起哪些问题/牺牲?(正如链接问题中所提到的,我可以在一个表中有多个外键,并且在上传数据时不必总是知道它们的全部)\n这里有一个例子(简化):\n我的数据库中有三个表:\n
- \n
- 公司
- 投资者
- 投资\n投资表中有以下列之一:
\n
\n
\n
\n
- \n
- 公司外键
- 投资者外键
\n
\n
\n问题:\n我想知道当我允许投资者外键的\"空值\"时,对于最终用户(如数据分析师)会有什么后果。\n因此,我认为我的问题最好由Vojta F回答,他从数据库用户的角度向我展示了我的解决方案的利弊。
当在表中的外键上决定不添加“Not null”约束时,可能会出现以下问题:
原因:
- 如果您在上传时不知道外键的值,可以省略“not null”约束。
- 这样做的积极影响是上传新数据更容易,您不必强制插入外键值,只要在连接该列时意识到这一点即可。
- 这样做的消极影响是数据完整性较弱,解决多个表之间的记录会更加困难,而且在连接时必须考虑空值。
解决方法:
- 考虑在外键上添加“Not null”约束,以提高数据完整性。
- 如果无法在上传时确定外键的值,可以通过其他方式解决,例如将外键设置为默认值或采用其他逻辑来处理空值情况。
- 在查询时,必须小心处理可能的空值,以避免产生错误或不准确的结果。
- 当在多个表之间进行连接时,需要仔细考虑可能的空值情况,以确保正确地解决记录。