Wiem, że jest już za późno na grę i odpowiedź na to pytanie jest już bardzo dobra, ale chcę wyrazić swoją opinię na temat # 3 dotyczącego prefiksu nazw kolumn.
Wszystkie kolumny należy nazwać prefiksem unikalnym dla tabeli, w której są zdefiniowane.
Np. Biorąc pod uwagę tabele „klient” i „adres”, przejdźmy do prefiksów odpowiednio „cust” i „addr”. „klient” zawiera „cust_id”, „cust_name” itd. „adres” zawierałby „addr_id”, „addr_cust_id” (FK wraca do klienta), „addr_street” itp.
Kiedy po raz pierwszy przedstawiono mi ten standard, byłem przeciwny temu; Nienawidziłem tego pomysłu. Nie mogłem znieść myśli o tym dodatkowym pisaniu i redundancji. Teraz mam wystarczająco dużo doświadczenia, że nigdy nie wrócę.
W wyniku tego wszystkie kolumny w schemacie bazy danych są unikalne. Jest to jedna główna korzyść, która przewyższa wszystkie argumenty przeciwko niemu (moim zdaniem oczywiście):
Możesz przeszukać całą bazę kodu i niezawodnie znaleźć każdy wiersz kodu, który dotyka określonej kolumny.
Korzyści z # 1 są niewiarygodnie ogromne. Mogę wycofać kolumnę i dokładnie wiedzieć, jakie pliki należy zaktualizować, zanim kolumna będzie mogła zostać bezpiecznie usunięta ze schematu. Mogę zmienić znaczenie kolumny i dokładnie wiedzieć, jaki kod należy refaktoryzować. Mogę też po prostu stwierdzić, czy dane z kolumny są nawet używane w określonej części systemu. Nie mogę policzyć, ile razy zamienił potencjalnie ogromny projekt w prosty, ani ile godzin zaoszczędziliśmy na pracach programistycznych.
Inną, stosunkowo niewielką korzyścią jest to, że musisz używać aliasów tabeli tylko podczas samodzielnego łączenia:
SELECT cust_id, cust_name, addr_street, addr_city, addr_state
FROM customer
INNER JOIN address ON addr_cust_id = cust_id
WHERE cust_name LIKE 'J%';