Несколько баз данных или соглашения об именах таблиц? - PullRequest
0 голосов
/ 16 октября 2010

Как вы разделяете свои данные для приложения на основе базы данных?Многие программы имеют таблицы с именами типа Auth_Users, Auth_Whothing, Auth_Something, а затем Admin_Something, Admin_Wh независимо и т. Д. По сути, все таблицы существуют в одной базе данных, но они организованы в соответствии с соглашением об именах.Другой вариант - разделить некоторые из этих данных на несколько баз данных.Каковы плюсы и минусы выполнения одного или другого?

Ответы [ 2 ]

1 голос
/ 18 октября 2010

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

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

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

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

0 голосов
/ 16 октября 2010

Существует третий вариант, который вы не рассмотрели: пользователи-группы-роли.Сделайте эти три взаимосвязи в одной реляционной базе данных учетных данных или LDAP.

Назначьте учетные данные определенной роли;дать группе роль;Добавить пользователей в группы.

Я бы не разбивал их на отдельные базы данных.Слишком разбросано делает обслуживание более сложным, на мой взгляд.

...