Вопрос о Новичке на проектировании баз данных

это - последующий вопрос на моем предыдущем. Мы младшие студенты года делаем разработку веб-сайтов для университета как добровольно предлагающий работу. Мы используем технику PHP+MySQL. Теперь я главным образом ответственен за MySQL использования разработки базы данных, но я - разработчик MySQL. Я теперь прошу некоторые подсказки на записи моей первой таблицы, доставать его, затем я мог работать хорошо с другими таблицами. quesiton похож на это, первая вещь, которую наш веб-сайт собирается сделать, состоит в том, чтобы представить Обзор пользователю для сбора их предпочтения на том, когда они хотят использовать автобусное сообщение. и это - то, куда я собираюсь запустить свою разработку базы данных. Документ Требования пользователя указывает, что для обзора, должно быть

Клиентская сторона:

Survery будет доступен клиентам, с рядом предопределенных вопросов и ответов и должен быть легок заполнить

Бизнес-сторона:

Информация о Survery будет сохранена, произведена и визуализуемая для анализа.

Это не звучит как слишком много работы, и я не должен заботиться ни о какой вещи PHP, но я просто смущен на: я должен просто составить единственную таблицу под названием "Survery" или две таблицы "Survey_business" и "Survey_Customer", и как база данных может сохранить информацию? Я был бы благодарен, если Вы, парни могли бы дать мне некоторую справку, таким образом, я могу работать вперед, потому что первый шаг является всегда самым твердым и самым важным.Спасибо.

8
задан DOK 29 January 2010 в 17:12
поделиться

8 ответов

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

Что-то вроде:

-- Survey info such as title, publish dates, etc.
create table Surveys
(
    survey_id number,
    survey_title varchar2(200)
)

-- one record per question, associated with the parent survey
create table Questions  
(
    question_id number,
    survey_id number,
    question varchar2(200)
)

-- one record per multiple-choice option in a question
create table Choices
(
    choice_id number,
    question_id number,
    choice varchar2(200)
)

-- one record per question per answerer to keep track of who
-- answered each question
create table Answers
(
    answer_id number,
    answerer_id number,
    choice_id number
) 

Затем используйте код приложения к:

  1. Вставьте новые опросы и вопросы.
  2. Заселять ответы, так как люди принимают обследования.
  3. Отчет о результатах после прогресса опроса.

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

9
ответ дан 5 December 2019 в 10:41
поделиться

Только 1 Таблица, вы измените только то, как вы используете таблицу для каждого OCASSAOA

сторона клиентов вставьте данные в таблицу

Бизнес-сторона Прочитайте данные и результаты из та же стол

3
ответ дан 5 December 2019 в 10:41
поделиться

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

1
ответ дан 5 December 2019 в 10:41
поделиться

Я думаю, что 2 Таблицы нужны:

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

Затем вы можете вычислить результаты и хранить их в представлении обретения.

1
ответ дан 5 December 2019 в 10:41
поделиться

Будут ли данные, которые вы представляете в виде вопросов и ответов, динамичными? Является ли это долгосрочным проектом, в котором будет происходить обмен вопросами? Если да, то Вы, вероятно, захотите, чтобы вопросы и ответы были и в Вашей базе данных.

Способ, которым я это сделаю, будет заключаться в том, чтобы определить ваши сущности и понять, как спроектировать ваши таблицы таким образом, чтобы взаимоотношения были простыми. Мне кажется, что у вас есть три сущности:

  • Вопрос
  • Ответ
  • Завершенный опрос
0
ответ дан 5 December 2019 в 10:41
поделиться

Стефано:

Я был с Java с самого начала, поэтому, с моей точки зрения, известность быть медленным была создана не реагирующими и медленными интерфейсами GUI (AWT, а затем Swing) и в Applets, вероятно, из-за дополнительного медленного времени запуска виртуальных машин.

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

Java на внутреннем уровне и вычислительном уровне не так уж и медленно. Colt - один из лучших примеров:

Последний стабильный выпуск Colt преодолевает барьер 1,9 Гфлоп/с для JDK ibm-1.4.1, RedHat 9.0, 2x (при 2,8 ГГц).

Есть много вещей вне основной Java, которые должны быть рассмотрены, как Realtime Java или специальные механизмы для повышения скорости, как Javolution , а также Ahead-Of-Time компиляции (как gcj). Кроме того, существуют IC, которые могут выполнять Java Bytecode напрямую, как, например, тот, который находится в текущих iPhone и iPods ARM Jazelle .

Я думаю, что в целом сегодня это политическое решение (как и отсутствие поддержки Java на iPhone/iPod), и решение против Java как языка (потому что многие считают его слишком многословным).

Однако в настоящее время для виртуальной машины Java существует много других языков (например, Python, Ruby, JavaScript, Groovy, Scala и т.д.), которые могут быть альтернативой.

Лично я продолжаю наслаждаться им как гибкой и надежной платформой, с превосходной оснасткой и доступностью библиотеки, которая позволяет работать со всем: от самого маленького устройства (например, JavaCard) до самых больших серверов.

-121--630812-

Самый простой способ - создать новый ByteArrayOutputStream , скопировать байты в него, а затем вызвать toByteArray :

public static byte[] readFully(InputStream input) throws IOException
{
    byte[] buffer = new byte[8192];
    int bytesRead;
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    while ((bytesRead = input.read(buffer)) != -1)
    {
        output.write(buffer, 0, bytesRead);
    }
    return output.toByteArray();
}
-121--2233737-

Опросы. Клиент звучит как функция места хранения, в то время как Опрос .бИзн.

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

1
ответ дан 5 December 2019 в 10:41
поделиться

большинство советов/ответов до сих пор применимы, но сделайте определенные (неустановленные!) предположения о вашем домене

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

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

.
1
ответ дан 5 December 2019 в 10:41
поделиться

Просто образец того, что Стивен и Крис упомянули выше.

Будет несколько таблиц, если будет несколько опросов, и в каждом опросе будет свой набор вопросов, и если один и тот же пользователь сможет проходить несколько опросов.

  1. Таблица клиентов с CustID в качестве первичного ключа

  2. Вопросы Таблица с идентификатором вопроса в качестве первичного ключа. Если вопрос не может относиться к нескольким опросам (соотношение N:1), то в качестве одного из значений в таблице может также использоваться идентификатор опроса (таблица "Обследование", упомянутая в пункте 3).

  3. Но если соотношение вопроса и вопроса составляет N:M, то (SurveryID, QuestionID) станет составным ключом для SurveyTable, в противном случае он будет просто иметь SurveyID с высоким уровнем детализации обследования, как описание.

  4. Таблица опроса пользователя, которая будет содержать (USerID, SurveryID, QuestionID, AnswerGiven)

    .

    [Примечание: если один и тот же пользователь может проходить один и тот же опрос снова и снова, необходимо либо обновить старый опрос, либо сохранить повторные попытки в виде других строк с каким-либо серийным номером)

0
ответ дан 5 December 2019 в 10:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: