Вопрос

Моя текущая база данных состоит из следующих таблиц.

Магазин пользователей Рейтинги данных вопросов -

user( uid(varchar), qid(varchar), rating(varchar), primary key(uid, qid) )

Хранить вопрос и его идентификатор -

questions( uid(varchar), question(text), primary key(qid) )

Хранить отношения, которые имеют вопросы среди друг друга -

related( qid(varchar), related_qid(varchar), relation(varchar), primary key(qid, related_qid, relation) )

Каждый вопрос связан как минимум на один другой вопрос; Например, вопрос 1 и вопрос2 могут быть связаны с тем, что средний рейтинг вопросов1, как ожидается, будет больше, чем в вопросе2. Эти отношения будут храниться в таблице «Связанные» как

Вставьте в связанные значения (qid, ratchen_qid, отношение) (1, 2, gt)
где «GT» означает «больше».

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

Это было полезно?

Решение

Я бы изменил типы колонн. я думаю qid а также related_qid будет лучшим, чем целые числа для быстрого присоединения, а также related может быть изменен на тип перечисления, если он доступен в вашей базе данных (например, MySQL имеет Порицать).

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

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

Кроме этих точек, кажется разумным дизайном.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top