2012-05-25 54 views
1

目前有一个表..并需要开始添加新的数据列。 并非每个记录(甚至在添加新数据列后都会添加新数据)都会有数据。所以我想知道这是否更适合新表,因为它实际上是一些数据行的扩展,并不适用于每一行。数据库设计:新表与新列

换句话说,因为这些新的数据元素会有很多未使用的列,所以它似乎更适合新的表格?

EDIT(估计这是太有限)

第一个表是的页面访问量(目前为200万条记录) 纪录 - ID - IP地址 - 次浏览 - created_at时间戳 - 日期

每一个IP地址,记录每天可发 - 连续和浏览量都加入到每天

额外的时间意见字段将用于原点跟踪(即谷歌分析源/中/活动)

不是每次访问都会有这样的信息。 我会假设大约10%的行将有数据(因为它通常只在第一次访问时被归因于)

数据的主要用途是归因于人们来自哪里。这可能会被清盘更加频繁地使用(当时似乎借给自己的单表)

欣赏反馈 - 可以添加更多,如果需要

+1

您应该提供一些关于数据性质以及如何使用它的更多信息。你会检索这个数据或过滤吗?我们在谈论多少个领域?田地有多大?你现在有多少行,需要多少行? – JNK

+0

您还应该考虑在[dba.se]上提出这个问题 - 数据库设计问题就是我们的面包和黄油! – JNK

回答

4

稀疏定义新列的基本规则是这样的(从更严格的规范化规则简化)。

如果属性/列取决于整个主键而没有其他属性,它就属于表中。

如果它取决于除主键之外或除主键以外的其它属性,则它属于其他位置,它所属的表应该与当前表有关系。

例如,你的名字取决于你的SSN,所以如果SSN是主键,你的名字就属于该表。你的车或电话号码确实是而不是完全取决于你的SSN(因为你可能有多个车或手机,所以它会在不同的表中)(您的主号电话号码可能会在第一个表中)

如果您真的想了解数据库设计,请忘记select命令的语法并查看规范化。我对他人的建议是,全部数据库模式应该从3NF开始,并且只有在性能需要时才会恢复。

然后,只有当你了解(并减轻)这样做的固有问题。

+1

感谢所有的输入 - 在阅读本主题和其他在http://dba.stackexchange.com/questions/18399/database-design-new-table-versus-new-columns 我想出了一个创建访客表和访问表的不同模式。访问表会跟踪SOURCE信息和访问类型。 原始页面视图然后链接到访问者和(如适用)访问,因为并非每个页面视图都会记录访问 – cgmckeever