2010-06-10 6 views
1

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

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

+0

Почему у вас нет стола с параметром away_team_id и home_team_id, и, возможно, его собственный pk? –

+0

Какая БД вы используете? – RobS

+0

Microsoft Access 2007 – Jonathan

ответ

1

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

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

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

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

+0

Спасибо, вот так? http://i49.tinypic.com/20z6xqh.jpg Это дает мне эту ошибку, когда я пытаюсь связать hometeam с hometeam «Не найдено уникального индекса для ссылочного поля первичной таблицы». Я могу исправить это, изменив тип данных от hometeam и awayteam до уникального, однако в некоторых лигах команды играют друг с другом 3 раза в год, и им нужно будет поставить две домашние игры или выездные игры. – Jonathan

+0

Вы неправильно поняли - похоже, вы создали две новые таблицы. Я хотел добавить еще одну таблицу - таблицу Team - на диаграмму еще раз, так что у вас есть два экземпляра таблицы Team и один экземпляр таблицы Fixtures. Затем следуйте остальным оригинальным инструкциям, как их связать. – mdma

-1

Стол Светильник может иметь такую ​​структуру:

team_id INT,
team_type полукокса (1) - 'A' для Away ' H 'для дома

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

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

5

Вот что вы можете сделать:

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

Team_ID 
Team_Name 

Таблица приборов

Fixture_ID 
Home_Team_ID 
Away_Team_ID 

Home_Team_ID и Away_Team_ID ссылки на таблицу команд.


Вот SQL, чтобы связать их вместе (сделано в OpenOffice.org Base, но я надеюсь, что он работает для вас, а):

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

+0

Спасибо за ответ. Это то, что я уже сделал. Но моя проблема в том, что я не могу связать team_id с home_team_id AND away_team_id. Это возвращает мне ошибку, когда я пытаюсь установить связь с ними. – Jonathan

+0

Поскольку вы используете MS Access, вы можете создать две таблицы команд в представлении отношений, а затем связать Home_Team_ID с первым и Away_Team_ID со вторым. –

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. Возьмите PK (team_id) от каждого псевдонима (HOME_TEAM, AWAY_TEAM) и связать его с вашим столом светильники:

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

Смежные вопросы