Я знаю, що це вже пізно до гри, і на питання вже відповіли дуже добре, але я хочу запропонувати свою думку щодо №3 щодо префіксації назв стовпців.
Усі стовпці мають бути названі префіксом, який є унікальним для таблиці, у якій вони визначені.
Наприклад, враховуючи таблиці "замовник" та "адреса", давайте переходимо з префіксами "cust" та "addr" відповідно. "Клієнт" матиме в ньому "cust_id", "cust_name" тощо. "address" містила б "addr_id", "addr_cust_id" (FK назад до замовника), "addr_street" тощо.
Коли мені вперше подарували цей стандарт, я був мертвим проти нього; Я ненавидів ідею. Я не витримав ідеї усього цього зайвого набору тексту та надмірності. Зараз у мене було достатньо досвіду з цим, щоб я ніколи не повертався.
Результатом цього є те, що всі стовпці схеми вашої бази даних є унікальними. У цьому є одна головна користь, яка обробляє всі аргументи проти цього (на мою думку, звичайно):
Ви можете шукати всю базу коду і надійно знаходити кожен рядок коду, який торкається певного стовпця.
Користь від №1 неймовірно величезна. Я можу знехтувати стовпчик і точно знати, які файли потрібно оновлювати, перш ніж стовпець можна буде безпечно видалити зі схеми. Я можу змінити значення стовпця і точно знати, який код потрібно відновити. Або я можу просто сказати, чи використовуються дані з стовпця в певній частині системи. Я не можу порахувати, скільки разів це перетворило потенційно величезний проект на простий, а також кількість годин, які ми заощадили в роботі з розробки.
Ще одна відносно незначна користь для нього полягає в тому, що вам потрібно використовувати псевдоніми таблиць лише під час самостійного приєднання:
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%';