如何最好地允许一个用户或ID的多个类别?

时间:2015-01-27 15:43:50

标签: mysql sql multiple-columns

我是SQL新手,但我正在尝试为目录类型数据库创建一个表。这个想法是有些公司(公司表)在一个或多个类别中运作 - 例如袋子,鞋子,皮带。我现在有一个类别表,其中包含大约55个类别的列表 - 我想让它保持开放,以便添加新的类别。

我得到的表格如下:ID,Company_ID,类别1(布尔值),类别2(布尔值),类别3 ......等等。

我是沿着正确的路线还是有更好的方法来做到这一点?

该公司的想法将能够登录,从中它将知道他们的ID,并且他们将能够复选他们在其下运营和保存的类别。理想情况下,我希望能够有一些PHP自动显示表单中的复选框,而不是硬编码。之后,我希望能够从搜索或链接中选择将X类别设置为1的公司。

2 个答案:

答案 0 :(得分:1)

这是一个多对多关系的案例。

您必须使用第三个表来表示关系,因此您有以下三个表:

Company (id, name , ...)
Category (id, name, ...)
Company_Category (company_id, category_id)

其中company_idCompany.id的外键,而category_id是[{1}}的外键。

希望这有帮助。

答案 1 :(得分:0)

我不确定我明白你的意思......但是,根据我的理解,你只需要公司和类别之间的n-n关系,你只需要一个中间表。 因此,您将拥有其COMPANY_ID类别的公司及其CATEGORY_ID和中间表(可以拥有自己的ID)和另外两列,一列用于CATEGORY_ID,另一列用于COMPANY_ID。

我不知道我是否理解你的问题,希望它有所帮助。

顺便说一句,这比每次定义新类别时修改公司表的架构要好得多。请不要这样做。