mysql - 基于可变数量的客户分割的数据库主键

标签 mysql sql grails database-design grails-orm

使用 MySQL DB 在 Groovy/Grails 和 GORM 中执行此操作。

在为不同客户存储数据时,我们需要能够识别他们的分割。有些分割级别为 0。一些、1、2、3 级等。我们希望允许任意数量的分割级别,但也可以采用固定数量,例如 5、7 或 10。

例如:

ABC 公司有 2 个分割级别:

公司)ABC(根级别) 分割级别 1) ABC->Div1、ABC->Div2、ABC->Div3 分割级别 2) ABC->Div1->SubDiv1、ABC->Div1->SubDiv2、ABC->Div1->SubDiv3

公司 DEF 有 1 个级别:

公司)DEF(根级别) 级别 1) DEF->Div1、DEF->Div2、DEF->Div3

我们需要为每个级别定义一对一和一对多的唯一属性(例如将地址与 ABC->Div1->SubDiv3 关联)

ABC 公司可能希望我们为 Div2 的所有实例以及 Div2 的所有分割显示特定图像。

问题是,如何最好地为标识符或主键创建可变数量的划分级别,然后用作相关数据的外键?

具有固定数量的列(例如 7 和一个复杂的键):

ID-Level-1、ID-Level-2、ID-Level-3、ID-Level-4、ID-Level-5、ID-Level-6、ID-Level-7

或者,创建某种层次结构树并使用各种键值作为标识符/外键?

最佳答案

您可以像下面这样建模

class Company {
    static hasMany = [subdivisions: Subdivision]
}

class Subdivision {
    static belongsTo = [company: Company, subdivision: Subdivision]
    static hasMany = [subdivisions: Subdivision]
}

关于mysql - 基于可变数量的客户分割的数据库主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19642656/

相关文章:

sql - 添加来自多个 COUNT 查询的结果

mongodb - Grails 3.1-找不到域类的编解码器

grails 渲染 pdf 插件不工作,简单的例子?

sql - 在 Apache Superset 中添加 Druid 集群作为 SQL 数据库

修改 Controller 后,Grails 找不到插件提供的 View

php - 如何将 html 表单与 sql 数据库表链接?

php - 日期不工作的 PDO bindParam

php - Cakephp 数据库迁移有问题

php - 如何替换多行

php - 获取行号