нормализовать или нет? - PullRequest
0 голосов
/ 06 июня 2011

У меня есть БД, в которой есть 4 таблицы.

A -> B -> C -> D

В моем нынешнем виде Первичный ключ A является внешним ключом в B. И у B будет свой собственный Первичный ключ, который является внешним ключом в C и т. Д. И т. Д.

Однако C не может быть связан с A без B.

Проблема в том, что основная функция моей программы заключается в извлечении соответствующих записей из A и D.

Должен ли я включить первичный ключ A в D тоже

Это создаст ненужное дублирование данных, потому что A-> B-> C-> D являются иерархическими. см. рис для того, как D будет выглядеть. Proposed Table D

1 Ответ

1 голос
/ 06 июня 2011

Если вы возьмете все D в отношении данного A, я бы его нормализовал.

Но если вы хотите конкретное подмножество таких D и его легко узнать, которое заранее, но позже отнимает много времени (например,... если вы хотите, чтобы все D из новейшего C приходились на самый новый B), я бы предпочел хранить этот ярлык где-нибудь.

Он не обязательно должен быть в самом D (особенно, если вы не хотите, чтобы все D были связаны сA).

Если вы хотите сделать это, чтобы ваши запросы было легче читать и писать, тогда рассмотрите представление.

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

...