如何为多对多关系的企业目录建立mySQL表结构?


How do I set up a mySQL table structure for a business directory with many to many relationship?

我正试图计划我的表结构的企业目录,我将有多个父类别的多个子类别和多个企业列表,所有这些都需要一个多对多的关系。

A Night Out

俱乐部及社团
酒吧
餐馆
的士及私家车
剧院和音乐厅
酒吧

餐馆

中文/东方
小酒馆
炸鱼薯条
印度
意大利
酒吧
海鲜
西班牙语

运输与承运人

包机及租赁
航空公司
汽车/货车出租自驾
快递及配送服务
地产/物业搬迁服务
货运服务及代理
运输承包商
邮政局及服务
重新定位服务
的士及私家车
范雇佣

如您所见,Restaurants既是主类别又是子类别。出租车和私人出租车辆属于运输和承运人夜间外出,在所有这些类别下,在最低级别,我将有业务列表。我不会允许企业提交自己的上市,而是根据要求添加他们自己。一个企业列表最多可以属于6个类别。

我正在努力为我的数据库找到最好的表结构,并将非常感谢任何建议。我对php/mySQL比较陌生

您可以有一个类别表,它将包含所有可能的类别/子类别的列表,然后在您的信息表中有它,以便有一个CategoryID字段以及一个SubCategoryID,其中您将为子类别或相应的id具有NULL。


您也可以使用映射表对其进行映射,这样您就可以拥有任意多的类别/子类别。

Category Table ( CategoryId, CategoryName )
Business Table ( BusinessId, BusinessName )
Category Mapping Table ( BusinessId, CategoryId, IsCategory )

IsCategory将是一个BIT字段,以便您可以将业务的任意数量的类别标记为子类别(0)或类别(1)。

在类别映射表上,我将创建主键(Business essid, CategoryId),并将它们分别创建为业务/类别表的外键。