Помогите с дизайном базы данных - PullRequest
1 голос
/ 10 июня 2010

Привет, я новичок в проектировании баз данных и не могу понять это. У меня есть два стола Team и Fixtures. У команды есть ряды футбольных команд, и в Fixture по 2 из этих футбольных команд в каждом ряду (команда хозяев и гостей). Я хочу связать идентификатор команды с home_team и away_team, но это не позволяет мне. Пожалуйста, скажите мне, как я могу решить эту проблему.

Вот изображение моих таблиц / отношений http://i49.tinypic.com/288qwpg.jpg

Ответы [ 5 ]

5 голосов
/ 10 июня 2010

Вот что вы могли бы сделать:

Таблица команд

Team_ID
Team_Name

Таблица приспособлений

Fixture_ID
Home_Team_ID
Away_Team_ID

Home_Team_ID и Away_Team_ID ссылки на таблицу Team.


Вот 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_Team и Away_Team).Надеюсь, это поможет.

1 голос
/ 10 июня 2010

Поскольку вам нужно ссылаться на две разные команды (дома и на выезде) из таблицы фикстур, вам нужно добавить таблицу команд дважды . Если вы добавите его только один раз, то и дома, и в гостях должны относиться к одной команде, что, конечно, не имеет смысла.

Команда из одного стола присоединяется к идентификатору команды хозяев. И команда из второго командного стола присоединяется к идентификатору команды гостей.

При доступе вы также можете переименовать таблицу - дать ей псевдоним. (Нажмите на стол, нажав F4. Это вызовет свойства - вы можете ввести псевдоним.) Для таблицы, связанной с домашней командой, назовите ее (скажем) «homeTeam» и аналогично для awayTeam.

Затем вы можете перетащить столбец имени из обеих этих таблиц, чтобы увидеть рядом названия команд, играющих в каждом приборе.

0 голосов
/ 10 июня 2010

Для Access 2007 самое простое решение - создать псевдонимы для ваших таблиц.

  1. 'Показать' таблицу (команды) дважды в окне отношений
  2. Щелкните правой кнопкой мыши каждую таблицу и измените ее свойства
  3. В диалоговом окне свойств измените псевдоним (home_team, away_team) для таблиц, которые вы показали выше.
  4. Возьмите PK (team_id) из каждого псевдонима (home_team, away_team) и свяжите его с таблицей ваших матчей:

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

0 голосов
/ 10 июня 2010

Вы на правильном пути с инструкциями MDMA. Попробуйте это:

  1. Создать новый запрос.
  2. Добавить команду
  3. Снова добавить tblTeam (он автоматически переименуется в tblTeam_1 или что-то подобное)
  4. Добавить tblFixture
  5. Присоединитесь к tblFixture.HomeTeam к tblteam.id
  6. Присоединиться к tblFixture.AwayTeam к tblteam_1.id

альтернативный текст http://i50.tinypic.com/nweipj.png

0 голосов
/ 10 июня 2010

Таблица приборов может иметь такую ​​структуру:

team_id INT,
team_type char (1) - «A» для гостей, «H» для дома

таким образом, у вас есть два экземпляра одной команды, отличающиеся флажком, который сообщает, что это не так или домашний случай.

это один из вариантов, у других людей могут быть другие идеи дизайна, просто подождите и посмотрите, что думают другие люди

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...