Mysql 四维数据库网格

Mysql 四维数据库网格,mysql,sql,database-design,Mysql,Sql,Database Design,现在,我有一个二维网格,它显示了特定(2)服务的(1)需求。前端看起来像这样: FEATURE TRAILER MARKETING DVD x Streaming x x Theatrical x x 我现在如何将其存储在数据库中: `se

现在,我有一个二维网格,它显示了特定(2)服务的(1)需求。前端看起来像这样:

                FEATURE          TRAILER           MARKETING
DVD               x                
Streaming         x                x
Theatrical        x                                   x
我现在如何将其存储在数据库中:

`service`
  - id
  - name (e.g., "DVD")

` requirements`
  - id
  - name (e.g., "Marketing")

`requirements_grid`
  - service_id
  - requirement_ids (csv of all requirement ids)
现在我可以这样说:“对于DVD,我需要一个功能作为一个要求。”

我现在需要添加两个额外的参数,(3)内容类型;和(4)供应商。这些将是默认需求网格中的更改(添加或删除)

这将允许我描述类似“对于福克斯电视(内容类型)DVD(提供商),我需要一个功能和一个预告片


我将如何构造数据库来存储它?还有,在前端显示它的可能方式是什么?

要回答您的第一个问题-如何存储四维网格-只需沿着您已经到达的方向继续,但要规范化
requirement\u id

因此,在当前模式中,如果

| service_id | requirement_ids |
|          1 |           1,2,3 |
|          2 |               2 |
在新模式中,您可以得到:

| service_id | requirement_id |
|          1 |              1 |
|          1 |              2 |
|          1 |              3 |
|          2 |              2 |
进行此更改后,添加新维度非常简单:

`service`
  - id
  - name (e.g., "DVD")

` requirements`
  - id
  - name (e.g., "Marketing")

`content_type`
  - id
  - name

`provider`
  - id
  - name

`requirements_grid`
  - service_id
  - requirement_id
  - content_type_id
  - provider_id

<>我不能帮助你解决另一个问题。考虑把它移到一个单独的堆栈溢出问题。

< P>这是我根据反馈选择的模式:

CREATE TABLE requirement
(service_id INT NOT NULL
requirement_id INT NOT NULL
content_type --type??
provider --type??,
PRIMARY KEY ? (service_id,requirement_id,content_type,provider type));
`requirements_grid`
  - service_id NOT NULL
  - requirement_ids (csv of all requirement ids) NOT NULL
  - content_type
  - provider

保留csv字段只会使我更容易访问。

感谢您的回答和解释。使用上述结构是否可以“继承”默认的service x需求模板?基本上,所有的
内容类型
提供者
更改都基于此默认模板。(例如,我们可能有100个服务,一个提供者可能在默认模板中拥有所有内容,但单个服务的一次删除除外。嗯……您可以通过插入作为模板的虚拟项的行来创建模板,然后在需要模板时复制关联行。其他wise您将得到一个更复杂的模式,其中网格表示与给定模板的差异。这确实是可能的,但您应该使用哪一种模式实际上取决于您打算如何使用它。第一种方法将给您带来大量冗余。第二种方法可能会执行得稍差,并且实现起来更复杂。in在这种情况下,如何从默认模板中删除需求?在上述场景中,只能添加。您只需向
requirements\u grid
中添加一个额外字段,指示是添加还是删除给定需求。