Как люди создают допускающие повторное использование базы данных?

Из OP я вижу, что вам нужен контейнер значения ключа ассоциации, поэтому наиболее очевидным способом будет использование Map, проверьте, присутствует ли значение в качестве ключа, если нет - добавьте его с помощью 1 counter если есть - добавьте + 1:

void test() {
    Map<String, Integer> summaryReport = new HashMap<>();
    String curDesc = "whatever";

    Integer count = summaryReport.get(curDesc);
    if (count == null) {
        summaryReport.put(curDesc, 1);
    } else {
        summaryReport.put(curDesc, count + 1);
    }
}

Делая более хитрым способом, вы можете использовать изменяемый AtomicInteger в качестве счетчика:

void test() {
    Map<String, AtomicInteger> summaryReport = new HashMap<>();
    AtomicInteger counter = summaryReport.putIfAbsent("whatever", new AtomicInteger(0));
    if (counter != null) {
        counter.incrementAndGet();
    }
}
6
задан Josh 21 April 2009 в 17:56
поделиться

11 ответов

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

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

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

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

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

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

0
ответ дан 17 December 2019 в 00:14
поделиться

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

3
ответ дан 17 December 2019 в 00:14
поделиться

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

1
ответ дан 17 December 2019 в 00:14
поделиться

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

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

2
ответ дан 17 December 2019 в 00:14
поделиться

Шаг первый, поговорите с очень широким кругом потенциальных клиентов и выясните их потребности, что они в настоящее время используют и что они хотят, чтобы их текущий продукт (ы) мог сделать. Потратьте на это в 10 раз больше времени, чем считаете нужным прямо сейчас. Нарисуйте потенциальные графические интерфейсы на бумаге и попросите людей, с которыми вы проводите собеседование, посмотреть на чертежи и внести предложения. Если это вообще возможно, нанять несколько человек в отрасли в качестве бизнес-аналитиков, чтобы помочь с этим шагом. Спросите о юридических требованиях. В некоторых отраслях существует много проблем с юридическими проблемами, а в других нет. Все, что связано каким-либо образом с медицинским миром, и вам нужно будет, например, изучить и полностью понять требования HIPPA.

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

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

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

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

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

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

Плохо, когда у вас есть десять человек, но когда у вас есть пара сотен, он может очень быстро выйти из-под контроля. Отказ от настройки намного сложнее, когда вы предлагаете ее, чем добавить настройку позже из стандартного пакета. Часто необходимость в настройке больше в организации корпоративной отчетности. Если вы сможете создать интерфейс отчетности, где люди смогут выбирать, какую информацию они хотят, и сохранять собственные настраиваемые отчеты, вы можете справиться с большинством потребностей в настройке в своей отрасли без необходимости полномасштабной настройки.

Плохо, когда у вас есть десять человек, но когда у вас есть пара сотен, он может очень быстро выйти из-под контроля. Отказ от настройки намного сложнее, когда вы предлагаете ее, чем добавить настройку позже из стандартного пакета. Часто необходимость в настройке больше в организации корпоративной отчетности. Если вы сможете создать интерфейс отчетности, где люди смогут выбирать, какую информацию они хотят, и сохранять собственные настраиваемые отчеты, вы можете справиться с большинством потребностей в настройке в своей отрасли без необходимости полномасштабной настройки.

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

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

1
ответ дан 17 December 2019 в 00:14
поделиться

Лучший совет, который я могу дать, - построить наименьший общий знаменатель ....

Итак .. ..Кодировать его как проект, ориентированный на образовательные учреждения: -)

0
ответ дан 17 December 2019 в 00:14
поделиться

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

0
ответ дан 17 December 2019 в 00:14
поделиться

It depends on your needs. For instance, many many databases for product based business use a format that includes:

  • a customer table
  • an orders table
  • an products table, etc

In your situation you might have

  • a class table
  • a students table
  • a grades table, etc.

This general table format could be reused in many applications.

0
ответ дан 17 December 2019 в 00:14
поделиться

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

0
ответ дан 17 December 2019 в 00:14
поделиться

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

Существуют значительные компромиссы, связанные с проектированием для ситуации повторного использования; обычно они связаны со временем и сложностью; то есть легче создать что-то, что НЕ может быть использовано повторно; и обычно

0
ответ дан 17 December 2019 в 00:14
поделиться

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

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

Другой трюк, который я недавно выбрал и который сэкономил мне много времени, - это сохранение SQL, используемого для генерации базы данных, в виде сценария. Если я хочу создать новую базу данных, я делаю любые изменения в исходном коде, и затем загрузите страницу. Например, если я хочу сгенерировать новую таблицу клиентов, я загружаю http: //localhost/load.php? Generate = customer .

Надеюсь, это поможет!

0
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

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