哪一个更好(性能明智和维护),一个动态创建表或只是动态添加行的数据库?
假设我正在构建一个允许用户注册的项目。假设我有一个只存储基本个人信息的表,如姓名,dob,加入日期,地址,电话等。说10列。
现在是棘手的部分。
场景1:创建多个表格
当用户完成注册时,会创建一个消息表。因此,为每个用户创建每个表。每个消息表的行因每个用户而异。
同样,每个用户都有一个购物车表,如消息表。
对于此场景1,每次注册都会创建2个表。
场景2:添加行
这里的场景也是一样的,但在这种情况下我有2个表用于消息和购物车。只有在有活动时才会添加行。
注意:
您必须假设用户数量超过2000,并且预计有50多个用户始终处于活动状态。这意味着两个案例的消息和购物车表总是很忙。就像总是同时查询更新,添加,删除,插入,选择等一样。
哪个场景会占用更多磁盘空间。
在写这篇文章时,我想知道Facebook和其他人使用什么技术。如果他们使用场景2样式(所有用户(数十亿)使用相同的大长消息表)...只是想知道
答案 0 :(得分:4)
数据库有一些为Database Design定义的基本规则 “数据库规范化”,这些基本规则允许我们消除 冗余数据。
第一范式
仅在一列中存储一条信息,一列只应存储一条信息。2ns普通表格
表应该只包含彼此相关的列。所有相关列应位于一个表中。现在,如果您查看建议的设计,每个用户的单独表格 将拆分有关1000的所有用户的SAME信息/列 表。这违反了第二范式。
您需要创建一个表并将所有相关列放入其中 所有用户都有一个表。你可以使用普通的t-sql来 查询你的数据,但如果你有一个每个用户的表,我的猜测是你的 将构建您从应用程序执行的每个查询 动态地为每个查询使用动态sql。哪一个 是Sql Devils之一,你想避免在任何时候使用它 可能。
我的建议将会更多地了解数据库设计。一旦你有了 对数据库设计有一些基本了解。把它画在一块上 纸,看看它是否为您提供了所有业务 需要/期望从这个应用程序,现在花一些时间它 以后会为你节省很多痛苦。