Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 数据库:拆分表_Database_Database Design - Fatal编程技术网

Database 数据库:拆分表

Database 数据库:拆分表,database,database-design,Database,Database Design,我最近读了很多关于数据库、冗余等的书 现在我正在构建一个用户表,它将保存所有信息 关于在我的系统中注册的用户 用户表应包含:id(PK)、用户名、密码、电子邮件和地址(街道、, 城市、邮政编码、国家) 我是否应该拆分地址并创建另一个仅包含用户地址的表, 比如:id(PK)、街道、城市、zipcode、国家、用户id(FK))? 我甚至可以在这里把zipcode和country拆分成新的表格 这有意义吗,尤其是将zipcode和country拆分到一个新表中 干杯 我个人认为,将这些细节拆分成单独

我最近读了很多关于数据库、冗余等的书

现在我正在构建一个用户表,它将保存所有信息 关于在我的系统中注册的用户

用户表应包含:id(PK)、用户名、密码、电子邮件和地址(街道、, 城市、邮政编码、国家)

我是否应该拆分地址并创建另一个仅包含用户地址的表, 比如:id(PK)、街道、城市、zipcode、国家、用户id(FK))? 我甚至可以在这里把zipcode和country拆分成新的表格

这有意义吗,尤其是将zipcode和country拆分到一个新表中


干杯

我个人认为,将这些细节拆分成单独的表没有任何附加价值


即使您不太可能经常使用地址/zipcode,您也可以始终使用
select username,email..
而不是
select*。

仅选择必要的字段。

您应该根据要求执行此操作,而不是因为您可以。因此,您应该有一个功能需求(例如,您希望为每个用户存储多个地址)或一个您想要解决的技术问题(性能、安全性等)。对我来说,在这样一个简单的表设计中,后者听起来不太可能,因此根据您提供的信息,我建议使用单个表。

我在这里考虑了一些冗余方面。 如果把国家放在一张桌子里不是更好吗
而不是在我的用户表中一遍又一遍地写?->冗余

对于大多数情况,答案是否定的。为什么要有一个额外的连接来查找地址?为什么有两个一对一关系的表


正如其他人所说,不要让生活复杂化,除非你确信会有一些绩效提升。

这与你在问题中所问的不同。根据您的问题,您无论如何都在创建冗余。你可以有一个国家和州的列表,并在你的用户表中链接到它们,这是绝对好的。这就是我的基本意思。。。将国家/地区拆分为一个包含所有国家/地区的表,然后在“我的用户”表中使用外键将它们链接到相应的国家/地区。在他们自己的表中包含国家/地区或州并链接到它们是有意义的。通过这种方式,您可以为用户提供一个选择框来选择他的国家,而不是编写它(容易拼写错误等)。这不仅仅是性能提升。在灵活性和未来证明方面也有所提高。