【问题标题】:yellow pages website database design ( take a look )黄页网站数据库设计(看看)
【发布时间】:2011-08-12 14:10:25
【问题描述】:

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

国家

ID、名称、flagImage、creatDate

城市

countryID、名称、图片、创建日期

公司类型

id、city_id、名称、图片、描述、创建日期

companySubType

id、company_type_id、名称、图片、描述、创建日期

公司

id、company_sub_type_id、名称、logo_large、logo_small、描述、成立年份、位置、员工人数、创建日期

company_working_hours(每天不同的营业时间)

id, company_id, Sunday_open, Sunday_close, Monday_open, Monday_close, Tuesday_open, Tuesday_close, Wednesday_open, Wednesday_close, Thursday_open, Thursday_close, Friday_open, Friday_close, Saturday_open, Saturday_close, creatDate

company_branch(公司可以有多个分支机构)

id、company_id、位置、描述、创建日期

branch_opening_hours(每天不同的营业时间)

id, company_branch_id, Sunday_open, Sunday_close, Monday_open, Monday_close, Tuesday_open, Tuesday_close, Wednesday_open, Wednesday_close, Thursday_open, Thursday_close, Friday_open, Friday_close, Saturday_open, Saturday_close, creatDate

companyPhone(公司可以添加多个电话)

id、company_id、phone_type、phone_number、description、creatDate

companyWebsite(公司可以添加多个网站)

id、company_id、website_url、描述、创建日期

companyE-mail(公司可以添加多个邮箱)

id、company_id、电子邮件、描述、创建日期

companyReview(用户评论)

id、user_id、company_id、文本、创建日期

companyRate(用户可以给公司打分)

id、user_id、company_id、rate_flag、creatDate

companyLike(用户可以给公司点赞)

id、user_id、company_id、like_flag、creatDate

companyPaymentMethod(公司可以选择接受的支付方式)

id、company_id、credit_card、check、pay_pal、cash、debit、creatDate

SpecialServices(如 wi-fi、预订、送货......;我在此表中添加服务并将其与其他表中的公司链接)

id、service_name、service_phone_number、creatDate

公司服务

id、SpecialServices_id、company_id、creatDate

公司产品

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

公司相册

id、company_id、名称、描述、cover_image、creatDate

相册图片

id、companyAlbum_id、image_small、image_large、标题、描述、creatDate

图片评论

id、user_id、albumPic_id、message、creatDate

图片喜欢

id、user_id、albumPic_id、likeFlag、creatDate

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

【问题讨论】:

  • 至少确定您的键、唯一约束和外键约束。

标签: database-design web


【解决方案1】:

正如 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(晚餐)开放。这种设计使您可以灵活地每天开设多个职位,并且无需在业务完全关闭的日子里输入空值。

我对您的架构的另一个评论是您将地理划分为国家和城市。一些国家很大,并且有多个同名城市(例如美国斯普林菲尔德)。您可能想在城市和国家之间插入一个省/州/县表。对于没有细分的国家(罕见),您可以在此中间表中输入一个条目。我已经看到在表格上使用一个标志来指示是显示还是隐藏记录,以防您担心在它只是一个虚拟记录时显示中间层。

关于您关于为每个国家/地区隔离数据库的问题,我不确定您为什么要这样做。除非您希望在不同的服务器上部署不同的国家,每个国家都将获得自己不同的网络流量,否则我看不出隔离国家有什么好处。让用户选择一个国家将是一个很好的功能。如果您的所有数据都放在一起,更改国家/地区选择会很容易,如果每个国家/地区都有自己的数据库,则更难。

【讨论】:

  • thnx joel brown ,关于开放时间,你刚刚好,我会按照你所说的进行更改,关于为每个国家/地区隔离数据库,我想我明白了。 thnx 战利品 ;) 有一个 nc 日
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多