我有一个“地点”表(id_place、姓名、地址、coor_x、coor_y)
我想为他们的“facebook页面”“twitter页面”“wesbite”和电话添加一个地方
我的第一个想法是创建一个表,假设包含这些字段的 social_contact,并在位置表 (social_contact_id) 中添加一个额外的列,该列将是 1 到 0..1 的关系(这 4 个字段是可选的,可以是空白的)
这是好习惯吗?或者我最好将这 4 个新文件直接填充到位置表中?
谢谢你!
我有一个“地点”表(id_place、姓名、地址、coor_x、coor_y)
我想为他们的“facebook页面”“twitter页面”“wesbite”和电话添加一个地方
我的第一个想法是创建一个表,假设包含这些字段的 social_contact,并在位置表 (social_contact_id) 中添加一个额外的列,该列将是 1 到 0..1 的关系(这 4 个字段是可选的,可以是空白的)
这是好习惯吗?或者我最好将这 4 个新文件直接填充到位置表中?
谢谢你!
我希望我不会因为这个简单的答案而被贬低,但我认为答案是“视情况而定”。
至少在 MySQL 世界中(并且在任何地方都是如此),只有固定宽度列的表可以更快地找到,因此主表的宽度是固定的,并放置不太频繁需要和可变的 -另一个表中的宽度列...它可以是一个很好的速度设计。
另一方面,如果这永远不会是一张大桌子,并且您通常无论如何都会获取额外的数据......这可能只是无缘无故地增加您的维护成本......所以最好把事情简单化。
[更新 2015-02-13]
在 20 个字段中,您的表仍然很小。但是,在你的辩护中,我希望有人考虑拆分我使用的一些表,因为每个查询都不需要 80% 的数据(几百列),我们可能已经制作了主表固定宽度,如果我们有一些深谋远虑的话。所以,总是问你是否应该分裂是一件好事。但是,同时尽量记住 YAGNI,这样您就不会在不需要时拆分表。
如果您曾经扩展您的表格以便为您的用户提供单独的“简历”,然后是“个人资料”,以及用户“查看设置”的复杂映射......每一个都可能有自己的大量数据,并且每个都将完全单独加载。简历仅在人们查看时加载,与个人资料相同,“查看设置”仅在用户浏览网站时加载。因此,这些将创建 3 个逻辑上独立的表,因为您将在不同的时间查询它们,而不是一起查询。分表并没有错,你只需要问是否值得。
假设四个新列绝对特定于那个地方,将这些列添加到 Place 表中最有意义。