Как мне изменить структуру базы данных моей формы html, чтобы сделать ее более масштабируемой? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть форма HTML, которая отправляет результаты в базу данных в настоящее время. Вопросы жестко запрограммированы на странице html, и я пытаюсь сделать форму более масштабируемой, динамичной и гибкой.

Мне предложили иметь разные таблицы для вопросов, вариантов выбора и представленных ответов. Я набросал макет в Excel, и теперь я написал сценарии для создания таблиц, но я все еще сталкиваюсь с проблемой со столбцами question_choiceX. Что делать, если кому-то нужно задать вопрос, у которого есть 36 возможных ответов? Или 100? Это, вероятно, редкий сценарий ios, но я признаю, что не могу игнорировать их при создании базы данных или могу столкнуться с большими проблемами позже.

Поскольку SQL не имеет массивов, у меня есть долго размышлял, и я понял одно возможное решение, но я не уверен, будет ли это хорошей практикой, и оно также не идеально: * столбец, который является FOREIGN KEY, который относится к другой таблице, предназначенной для всех возможных вариантов ответа на этот вопрос. Я полагаю, что это не очень оптимально, потому что тогда у меня может быть огромное количество столов. И это тоже не поможет, если мне нужно добавить больше вариантов ответа на вопрос потом.

1 Ответ

4 голосов
/ 10 марта 2020

Это отношения многие ко многим .

Есть таблица вопросов. (Одна строка на вопрос).

Есть таблица ответов. (Один ряд за ответ). (Вам нужна только одна таблица ответов, а не одна на вопрос).

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

Есть таблица пользователей или таблица попыток ответить на вопросы.

Создайте таблицу мостов между ними и ответами.

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

...