首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为下面的用例设计表格?

如何为下面的用例设计表格?
EN

Stack Overflow用户
提问于 2014-09-13 17:45:55
回答 1查看 29关注 0票数 0

我有两张桌子,widgettier。一家公司可以属于任何一层(tier1、tier2、tier3),并且每一层都启用了一些小部件。因为ex - tier1启用了3个不同的小部件,第二层有3个自己的不同的小部件,tier1的3个小部件也总共有6个,tier3以同样的方式启用了总共9个(3+3+3)小部件。

Company表有一个tier_id作为外键。

我的widget和层表描述如下:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `mydb`.`widget` (
 `id` INT NOT NULL,
 `name` VARCHAR(100) NOT NULL,
 `tier_id` INT NULL,
 PRIMARY KEY (`id`),
 INDEX `fk_widget_tier_idx` (`tier_id` ASC),
 CONSTRAINT `fk_widget_tier`
 FOREIGN KEY (`tier_id`)
 REFERENCES `mydb`.`tier` (`id`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION)
ENGINE = InnoDB

CREATE TABLE IF NOT EXISTS `mydb`.`tier` (
 `id` INT NOT NULL,
 `name` VARCHAR(45) NOT NULL,
 PRIMARY KEY (`id`))
ENGINE = InnoDB

现在假设一家公司是第3层,我如何设计数据库,当我为tier3获取小部件的值时,它将获取所有9个小部件?如果我做了一个公司与层的连接,然后与小部件表,我将只得到3个小部件,这是包括在第3层。如何获得其余的6个小部件(第1层和第2层)。

我正在使用java + hibernate来处理数据库。我是否需要在代码中手动获取,就像检查层的级别,然后创建此类小部件的列表并返回它一样?

我希望这个问题是明确的,而不是一个非常基本的问题(害怕投票)。

EN

回答 1

Stack Overflow用户

发布于 2014-09-13 18:01:22

如果我理解的很好,你有:

tear1 -> tear1_widgets

tear2 -> tear1_widgets + tear2_widgets

tear3 -> tear1_widgets + tear2_widgets + tear3_widgets

在您的情况下,我将遵循分层模型。我会将上面的层次结构保存在一个表中,以便知道每个实例(在你的例子中是“tear”),哪些实例继承了它的属性(在你的例子中是“widgets”)。因此,每当你有一个条目类型'tear3‘,你就知道它必须有9个小部件,以及你必须从哪里(tear1、tear2和tear3)获取它们。

在上面的示例中,您可以看到您知道可以从哪个表继承您的小部件,并且您只需编写查询来获取它们。

另外,通过特殊的设计,你可以拥有你想要的任何部件组合的实例(撕裂)。

*添加了镜像

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25821918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档