Что будет лучшим подходом в случае языкового словаря с типами слов (существительные, глаголы ...)? - PullRequest
0 голосов
/ 01 сентября 2018

Я проектирую базу данных онлайн-словаря и использую реляционную модель. Сейчас я нахожусь в стадии планирования. Я создал большую часть этого, но я застрял с созданием части базы данных, которая хранит обозначение типа слова (существительные, глаголы и т. Д.). Вот пример базы данных:

language1_words
------------------------
word1_id  int(11)  AI  PK
word1     varchar(128)

junc_lang1_lang2
------------------------
word1_id  int(11) FK(language1_words)
word2_id  int(11) FK(language2_words)

language2_words
------------------------
word2_id  int(11)  AI  PK
word2     varchar(128)

Это то, что я создал сейчас. Теперь я хочу добавить таблицу типов слов и подключить ее к ранее упомянутой части базы данных. Для каждого слова должен быть соответствующий тип слова. Пример:

word 1 ---> noun, masculine, singular
word 2 ---> verb, transitive
word 3 ---> adjective, derived, masculine, singular
etc.

Мой вопрос: что может быть лучшим подходом для этого? Я хочу следовать правилам нормализации, поэтому я не хочу повторять записи в базе данных, я хотел бы создать некоторую «справочную» таблицу и получить оттуда тип слова. И самой важной частью была бы способность моего онлайн-словаря для привилегированных зарегистрированных пользователей вставлять новые слова через форму, которая заполнит все необходимые ячейки в этой модели RD, поэтому я должен подумать и об этом свойстве при создании моей базы данных.

1 Ответ

0 голосов
/ 01 сентября 2018

Для конкретного случая, который вы упоминаете, для классификации слов по типу слова вам потребуется:

Таблица WordTypes с id и description.

А из language1_words и language2_words есть поле word_type, указывающее (внешний ключ) на таблицу WordTypes.

В случае, если каждое слово может иметь более одного типа, у вас будет много-много отношений, которые вам нужно разорвать.

В этом случае, кроме таблицы WordType, вам понадобится дополнительная таблица WordByType с word_id и type_id, первая из которых является внешним ключом для language*_words, а вторая - внешним ключом. к таблице WordType. (В этом случае вам не нужно добавлять поле word_type в таблицы language*_words).

...