首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何实现这种关系?

我们如何实现这种关系?
EN

Stack Overflow用户
提问于 2014-06-17 22:25:35
回答 2查看 90关注 0票数 0

我必须建立我的E/R模型。我有3个实体。英雄,Family_Hero,SuperPower。英雄是英雄的名字。(id,描述)(例如“超人”,“蝙蝠侠”) Family_Hero是英雄的家庭(例如。“超人”和“蝙蝠侠”在“飞天英雄”家族中)英雄与Family_Hero之间是多对一的关系。(一个英雄只属于一个Family_Hero。一个Family_Hero有多个英雄)。超级大国就是这种力量的名字。(例如,“飞行”、"SuperStrenght“、”超级冲压“)

我想要一个超能力与英雄和family_hero之间的关系。我希望一个family_hero带来基本的超能力,而与英雄的关系带来特定的超能力。

例如。“蝙蝠侠”和“超人”是家族的“飞天英雄”。每一个“飞天英雄”都有基本的超能力,比如“飞”和“超强”。“蝙蝠侠”也有“超级冲力”的力量。每次我创造一个“飞天英雄”英雄的时候,它就会自动的得到“飞翔”和“超强”。

如何在sql中创建模型。

EN

回答 2

Stack Overflow用户

发布于 2014-06-17 22:56:09

代码语言:javascript
复制
CREATE TABLE [dbo].[Family_Hero](
[Id] [int] NOT NULL PRIMARY KEY,
[Family] [varchar](50) NULL)
GO

CREATE TABLE [dbo].[Superpower](
    [Id] [int] NOT NULL PRIMARY KEY,
[Skill] [varchar](50) NULL)
GO

CREATE TABLE [dbo].[SuperpowersInFamilys](
[FamilyId] [int] NOT NULL PRIMARY KEY,
[SuperpowerId] [int] NOT NULL PRIMARY KEY)

GO
CREATE TABLE [dbo].[Hero](
[Id] [int] NOT NULL PRIMARY KEY,
[Hero] [varchar](50) NULL,
[FamilyId] [int] NULL)
GO

ALTER TABLE [dbo].[Hero]  WITH CHECK ADD  CONSTRAINT [FK_Hero_Family_Hero] FOREIGN     KEY([FamilyId])
REFERENCES [dbo].[Family_Hero] ([Id])
GO
ALTER TABLE [dbo].[Hero] CHECK CONSTRAINT [FK_Hero_Family_Hero]
GO
ALTER TABLE [dbo].[SuperpowersInFamilys]  WITH CHECK ADD  CONSTRAINT     [FK_SuperpowersInFamilys_Family_Hero_FamilyId] FOREIGN KEY([FamilyId])
REFERENCES [dbo].[Family_Hero] ([Id])
GO
ALTER TABLE [dbo].[SuperpowersInFamilys] CHECK CONSTRAINT     [FK_SuperpowersInFamilys_Family_Hero_FamilyId]
GO
ALTER TABLE [dbo].[SuperpowersInFamilys]  WITH CHECK ADD  CONSTRAINT     [FK_SuperpowersInFamilys_Superpower_Id] FOREIGN KEY([SuperpowerId])
REFERENCES [dbo].[Superpower] ([Id])
GO
ALTER TABLE [dbo].[SuperpowersInFamilys] CHECK CONSTRAINT     [FK_SuperpowersInFamilys_Superpower_Id]
GO

作为参考,该图应如下所示:

票数 0
EN

Stack Overflow用户

发布于 2014-06-17 22:56:26

下面是或多或少的模型。你必须为英雄和家庭选择不同的超能力,或者使用触发器将家庭异能复制到英雄异能中。或者严格使用执行该任务的insert和delete函数,而不是直接使用insert和delete语句。

family_hero

代码语言:javascript
复制
  id_family_hero   PK
  name

hero

代码语言:javascript
复制
  id_hero          PK 
  name
  id_family_hero   FK

超强

代码语言:javascript
复制
  id_superpower    PK
  name

family_hero_superpower

代码语言:javascript
复制
  id_family_hero   FK
  id_superpower    FK

hero_superpower

代码语言:javascript
复制
  id_hero          FK
  id_superpower    FK

查询

代码语言:javascript
复制
select
  h.name as hero_name,
  fh.name as family_name,
  group_concat(distinct s.name) as superpowers
from hero h
join family_hero fh using (id_family_hero)
join hero_superpower hs using (id_hero)
join family_hero_superpower fhs using (id_family_hero)
join superpower s on s.id_superpower in (hs.id_superpower, fhs.id_superpower)
group by hero_name, family_name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24266374

复制
相关文章

相似问题

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