Database design 黄页网站数据库设计(看一看)

Database design 黄页网站数据库设计(看一看),database-design,web,Database Design,Web,我正在设计一个黄页网站,我刚刚完成了数据库的设计,如果可以的话,我需要一些关于它的评论 国家 ID、名称、flagImage、创建日期 城市 countryID、名称、图像、创建日期 公司类型 标识,城市标识,名称,图像,描述,创建日期 公司子类型 id、公司类型、名称、图像、描述、创建日期 公司 id、公司子类型id、名称、大徽标、小徽标、说明、成立年份、地点、员工人数、创建日期 公司工作时间(每天不同的开放时间) id、公司id、周日开放、周日关闭、周一开放、周一关闭、周二开放、周二关闭、周

我正在设计一个黄页网站,我刚刚完成了数据库的设计,如果可以的话,我需要一些关于它的评论

国家 ID、名称、flagImage、创建日期

城市 countryID、名称、图像、创建日期

公司类型 标识,城市标识,名称,图像,描述,创建日期

公司子类型 id、公司类型、名称、图像、描述、创建日期

公司 id、公司子类型id、名称、大徽标、小徽标、说明、成立年份、地点、员工人数、创建日期

公司工作时间(每天不同的开放时间) id、公司id、周日开放、周日关闭、周一开放、周一关闭、周二开放、周二关闭、周三开放、周三关闭、周四开放、周四关闭、周五开放、周五关闭、周六开放、周六关闭、日期

公司分支机构(公司可以有多个分支机构) id、公司id、位置、描述、创建日期

分行营业时间(每天不同的营业时间) id,公司分支机构id,周日开门,周日关门,周一开门,周一关门,周二开门,周二关门,周三开门,周三关门,周四开门,周四关门,周五开门,周五关门,周六开门,周六关门,日期

companyPhone(公司可以添加多个电话) id、公司id、电话类型、电话号码、说明、创建日期

公司网站(公司可以添加多个网站) id、公司id、网站url、说明、创建日期

公司邮件(公司可以添加多封电子邮件) id、公司id、电子邮件、描述、创建日期

公司评论(用户评论) id、用户id、公司id、文本、创建日期

companyRate(用户可以对公司进行评级) id、用户id、公司id、费率标志、创建日期

companyLike(用户可以喜欢该公司) id,用户id,公司id,如标志,创建日期

公司付款方式(公司可以选择接受哪种付款方式) 身份证、公司身份证、信用卡、支票、付款伙伴、现金、借记卡、创建日期

特殊服务(如wi-fi、预订、配送……;我将服务添加到此表中,并将其与其他表中的公司链接) id、服务名称、服务电话号码、创建日期

公司服务 id、特殊服务id、公司id、创建日期

公司产品 id、公司id、名称、描述、图像、价格、创建日期

公司老板 id、公司id、名称、描述、封面图片、创建日期

相册 id,公司注册id,图像小,图像大,标题,描述,创建日期

picComment id、用户id、相册id、消息、创建日期

皮克 id,用户id,相册图片id,如标签,创建日期

我想为每个国家建立一个不同的数据库,你怎么看?
thnx prevance:D

正如迈克·谢里尔(Mike Sherrill)所指出的那样,考虑到人们必须对你的模型做出许多假设,我认为该模型总体上看起来相当不错。你可能会遇到麻烦的一个方面是营业时间。奇怪的是,您为此创建了一个表,但随后使用了一个非规范化的列集。我看不出如何使用此列集为每个公司或分支机构设置多行。在任何情况下,我认为您需要单独的表,但开放时间的列定义完全不同

根据业务类型和您所在的位置,每天可能有一个以上的开业时间。我可以把餐馆、一些医生和某些国家的任何企业作为一个例子。有些地方只在用餐时间开放,而另一些地方则在午餐等时间关闭。因此,不要使用非规范化模式(即:星期日开放、星期日关闭、星期一开放、星期一关闭等),您应该使用如下模式:

Company_Working_Hours
( id,
  company_id,
  day_of_week,
  open_time,
  close_time
)
您也可以对分支使用相同的结构。这可以让你说公司在周二从11:00到2:00(例如午餐)和17:00到23:00(晚餐)营业。这种设计允许您灵活地每天有多个空缺,并且在业务完全关闭的几天内不必输入空值

关于你的模式,我想说的另一点是,你把地理划分为国家和城市。有些国家很大,有多个同名城市(如美国斯普林菲尔德)。您可能需要在城市和国家之间插入省/州/地区表。对于没有细分(罕见)的国家,您可以在此中间表格中有一个条目。我已经看到,在表上有一个标志来指示是显示还是隐藏记录,以防您担心显示中间层,而它只是一个虚拟记录


至于你关于将每个国家的数据库分开的问题,我不知道你为什么要这样做。除非您希望在不同的服务器上部署不同的国家,每个服务器都将获得各自不同的web流量,否则我看不到隔离国家的优势。这将是一个很好的功能,让用户选择一个国家。如果您的所有数据都在一起,那么更改国家/地区选择将很容易,如果每个国家/地区都有自己的数据库,那么更改国家/地区选择将困难得多。

至少要确定您的密钥、唯一约束和外键约束。thnx joel brown,关于yaaa u r的开放时间,我会像你说的那样改变它,关于为每个国家分离数据库,我想我明白你的意思了。这是一个战利品;)祝你今天愉快