Member 12677198 Ответов: 2

Как создать таблицу для строки и связь между ними?


у меня есть таблица,в которой хранится имя магазина, вопрос пользователей, и я хочу сохранить несколько ответов от нескольких пользователей на вопрос.


имя пользователя
``````````
имя вопрос
-------------------
Алиса зачем использовать java?
в чем разница между c и c++?

я хочу вот так


название вопроса ответ
-----------------------------------------------------
Алиса зачем использовать java? ответ1, ответ2,ответ3

Что я уже пробовал:

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

2 Ответов

Рейтинг:
19

OriginalGriff

Просто: вам нужно несколько таблиц.
В первой таблице хранятся пользователи:

ID          int, identity
UserName    NVARCHAR
Второй хранит вопросы:
ID          int, identity
Question    NVARCHAR
AIDCorrect  int, foreign key to Answers.ID
AIDError1   int, foreign key to Answers.ID
AIDError1   int, foreign key to Answers.ID

Тогда отвечать:
ID          int, identity
Answer      NAVRCHAR

Затем связывающие таблицы:
ID          int, identity
QID         int, foreign key to Questions.ID
UID         int, foreign key to Users.ID
GivenAnswer int, foreign key to Answers.ID, Nullable

Затем вы можете использовать SQL JOIN для получения нужной вам информации.


Karthik_Mahalingam

5

Member 12677198

спасибо,
но почему мы создаем столбец AIDCorrect,AIDError1 и aiderror1 в таблице вопросов?

OriginalGriff

Потому что вы хотите иметь возможность связать правильный ответ и пару неправильных ответов с вопросом. Вы не можете просто взять три ответа наугад, потому что а)" правильный "ответ вряд ли будет там, и Б)" неправильные ответы, вероятно, будут настолько очевидны, что никто не будет их использовать:
Вопрос: Что такое 2 + 2?
А1: потому что он объектно-ориентированный.
А2: 3.1415927
А3: выберите имя пользователя из ТОП-10 тем пользователям по DateOfBirth алфавиту

Понимаете, что я имею в виду? :смеяться:

Member 12677198

спасибо,

OriginalGriff

Пожалуйста!

Рейтинг:
0

Wendelius

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

Таким образом, дизайн должен быть чем-то вроде

user
----
- userid
- name

question
--------
- questionid
- questiontext

answer
------
- userid
- questionid
- answer


Для получения дополнительной информации взгляните на Ассоциативная сущность-Википедия, свободная энциклопедия[^]