黄页网站的最佳MySQL数据库结构

时间:2016-08-06 08:33:25

标签: php mysql database database-design

我正在建立一个黄页网站。我尝试了多个数据库结构。我不确定哪一个是最好的。我考虑过这几点,

  1. 将所有业务数据 - 名称,电话,电子邮件等保存在一个表中,将标签列表保存在另一个表中,并在第三个表中保存标签 - 数据关系的数据ID和标签ID。我发现这很麻烦,因为我将直接在数据库中做大部分事情(至少最初是在发布之前),因此在我的情况下分发所有内容都会有问题。这个是我必须承认的一个干净的解决方案。

  2. 将商家条目保存在一个表中,其中包含一个单独的标记列(每个条目都包含逗号分隔(或JSON)标记)。然后使用类似查询或全文搜索标记来检索结果。随着数据库大小的增加,这个速度会变慢,速度会变慢。它也不容易维护 - 假设我必须重命名标签。

  3. (我的首选)根据类型在不同的表格中分发商业数据 - 所有银行在一个,酒店,餐馆等的单独表格中。包含用于从表中搜索数据的规则的所有标记的单独表。这是一个详细的解释。

  4. 商务表: college_tbl,bank_tbl,hotel_tbl,restaurant_tbl ......等等

    标签表

    ID | Biz Table      | Tag Name              | Tag Key         | Match Rule (col:like_query_part)
    1  | bank_tbl       | Citi Bank Branches    | ['citi','bank'] | 'name:%$1%$2%'
    2  | restaurant_tbl | Pizza Hut Restaurants | ['pizza','hut'] | 'name:%$1%$2%'
    3  | hotel_tbl      | The Leela Hotels      | ['the leela']   | 'name:%$1%'
    

    然后我会使用“匹配规则”'在类似的查询中从“Biz Table”中获取结果'标记名称'。

    我继续推进第三种方法。我觉得它很简单,减少了对第三个数据标签关系表的需求,重命名很容易,如果表的条目有限,性能不会下降 - 比如说每个表最多100万。

    我在过去的15天里摸不着头脑,找到最好的结构,觉得这个在我的情况下非常好。

    请建议更好的方法,或者这种方法以后会遇到一些问题。

1 个答案:

答案 0 :(得分:0)

使用数字1.期间,句号。

错误是“直接在数据库中做事”,而不是先开发API。

Number 2有一个优势 - FULLTEXT搜索。在拥有可用的API和一些数据后,可以将其添加到#1。

3号(多个类似的表)是一个fisaco。 无数 Q& A询问此类问题;回复总是“不”。