Istniejące tabele mogą być łączone (denormalizacja), ponieważ niektóre atrybuty pochodzące z dwóch lub większej liczby tabel są często wymagane wspólnie.
W przypadku danego zbioru tabel mogą istnieć alternatywne rozwiązania projektowe, dające w elekcie schemat w postaci 3NF lub BCNF.
Partycjonowanie pionowe tabeli - jeżeli tabela zawiera bardzo dużą liczbę wierszy można ją rozbić na większą liczbę tabel z podzbiorami atrybutów i repllkacjami klucza tabeli. Zapytania do każdej z tabel są niezależne.
Atrybuty jednej tabeli mogą być powtórzone w innej Partycjonowanie poziome - podział tabeli w poziomie na kilka oddzielnych tabel np. tabela sprzedaży produktów jest podzielona na na kilka tabel w oparciu na różne linie produkcyjne
Początkowy wybór indeksów można zmienić z następujących powodów:
- Określone zapytania mogą działać zbyt długo ze względu na brak
- Niektóre indeksy mogą w ogóle nie być używane
- Niektóre indeksy mogą nakładać spory narzut związany z tym. że są zdefiniowane na atrybutach często podlegających zmianom
Strojenie zapytań
- Zapytanie generuje zbyt wiele operacji dostępu do dysku
- Plan zapytania ujawnia, ze odpowiednie indeksy nie są używane
System jednouźytkownikowy - jeżeli w danym momencie z systemu może korzystać tylko jeden użytkownik
System wielouźytkownikowy - w danym momencie z systemu może korzystać wielu użytkowników współbieżnie.