2010-06-10 181 views
1

嗨im新数据库设计和麻烦试图找出这一个。我有两张牌桌球队和赛程。球队拥有一排排的足球队,Fixture在每排球队中都有2支球队(主客场球队)。我想将团队ID链接到home_team和away_team,但它不允许我。请告诉我如何解决这个问题。帮助数据库设计

这里是我的表/关系的图像 http://i49.tinypic.com/288qwpg.jpg

+0

为什么没有带有away_team_id和home_team_id的表以及可选的pk? – 2010-06-10 00:36:03

+0

你在用什么数据库? – RobS 2010-06-10 00:51:03

+0

Microsoft Access 2007 – Jonathan 2010-06-10 00:54:42

回答

1

因为您需要从夹具表中引用两个不同的球队(主场和客场),所以您需要添加球队表两次。如果您只添加一次,那么主客场都必须与同一队伍相关,这当然是没有意义的。

一张桌子上的团队加入了主队ID。第二队表中的队伍加入到客队ID中。

在访问中,您也可以重命名表 - 给它一个别名。 (点击桌面上的F4按钮,这会产生属性 - 你可以键入一个别名。)对于与主队相关的表,可以称它为“homeTeam”,对于awayTeam类似。

然后,您可以从这两个表格中拖动名称列,以并排查看每个灯具中播放的团队的名称。

+0

谢谢,像这样? http://i49.tinypic.com/20z6xqh.jpg 当我尝试将hometeam链接到hometeam时,它给了我这个错误“找不到主表的引用字段的唯一索引”我可以通过更改数据类型然而,在一些联赛中,队友和队友会独一无二地互相比赛3次,我需要投入两场主场或客场比赛。 – Jonathan 2010-06-10 01:13:16

+0

你误会了 - 看起来你已经创建了两个新表。我的意思是再次将相同的表格 - 团队表格添加到图表中,以便您拥有两个Team表格实例和一个Fixtures表格实例。然后按照其他原始说明如何链接这些。 – mdma 2010-06-10 01:18:17

-1

夹具表可以有这样的结构:

TEAM_ID INT,
team_type CHAR(1) - 'A' 对了,“ H'为家

因此,你有一个团队的两个实例,通过一个标志来区分它是否离开或家庭情况。

这是一种选择,其他人可能有其他的设计思路,只是等待和观望其他人的想法是什么

5

这里是你能做什么:

队表

Team_ID 
Team_Name 

夹具表

Fixture_ID 
Home_Team_ID 
Away_Team_ID 

Home_Team_IDAway_Team_ID指向团队表的链接。


这里的SQL绑在一起(在OpenOffice.org基地做,但我希望它为你的作品也一样):

SELECT Fixture_ID, 
     Home_Team.Team_Name AS Home_Team_Name, 
     Away_Team.Team_Name AS Away_Team_Name 
    FROM Team Home_Team, 
     Team Away_Team, 
     Fixture 
    WHERE Home_Team.Team_ID=Fixture.Home_Team_ID 
    AND Away_Team.Team_ID=Fixture.Away_Team_ID 

正如你看到的,有两个引用小组表,但他们被别名分开(Home_TeamAway_Team)。我希望这有帮助。

+0

感谢您的回应。这是我已经做的。但我的问题是我不能将team_id链接到home_team_id和away_team_id。当我尝试链接到两个时,它给了我一个错误。 – Jonathan 2010-06-10 00:45:27

+0

由于您使用的是MS Access,因此您可以在关系视图中创建两个团队表,然后将Home_Team_ID链接到第一个,将Away_Team_ID链接到第二个。 – 2010-06-10 01:02:24

0

您正在使用MDMA的说明正确的轨道。试试这个:

  1. 建立一个新的查询。
  2. 添加tblTeam
  3. 再次添加tblTeam(这将自动重命名为tblTeam_1或类似的东西)
  4. 添加tblFixture
  5. 加入tblFixture.HomeTeam到tblteam.id
  6. 加入tblFixture.AwayTeam到tblteam_1.id

alt text http://i50.tinypic.com/nweipj.png

0

对于Access 2007年,最简单的解决方案是创建别名为你的桌子。

  1. “显示”表(队)的关系窗两次
  2. 右击每个表并修改其属性
  3. 在属性对话框中,更改别名(HOME_TEAM,AWAY_TEAM)为表你已经在上面显示了。
  4. 采取从每个别名(HOME_TEAM,AWAY_TEAM)的PK(TEAM_ID),它涉及到您的夹具表:

    (home_team.team_id - > fixtures.home_team_id; away_team.team_id - > fixtures.away_team_id)。