Как я могу сохранить отношения m: m в базе данных? - PullRequest
0 голосов
/ 29 июня 2011

Как я могу хранить данные отношений m: m в базе данных?

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

Ответы [ 3 ]

2 голосов
/ 29 июня 2011

Соотношение «многие ко многим» лучше всего хранить в соединительной таблице.

http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php

В вашем случае это будет называться PersonLanguage

Это будет иметь внешние ключи для PersonId и LanguageId.

Таблицы Person и Language будут иметь отношение «один ко многим» с таблицей PersonLanguage.

Обратите внимание, что вы можете использовать составной первичный ключ в PersonId и LanguageId или создать отдельный столбец PersonLanguageId, содержащий автоматически увеличивающееся число.

1 голос
/ 29 июня 2011

3 таблицы ..

Person (PersonId)
Language (LanguageId)
Person_Languages (Id,PersonId,LanguageId)
0 голосов
/ 29 июня 2011

Обычно что-то подобное делается с тремя таблицами:

  • Люди (идентификатор, имя и т. Д.)

  • Языки (идентификатор,имя и т. д.)

  • SpokenLanguages ​​(peopleID, languageID)

... где SpokenLanguages ​​- это таблица ассоциации, которая использует внешние ключи для связикаждый человек с языками, на которых он / она говорит.

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