我必须建立我的E/R模型。我有3个实体。英雄,Family_Hero,SuperPower。英雄是英雄的名字。(id,描述)(例如“超人”,“蝙蝠侠”) Family_Hero是英雄的家庭(例如。“超人”和“蝙蝠侠”在“飞天英雄”家族中)英雄与Family_Hero之间是多对一的关系。(一个英雄只属于一个Family_Hero。一个Family_Hero有多个英雄)。超级大国就是这种力量的名字。(例如,“飞行”、"SuperStrenght“、”超级冲压“)
我想要一个超能力与英雄和family_hero之间的关系。我希望一个family_hero带来基本的超能力,而与英雄的关系带来特定的超能力。
例如。“蝙蝠侠”和“超人”是家族的“飞天英雄”。每一个“飞天英雄”都有基本的超能力,比如“飞”和“超强”。“蝙蝠侠”也有“超级冲力”的力量。每次我创造一个“飞天英雄”英雄的时候,它就会自动的得到“飞翔”和“超强”。
如何在sql中创建模型。
发布于 2014-06-17 22:56:09
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作为参考,该图应如下所示:

发布于 2014-06-17 22:56:26
下面是或多或少的模型。你必须为英雄和家庭选择不同的超能力,或者使用触发器将家庭异能复制到英雄异能中。或者严格使用执行该任务的insert和delete函数,而不是直接使用insert和delete语句。
family_hero
id_family_hero PK
namehero
id_hero PK
name
id_family_hero FK超强
id_superpower PK
namefamily_hero_superpower
id_family_hero FK
id_superpower FKhero_superpower
id_hero FK
id_superpower FK查询
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;https://stackoverflow.com/questions/24266374
复制相似问题