我正在设计一个黄页网站,我刚刚完成数据库设计,如果你能得到一些关于它的评论。
ID,name,flagImage,creatDate
countryID,name,image,creatDate
id,city_id,name,image,description,creatDate
id,company_type_id,name,image,description,creatDate
id,company_sub_type_id,name,logo_large,logo_small,description,建立年份,地点,员工人数,creatDate
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
id,company_id,location,description,creatDate
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
id,company_id,phone_type,phone_number,description,creatDate
id,company_id,website_url,description,creatDate
id,company_id,电子邮件,说明,creatDate
id,user_id,company_id,text,creatDate
id,user_id,company_id,rate_flag,creatDate
id,user_id,company_id,like_flag,creatDate
id,company_id,credit_card,check,pay_pal,cash,debit,creatDate
id,service_name,service_phone_number,creatDate
id,SpecialServices_id,company_id,creatDate
id,company_id,名称,描述,图片,价格,creatDate
id,company_id,name,description,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
我想为每个国家建立不同的数据库,你怎么看? thnx提前:D
答案 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(晚餐)开放。这种设计使您可以灵活地每天进行多次打开,并且可以节省您在业务完全关闭的几天内输入空值。
我对你的架构做出的另一个评论是,你的地理位置分为国家和城市。一些国家很大,有多个同名城市(例如斯普林菲尔德,美国)。您可能希望在城市和国家之间插入省/州/县表。对于没有细分的国家(罕见),您可以在此中间表中输入一个条目。我已经看到这样做,表格上有一个标志,表示是否显示或隐藏记录,以防你在担心只是一个虚拟记录时显示插入层。
至于你关于为每个国家分隔数据库的问题,我不确定你为什么这样做。除非您希望在不同的服务器上部署不同的国家/地区,每个服务器都会获得自己独特的网络流量,否则我看不到隔离国家/地区的优势。让用户选择一个国家是一个很好的功能。如果您的所有数据都在一起,那么更改国家/地区选择将变得非常容易,如果每个国家/地区都拥有自己的数