黄页网站数据库设计(请看)

5
我正在设计一个黄页网站,刚完成了数据库设计,如果可以的话,我需要一些关于它的评论。
国家
ID、名称、国旗图像、创建日期
城市
国家ID、名称、图像、创建日期
公司类型
ID、城市ID、名称、图像、描述、创建日期
公司子类型
ID、公司类型ID、名称、图像、描述、创建日期
公司
ID、公司子类型ID、名称、大型标志、小型标志、描述、成立年份、位置、员工人数、创建日期
公司工作时间(每天不同的开放时间)
ID、公司ID、星期日开放时间、星期日关闭时间、星期一开放时间、星期一关闭时间、星期二开放时间、星期二关闭时间、星期三开放时间、星期三关闭时间、星期四开放时间、星期四关闭时间、星期五开放时间、星期五关闭时间、星期六开放时间、星期六关闭时间、创建日期
公司分支机构(公司可以有多个分支机构)
ID、公司ID、位置、描述、创建日期
分支机构营业时间(每天不同的开放时间)
ID、公司分支机构ID、星期日开放时间、星期日关闭时间、星期一开放时间、星期一关闭时间、星期二开放时间、星期二关闭时间、星期三开放时间、星期三关闭时间、星期四开放时间、星期四关闭时间、星期五开放时间、星期五关闭时间、星期六开放时间、星期六关闭时间、创建日期
公司电话(公司可以添加多个电话)
ID、公司ID、电话类型、电话号码、描述、创建日期
公司网站(公司可以添加多个网站)
ID、公司ID、网站URL、描述、创建日期
公司电子邮件(公司可以添加多个电子邮件)
ID、公司ID、电子邮件、描述、创建日期
公司评论(用户评论)
ID、用户ID、公司ID、文本、创建日期
公司评分(用户可以对公司进行评分)
ID、用户ID、公司ID、评分标志、创建日期
公司点赞(用户可以点赞公司)
ID、用户ID、公司ID、点赞标志、创建日期
公司付款方式(公司可以选择接受哪种付款方式)
ID、公司ID、信用卡、支票、PayPal、现金、借记卡、创建日期
特殊服务(如Wi-Fi、预订、送货等;我在这个表中添加了服务,并在其他表中将其与公司关联)
ID、服务名称、服务电话号码、创建日期
公司服务
ID、特殊服务ID、公司ID、创建日期
公司产品

id, company_id, name, description, image, price, creatDate

公司相册

id、company_id、名称、描述、图片、价格、创建日期

企业相册

id、company_id、名称、描述、封面图片、创建日期

相册图片

id、企业相册id、小图、大图、标题、描述、创建日期

图片评论

id、用户id、相册图片id、留言、创建日期

图片点赞

id、用户id、相册图片id、点赞标志、创建日期

我在考虑为每个国家制作一个不同的数据库,你认为怎么样?谢谢!:D


至少要确定你的主键、唯一约束条件和外键约束条件。 - Mike Sherrill 'Cat Recall'
1个回答

4
考虑到如Mike Sherrill所指出的,您对模型做出了许多假设,我认为整体来看这个模型还不错。但有一个区域可能会让您陷入麻烦,那就是关于营业时间的部分。您创造了一个表格,但使用了非规范化的列集。我无法理解如何使用此列集创建每个公司或分支机构的多行。无论如何,我认为您需要单独的表格,并使用完全不同的列定义来表示开放时间。
根据业务类型和所处位置的不同,可能会有每天多次开放的情况。例如餐厅、某些医生以及某些国家的任何企业。有些地方只在用餐时间开放,而其他地方则会在午餐时间关闭等。因此,您应该使用像这样的架构而不是非规范化的架构(即:Sunday_open,Sunday_close,Monday_open,Monday_close等):
Company_Working_Hours
( id,
  company_id,
  day_of_week,
  open_time,
  close_time
)

您也可以对分支使用相同的结构。这使您能够说公司在周二从11:00到2:00(例如午餐)和从17:00到23:00(晚餐)开放。此设计允许您每天有多个开放时间,并且无需为整个关闭的日子输入null,从而节省了时间。
关于您的模式,我想提出另一个评论是您将地理位置划分为国家和城市。一些国家很大,有多个同名城市(例如美国的斯普林菲尔德)。您可能需要在城市和国家之间插入一个省/州/自治区表。对于没有细分的国家(罕见),您可以在介于表中拥有单个条目。我已经看到过在表上设置标志以指示何时显示或隐藏记录来完成此操作,以防您担心在只有虚拟记录的情况下显示介于层。
至于您关于为每个国家隔离数据库的问题,我不确定为什么要这样做。除非您希望在不同服务器上部署不同的国家,每个服务器都会获得自己独特的Web流量,否则我看不出隔离国家的优势。让用户选择一个国家将是一个不错的功能。如果所有数据都在一起,则更改国家选择将很容易,如果每个国家都有自己的数据库,则更改将困难得多。

谢谢Joel Brown,关于营业时间,你说得对,我会按照你的建议进行更改。至于为每个国家分离数据库,我明白了你的意思。非常感谢;)祝你有愉快的一天。 - Moh'd Al-Dweik Connect

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接