Database 数据库:拆分表
我最近读了很多关于数据库、冗余等的书 现在我正在构建一个用户表,它将保存所有信息 关于在我的系统中注册的用户 用户表应包含:id(PK)、用户名、密码、电子邮件和地址(街道、, 城市、邮政编码、国家) 我是否应该拆分地址并创建另一个仅包含用户地址的表, 比如:id(PK)、街道、城市、zipcode、国家、用户id(FK))? 我甚至可以在这里把zipcode和country拆分成新的表格 这有意义吗,尤其是将zipcode和country拆分到一个新表中Database 数据库:拆分表,database,database-design,Database,Database Design,我最近读了很多关于数据库、冗余等的书 现在我正在构建一个用户表,它将保存所有信息 关于在我的系统中注册的用户 用户表应包含:id(PK)、用户名、密码、电子邮件和地址(街道、, 城市、邮政编码、国家) 我是否应该拆分地址并创建另一个仅包含用户地址的表, 比如:id(PK)、街道、城市、zipcode、国家、用户id(FK))? 我甚至可以在这里把zipcode和country拆分成新的表格 这有意义吗,尤其是将zipcode和country拆分到一个新表中 干杯 我个人认为,将这些细节拆分成单独
干杯 我个人认为,将这些细节拆分成单独的表没有任何附加价值
即使您不太可能经常使用地址/zipcode,您也可以始终使用
select username,email..
而不是select*。
仅选择必要的字段。您应该根据要求执行此操作,而不是因为您可以。因此,您应该有一个功能需求(例如,您希望为每个用户存储多个地址)或一个您想要解决的技术问题(性能、安全性等)。对我来说,在这样一个简单的表设计中,后者听起来不太可能,因此根据您提供的信息,我建议使用单个表。我在这里考虑了一些冗余方面。
如果把国家放在一张桌子里不是更好吗
而不是在我的用户表中一遍又一遍地写?->冗余对于大多数情况,答案是否定的。为什么要有一个额外的连接来查找地址?为什么有两个一对一关系的表
正如其他人所说,不要让生活复杂化,除非你确信会有一些绩效提升。这与你在问题中所问的不同。根据您的问题,您无论如何都在创建冗余。你可以有一个国家和州的列表,并在你的用户表中链接到它们,这是绝对好的。这就是我的基本意思。。。将国家/地区拆分为一个包含所有国家/地区的表,然后在“我的用户”表中使用外键将它们链接到相应的国家/地区。在他们自己的表中包含国家/地区或州并链接到它们是有意义的。通过这种方式,您可以为用户提供一个选择框来选择他的国家,而不是编写它(容易拼写错误等)。这不仅仅是性能提升。在灵活性和未来证明方面也有所提高。