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

时间:2011-08-12 14:10:26

标签: database-design web

我正在设计一个黄页网站,我刚刚完成数据库设计,如果你能得到一些关于它的评论。

国家

ID,name,flagImage,creatDate

城市

countryID,name,image,creatDate

companyType

id,city_id,name,image,description,creatDate

companySubType

id,company_type_id,name,image,description,creatDate

公司

id,company_sub_type_id,name,logo_large,logo_small,description,建立年份,地点,员工人数,creatDate

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,location,description,creatDate

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

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

id,company_id,website_url,description,creatDate

companyE-mail(公司可以添加多个电子邮件)

id,company_id,电子邮件,说明,creatDate

companyReview(用户评论)

id,user_id,company_id,text,creatDate

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

companyServices

id,SpecialServices_id,company_id,creatDate

Company是

id,company_id,名称,描述,图片,价格,creatDate

companyAlbum

id,company_id,name,description,cover_image,creatDate

albumPic

id,companyAlbum_id,image_small,image_large,标题,说明,creatDate

picComment

id,user_id,albumPic_id,message,creatDate

picLike

id,user_id,albumPic_id,likeFlag,creatDate

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

1 个答案:

答案 0 :(得分:4)

正如迈克·谢里尔所指出的那样,人们必须对你的模型做出许多假设,我会说这个模型整体看起来很不错。您可能遇到麻烦的一个领域是营业时间。很奇怪,你为此创建了一个表,但后来使用了一个非标准化的列集。我无法看到如何使用此列集为每个公司或分支机构设置多个行。在任何情况下,我认为你想要单独的表,但开放时间的列定义完全不同。

根据业务类型和所在地,每天可能有多个开放时间。我可以想到餐馆,一些医生,以及某些国家的任何企业。有些地方只在用餐时间开放,而其他地方则在午餐时间等。因此,您应该使用这样的模式,而不是使用非规范化模式(即:Sunday_open,Sunday_close,Monday_open,Monday_close,......等)。 / p>

Company_Working_Hours
( id,
  company_id,
  day_of_week,
  open_time,
  close_time
)

您也可以对分支使用相同的结构。这允许您说公司在星期二的11:00到2:00(例如午餐)和17:00到23:00(晚餐)开放。这种设计使您可以灵活地每天进行多次打开,并且可以节省您在业务完全关闭的几天内输入空值。

我对你的架构做出的另一个评论是,你的地理位置分为国家和城市。一些国家很大,有多个同名城市(例如斯普林菲尔德,美国)。您可能希望在城市和国家之间插入省/州/县表。对于没有细分的国家(罕见),您可以在此中间表中输入一个条目。我已经看到这样做,表格上有一个标志,表示是否显示或隐藏记录,以防你在担心只是一个虚拟记录时显示插入层。

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