Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 类别属性的数据库模式混淆_Mysql_Sql Server_Database_Database Design - Fatal编程技术网

Mysql 类别属性的数据库模式混淆

Mysql 类别属性的数据库模式混淆,mysql,sql-server,database,database-design,Mysql,Sql Server,Database,Database Design,这些是我的要求: 每个类别都有多个组 每个组都有多个属性 每个属性都有多个值 到目前为止,我已经提出了这个数据库设计 类别组表 GroupID|CatID[参考类别(CatID)]|GroupName 类别属性表 AttributeID|AttributeName|GroupID[引用类别组(GroupID)]|AttributeValue 你们认为这是一个整洁的设计吗??有什么建议吗?除了命名第二个表GroupAttributes,因为它对类别一无所知,所以这是一个最常用的好方法。您有多个1:

这些是我的要求:

  • 每个类别都有多个组
  • 每个组都有多个属性
  • 每个属性都有多个值
  • 到目前为止,我已经提出了这个数据库设计

    类别组表

    GroupID
    |
    CatID[参考类别(CatID)]
    |
    GroupName

    类别属性表

    AttributeID
    |
    AttributeName
    |
    GroupID[引用类别组(GroupID)]
    |
    AttributeValue


    你们认为这是一个整洁的设计吗??有什么建议吗?

    除了命名第二个表
    GroupAttributes
    ,因为它对类别一无所知,所以这是一个最常用的好方法。您有多个1:N(一对多)关系,并且以正确的方式引用了表。

    有没有理由不为您的四个概念使用四个表

    Category: id, <category stuff>
    Group: id, category_id, <group stuff>
    Attribute: id, group_id, <attribute stuff>
    Value: id, attribute_id, <value stuff>
    
    Category:id,
    组:id,类别\u id,
    属性:id,组\u id,
    值:id,属性\u id,
    
    主键是id列


    外键命名为(即attribute_id是attribute.id的外键)

    我现在主要关心的是如何批量上传数据??我的想法是,用户必须先选择类别,然后选择组,然后上传带有值的属性……对吗?插入批处理数据可能有点复杂。我指的是用户必须使用的GUI。如果您指的是单个组的批处理值,那么当然,这个工作流可以很容易地想象为GUI和代码。但是,当您希望允许为多个类别和组添加值时,GUI将变得非常复杂,很难看到。如果没有比用户界面更好的东西,那么它应该很容易使用,就像你说的。您还可以按名称搜索类别或组,以获取ID,并根据需要在层次结构中插入数据。您将按照您所说的那样执行..按组插入..再查询一次..知道如何在GUI中显示按组名称分组的属性吗??假设我有3个组…每个组下有5个属性..我如何在GUI中显示这一点..在组1>>>5个属性下..在组2>>>>>>>>5个属性下等等..有很多方法可以做到这一点,这取决于您愿意显示多少信息。例如,对于逗号分隔的值,可以从数据库GroupBy group中进行选择。要进行详细显示,您必须查询数据库中的组数。您还可以创建一个视图,合并所有信息,以便于搜索。