【问题标题】:What would the database schema of yelp or a review site look like?yelp 或评论网站的数据库架构是什么样的?
【发布时间】:2013-04-02 22:41:17
【问题描述】:

我可以使用一些帮助来构建数据库。我目前有一个数据库和一个名为列表的表,其中包含大约 8 列(名称、联系人、地址...),其中包含有关每个组织的信息。

接下来我想建立一个评论数据结构来存储和检索评论者信息(名称用户名、评论日期、cmets...)。 这些是我目前对这个问题的猜测......

1)每个组织都有一个单独的表

2)在一张巨表中为每条评论者数据单独列(比如每个企业 5 列)?

3)每条数据一个表(所以用户名一个表,cmets一个表...)?

第一个看起来很疯狂(因为如果你有 500 个实体,那么你就有 500 个表)。

当我运行我编写的要添加 200 个实体*5 条数据(1000 列)的 php 脚本时,第二个引发了 mysql 错误。不太记得错误了,类似 mysql: too many columns(当我查找时,参考资料说这是因为我添加了太多列)

第三个似乎是正确的方法。

最终我计划拥有大约 3000 个组织,再加上我可能拥有的许多 cmets,每个组织可能有 20 个(估计)。

架构的这三个选项中哪一个看起来最合理?

【问题讨论】:

    标签: php mysql database-design database-schema


    【解决方案1】:

    查看第三范式,了解如何构建关系 dbms。

    但是,您可能应该有几个表,每个表都有一个 ID

    A) 带有组织名称等的组织表

    B) 引用组织 ID 的地址表(这样您就可以拥有一个组织的多个地址)

    C) 带有对组织 ID 和用户 ID 的外键引用的审核表

    D) 用户表,他们的密码可能是散列。

    通过引用组织 ID,您可以建立 1:MANY 关系,1 个组织可以有多个地址和评论。

    据我所知,您只需要大约 4 个表,如果要寻址的组织是 1:1 关系,您可以将地址放在组织表中,尽管这有点懒惰,以后可能会咬到你。

    您的评论表将包含您的所有 cmets,并且您将使用外键获取用户或组织的评论。例如。 “从 Table_Reviews WHERE Organization_id = 10 中选择 *”。如果您在“组织”表中查找 ID=10,您就会知道该评论是针对谁的。

    【讨论】:

    • 感谢您的回答...感谢有关密码哈希的提示。是否有为此预定义的 php 函数(如 java 中的函数)或者这是我编造的?
    猜你喜欢
    • 2018-08-13
    • 2015-11-28
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多