我完成了会议网站设计,现在我应该创建数据库了。但我不确定使用哪种方法。我正在使用Apache,PHP和MySQL。我有用户,每个用户都有输入和输出邮箱,每个用户都有一个朋友列表。这是基本情景。在这里,我有三个问题。
对于盒子和盒子,我应该为每个人创建一张新桌子吗?或者是1个大的盒子和盒子表,并且识别每个发送者和接收者的邮件是否足够?如果每个用户搜索并显示他的邮箱会有100万条消息会导致速度变慢吗?
为了创建好友列表,还要创建一个表,将所有用户关系存储为一行数据谁是谁的朋友?还为每个用户朋友搜索表会导致速度变慢吗?
我正在使用Mysql,但是说甲骨文最充满力量。由于这些原因,我应该选择哪一个?
也许你可以想到有多少人应该注册到我的网站并强制使用数据库,但谁知道))
答案 0 :(得分:1)
我会问你几个问题:
对于盒子和盒子,我应该为每个人创建新桌子吗?或者一个大的盒子和盒子外面的表格,并确定每个邮件是发送者和接收者就足够了吗?
使用一张桌子。这具有许多优点,例如能够在单个查询中轻松查询所有用户的消息。例如,要搜索发送了超过x
条消息的所有用户,您可以使用GROUP BY(userid)
和每组COUNT。如果您将所有数据都放在一个表中,那么它很简单,但是如果每个用户都有一个表,则必须动态生成此查询的SQL。
如果表格变得过大,您可以partition,例如,您可以对用户ID或发布年份或其他任何对数据分发有意义的内容进行分区。
如果每个用户搜索并显示他的邮箱会有100万条消息会导致速度变慢吗?
这取决于。如果您索引表并使用索引进行搜索,那么它就没问题了。如果你写LIKE '%foo%'
那么它会很慢。确保所有搜索都使用索引。
我会将其他问题留给其他人回答。
答案 1 :(得分:0)
我认为您需要首先确定数据库中所需的所有信息(名称,电子邮件地址,邮件消息......),并应用规范化规则来识别您的实体和属性。
Oracle的SQL Developer Data Modeler等数据建模工具可以帮助将其推进到实现中。
不要害怕'大'数据量。数据库可以很好地处理数百万行的表(并且数量级高于该表)。
Oracle vs MySQL需要大量资金和实施。你会发现很多便宜的mySQL托管。 Oracle将更难找到并且更加昂贵。