это - последующий вопрос на моем предыдущем. Мы младшие студенты года делаем разработку веб-сайтов для университета как добровольно предлагающий работу. Мы используем технику PHP+MySQL. Теперь я главным образом ответственен за MySQL использования разработки базы данных, но я - разработчик MySQL. Я теперь прошу некоторые подсказки на записи моей первой таблицы, доставать его, затем я мог работать хорошо с другими таблицами. quesiton похож на это, первая вещь, которую наш веб-сайт собирается сделать, состоит в том, чтобы представить Обзор пользователю для сбора их предпочтения на том, когда они хотят использовать автобусное сообщение. и это - то, куда я собираюсь запустить свою разработку базы данных. Документ Требования пользователя указывает, что для обзора, должно быть
Клиентская сторона:
Survery будет доступен клиентам, с рядом предопределенных вопросов и ответов и должен быть легок заполнить
Бизнес-сторона:
Информация о Survery будет сохранена, произведена и визуализуемая для анализа.
Это не звучит как слишком много работы, и я не должен заботиться ни о какой вещи PHP, но я просто смущен на: я должен просто составить единственную таблицу под названием "Survery" или две таблицы "Survey_business" и "Survey_Customer", и как база данных может сохранить информацию? Я был бы благодарен, если Вы, парни могли бы дать мне некоторую справку, таким образом, я могу работать вперед, потому что первый шаг является всегда самым твердым и самым важным.Спасибо.
Я бы использовал несколько таблиц. Один для самих опросов, а другой по вопросам. Может быть, еще один для параметров ответа, если вы хотите пойти с вопросами с несколькими вариантами выбора. Еще один стол для ответов с записью за вопрос за ответчик. Сложность повышается, поскольку вы рассматриваете несколько типов ответов (выбор, вполне пробел однострочный, многострочный, многолетний многострочный и т. Д.) И параметры отображения (кнопка переключения, раскрывающийся список, текстовые коробки, 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 Таблица, вы измените только то, как вы используете таблицу для каждого OCASSAOA
сторона клиентов вставьте данные в таблицу
Бизнес-сторона Прочитайте данные и результаты из та же стол
Используйте только одну таблицу. Если вы должны были использовать две таблицы, то в любое время вы вступаете в изменение, вы будете действовать, приходится делать все дважды. Это большая боль для обслуживания для вас, и кто-то еще, кто приходит, чтобы сделать это в будущем.
Я думаю, что 2 Таблицы нужны:
Затем вы можете вычислить результаты и хранить их в представлении обретения.
Будут ли данные, которые вы представляете в виде вопросов и ответов, динамичными? Является ли это долгосрочным проектом, в котором будет происходить обмен вопросами? Если да, то Вы, вероятно, захотите, чтобы вопросы и ответы были и в Вашей базе данных.
Способ, которым я это сделаю, будет заключаться в том, чтобы определить ваши сущности и понять, как спроектировать ваши таблицы таким образом, чтобы взаимоотношения были простыми. Мне кажется, что у вас есть три сущности:
Стефано:
Я был с 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- Опросы. Клиент звучит как функция места хранения, в то время как Опрос .бИзн.
Для места хранения необходимы только таблицы. Операции извлечения будут выполняться с использованием запросов и отчетов существующих таблиц места хранения, поэтому дополнительные таблицы для них не требуются.
большинство советов/ответов до сих пор применимы, но сделайте определенные (неустановленные!) предположения о вашем домене
, попробуйте сделать логическую модель сущностей и атрибутов, которые необходимы для захвата требований, изучите связи, рассмотрите, как данные будут использоваться с обеих сторон процесса, а затем спроектируйте таблицы. Поговорите с пользователями, поговорите с людьми, которые будут запускать отчеты, поговорите с теми, кто проектирует пользовательский интерфейс (экраны и отчеты), чтобы получить полную картину.
обратите пристальное внимание на требования к отчетам, так как они часто подразумевают дополнительные атрибуты и сущности, не сохранившиеся в схеме ввода данных
.Просто образец того, что Стивен и Крис упомянули выше.
Будет несколько таблиц, если будет несколько опросов, и в каждом опросе будет свой набор вопросов, и если один и тот же пользователь сможет проходить несколько опросов.
Таблица клиентов с CustID в качестве первичного ключа
Вопросы Таблица с идентификатором вопроса в качестве первичного ключа. Если вопрос не может относиться к нескольким опросам (соотношение N:1), то в качестве одного из значений в таблице может также использоваться идентификатор опроса (таблица "Обследование", упомянутая в пункте 3).
Но если соотношение вопроса и вопроса составляет N:M, то (SurveryID, QuestionID) станет составным ключом для SurveyTable, в противном случае он будет просто иметь SurveyID с высоким уровнем детализации обследования, как описание.
Таблица опроса пользователя, которая будет содержать (USerID, SurveryID, QuestionID, AnswerGiven)
.[Примечание: если один и тот же пользователь может проходить один и тот же опрос снова и снова, необходимо либо обновить старый опрос, либо сохранить повторные попытки в виде других строк с каким-либо серийным номером)