Names are long lived
Names are contracts
Developer context switching
테이블, 뷰, 컬럼 이름 대문자로 구성
// bad
CREATE TABLE USERINFO (
ID INT PRIMARY KEY AUTO_INCREMENT,
Username VARCHAR(255) NOT NULL,
);
// good
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
);
// bad
CREATE TABLE USERINFO (
usernm VARCHAR(255) NOT NULL,
pwd VARCHAR(255) NOT NULL
);
// good
CREATE TABLE user_info (
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
// bad
CREATE TABLE user_info (
username VARCHAR(255) NOT NULL,
birthdate VARCHAR(255) NOT NULL,
menuname VARCHAR(255) NOT NULL
);
// good
CREATE TABLE user_info (
user_name VARCHAR(255) NOT NULL,
birth_date VARCHAR(255) NOT NULL
);
// PK = id
CREATE TABLE person (
id bigint PRIMARY KEY,
full_name text NOT NULL,
birth_date date NOT NULL);
// FK = person_id
CREATE TABLE team (
id bigint PRIMARY KEY,
person_id bigint NOT NULL REFERENCES person(id),
CONSTRAINT team_pkey PRIMARY KEY (id, person_id));
CREATE TABLE person (
id bigserial PRIMARY KEY,
first_name text NOT NULL,
last_name text NOT NULL,
)
CREATE INDEX person_idx_first_name_last_name ON person (first_name, last_name);
https://github.com/RootSoft/Database-Naming-Convention
https://launchbylunch.com/posts/2014/Feb/16/sql-naming-conventions/