Moh*_*ect 5 database-design web
我正在设计一个黄页网站,我刚刚完成了数据库设计,如果可以的话我需要一些关于它的评论。
ID、名称、标志图像、创建日期
国家ID、名称、图像、创建日期
id、city_id、名称、图像、描述、创建日期
id、company_type_id、名称、图像、描述、创建日期
id、company_sub_type_id、名称、logo_large、logo_small、描述、成立年份、地点、员工人数、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、位置、描述、创建日期
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、描述、creatDate
id、company_id、website_url、描述、创建日期
id、company_id、电子邮件、描述、创建日期
id、user_id、company_id、文本、创建日期
id、user_id、company_id、rate_flag、创建日期
id、user_id、company_id、like_flag、creatDate
id、company_id、信用卡、支票、pay_pal、现金、借记卡、creatDate
ID、服务名称、服务电话号码、创建日期
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、消息、creatDate
id、user_id、albumPic_id、likeFlag、creatDate
我正在考虑为每个国家建立一个不同的数据库,你对此有何看法?提前谢谢:D
正如迈克·谢里尔 (Mike Sherrill) 指出的那样,鉴于人们必须对模型做出许多假设,我认为该模型总体上看起来相当不错。您可能会给自己带来麻烦的一个地方是开放时间。奇怪的是,您为此创建了一个表,但随后使用了非标准化的列集。我看不出如何使用此列集为每个公司或分支机构拥有多行。无论如何,我认为您需要单独的表,但开放时间的列定义完全不同。
根据业务类型和您所在的位置,每天可能会有多个职位空缺。我可以将餐馆、一些医生以及某些国家的几乎任何企业作为例子。有些地方只在用餐时间开放,而其他地方则在午餐时间关闭等。因此,不应使用非标准化模式(即:Sunday_open、Sunday_close、Monday_open、Monday_close 等),您应该使用如下模式:
Company_Working_Hours
( id,
company_id,
day_of_week,
open_time,
close_time
)
Run Code Online (Sandbox Code Playgroud)
您也可以对分支使用相同的结构。这允许您说公司每周二的营业时间为 11:00 至 2:00(例如午餐)和 17:00 至 23:00(晚餐)。这种设计使您可以灵活地每天拥有多个空缺职位,并且无需在业务完全关闭的日子里输入空值。
我对你的模式的另一条评论是,你将地理划分为国家和城市。有些国家幅员辽阔,有多个同名城市(例如美国斯普林菲尔德)。您可能想在城市和国家之间插入省/州/地区表。对于没有细分的国家/地区(罕见),您可以在此中间表中包含一个条目。我已经看到这样做是在桌子上有一个标志来指示是显示还是隐藏记录,以防您担心在它只是一个虚拟记录时显示中间层。
至于您关于为每个国家/地区隔离数据库的问题,我不确定您为什么要这样做。除非您希望在不同的服务器上部署不同的国家/地区,每个服务器都会获得自己不同的网络流量,否则我看不到隔离国家/地区的优势。让用户选择国家/地区将是一个很好的功能。如果所有数据都在一起,则更改国家/地区选择将很容易;如果每个国家/地区都有自己的数据库,则更改国家/地区选择会困难得多。