Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 对不带外键约束的表的引用_Database Design_Foreign Keys_Relationship - Fatal编程技术网

Database design 对不带外键约束的表的引用

Database design 对不带外键约束的表的引用,database-design,foreign-keys,relationship,Database Design,Foreign Keys,Relationship,我有一个数据库和一个编辑数据库的应用程序 我有一个名为ADDRESS(ID、STREETID、NUMBER)的地址表 我有一个名为street的街道名称表(ID、STREETNAME、CREATIONUSERID) 我还有一个名为USER(ID、用户名、密码)的用户表 “我的街道”表中的街道名称已填充。 该表被用户用作查找表 要在我的应用程序中的某个位置输入地址(field address.STREETID), 但有时用户必须进入一条新街道 这将被插入街道以供进一步使用。 当用户向我的表中添加街

我有一个数据库和一个编辑数据库的应用程序

我有一个名为ADDRESS(ID、STREETID、NUMBER)的地址表

我有一个名为street的街道名称表(ID、STREETNAME、CREATIONUSERID)

我还有一个名为USER(ID、用户名、密码)的用户表

“我的街道”表中的街道名称已填充。 该表被用户用作查找表 要在我的应用程序中的某个位置输入地址(field address.STREETID), 但有时用户必须进入一条新街道 这将被插入街道以供进一步使用。 当用户向我的表中添加街道时,我希望能够 跟踪添加的用户

现在我想有两种选择:

第一:创建一个假用户,其中默认街道为 将引用,然后创建外键约束 (STREET.creationserid,它引用USER.ID)用于创建的新街道

第二:不创建外键约束,将CreationSerid保留为空 用于街道的默认街道,并仅为新的 创建街道以跟踪添加每个街道的用户


哪一个更好,为什么?

当系统中的某个用户不再是用户时,您打算怎么做,然后必须从用户表中删除该用户?

最好使用外键。它将强制执行引用完整性


我还有一个字段USER.STATUS,它是用户状态的标志。如果必须删除用户,我会将其设置为“已删除”。通过这种方式,我保留了该用户的历史记录,同时将其设置为活动状态。感谢您的链接。读了它,我刚意识到外键可以有空值,所以这将是我最好的解决方案。我将为CreationSerid创建一个外键约束,同时将其设置为“可空”