Вопрос

На этот вопрос уже есть ответ здесь:

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


@Gaius,

Это вопрос, который должен взвесить разработчик базы данных: какова вероятная стабильность структуры базы данных?При достаточно длительном горизонте ничто не является стабильным.Или, наоборот, учитывая достаточно длительный горизонт, все может измениться.Суррогатный ключ (теоретически) никогда не должен менять своего значения, потому что он никогда не имел значения с самого начала.

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

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

Это было полезно?

Решение

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

Более общие замечания:

Предложения по разработке схем / моделей данных для различных предприятий:Дэвид К.Сено:Шаблоны моделей данных:Условности мышления Довольно старые, но есть причина, по которой они все еще печатаются
http://www.dorsethouse.com/books/dmp.html

Может быть, не очень похоже на шаблон, но все равно очень хорошо:Стефан Фарулт, Питер Робсон:Искусство работы с SQL http://oreilly.com/catalog/9780596008949/

Еще один, который я могу порекомендовать:Вадим Тропашко:Шаблоны проектирования SQL - Экспертное руководство по программированию на SQL http://www.rampant-books.com/book_2006_1_sql_coding_styles.htm

Систематический учебник по моделированию данных:Грэм Симсион и Грэм Уитт, "Основы моделирования данных" http://www.elsevierdirect.com/product.jsp?isbn=9780126445510

Может быть, вы на самом деле ищете "руководство по стилю"?.Я в этом случае:Джо Селко:Стиль программирования SQL http://www.elsevierdirect.com/product.jsp?isbn=9780120887972

Другие советы

Книги Э.Ф.Кодд и Си Джей .Дата - вот наиболее очевидные ответы.Я не читал именно эту книгу, но я знаком с авторами, и, скорее всего, она неплохая.

Прикладная математика для специалистов по базам данных авторы: Лексс де Хаан и Тун Коппеларс.

На самом деле, я думаю, что эмпирическое правило, как правило, заключается в использовании естественного ключа, а не суррогата, когда это возможно...

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

В любом случае, вернемся к первоначальному вопросу...ссылка на hometoast должна помочь вам начать.

-- Кевин Фэйрчайлд

Чтобы точно ответить: ДА.Есть тонны информации, написанной о "хорошем" дизайне базы данных.Хотя приведенное в вашем примере эмпирическое правило, безусловно, сомнительно.

SQL-Антишаблоны книга Билла Карвина очень легко читается (не сухо) и объясняет в довольно ясных выражениях ряд различных потенциальных подводных камней, как вы можете их использовать и как / почему делать все правильно.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top