Как люди создают повторно используемые базы данных? - PullRequest
6 голосов
/ 21 апреля 2009

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

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

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

Спасибо

Ответы [ 11 ]

3 голосов
/ 21 апреля 2009

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

2 голосов
/ 21 апреля 2009

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

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

1 голос
/ 21 апреля 2009

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

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

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

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

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

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

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

1 голос
/ 21 апреля 2009

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

0 голосов
/ 21 апреля 2009

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

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

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

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

0 голосов
/ 21 апреля 2009

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

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

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

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

0 голосов
/ 21 апреля 2009

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

0 голосов
/ 21 апреля 2009

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

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

0 голосов
/ 21 апреля 2009

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

  • таблица клиентов
  • стол заказов
  • таблица продуктов и т. Д.

В вашей ситуации у вас может быть

  • таблица классов
  • стол для студентов
  • таблица оценок и т. Д.

Этот общий формат таблицы может использоваться во многих приложениях.

0 голосов
/ 21 апреля 2009

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

...