我正在使用MySQL数据库并想知道数据库表设计。
我看到由PHP开发人员设计的两种表集。基本上一个表包含一些动态统计信息而另一个表包含更多静态统计信息,但每个记录都包含相同的row_id。例如,存储了一个用户表,其中存储了名称,传递等信息,以及一个user_stats表,其中的行为摘要可能与花费的总金额等有关。
除了为每个表的功能添加更多清晰度之外,这样做是否有任何实际优势。您认为表中有多少列是最佳的?将更多静态信息和动态内容混合在同一个表的20列中是不是很糟糕?
答案 0 :(得分:1)
从设计的角度来看,您可能会认为User
表描述了事物,即“用户”。可能有成千上万的行,并且行可能需要保留在该表中......即使对于那些多年来一直在当地墓地推进雏菊的用户......因为这个表关联了{{ 1}}分散在整个数据库中的值与该“事物”的各个属性。
同时,我们还会收集user_id
。但是,我们不会将这些统计数据保持这么长时间,而且我们不会将它们保留在我们所知道的每一个User_Stats
内。 (当然不是那些住在坟墓场的人。)而且,当我们想要运行有关这些统计数据的报告时,我们不希望了解所有这些数十万的{ {1}}记录,查找实际上拥有统计信息的记录。
User
是一个完全独立的记录集合。是的,与 User
相关,例如在参照完整性意义上“任何User_Stats
(外键... )Users
中的必须与user_id
中的User_Stats
相对应。但它仍然是“完全独立的记录集合。”
将这些作为单独表格保留的另一个重要原因是user_id
和他的Users
之间可能存在一对多关系。 (例如,也许您按日,周或月保持汇总统计数据......)
如果你的下午没有什么比阅读数据库教科书更好... ; - ) ...这个一般主题的正式名称是:“普通表格。 “(”First“,”Second“,”Third“等等。)